diff --git a/mapping/features/org.eclipse.intent.mapping.feature/.project b/mapping/features/org.eclipse.intent.mapping.feature/.project
new file mode 100644
index 0000000..d1afa42
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/features/org.eclipse.intent.mapping.feature/build.properties b/mapping/features/org.eclipse.intent.mapping.feature/build.properties
new file mode 100644
index 0000000..e427639
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+               license.html,\
+               license.txt
diff --git a/mapping/features/org.eclipse.intent.mapping.feature/feature.xml b/mapping/features/org.eclipse.intent.mapping.feature/feature.xml
new file mode 100644
index 0000000..98f2b1e
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/feature.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.intent.mapping"
+      label="Mapping feature"
+      version="0.10.0.qualifier">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="license.html">
+      Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+&quot;Contribution&quot; means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+&quot;Contributor&quot; means any person or entity that distributes the Program.
+
+&quot;Licensed Patents &quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.
+
+&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+   </license>
+
+   <plugin
+         id="org.eclipse.intent.mapping"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.ide"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.ide.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.emf"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.emf.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.emf.ide"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.intent.mapping.emf.ide.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/mapping/features/org.eclipse.intent.mapping.feature/license.html b/mapping/features/org.eclipse.intent.mapping.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/mapping/features/org.eclipse.intent.mapping.feature/license.txt b/mapping/features/org.eclipse.intent.mapping.feature/license.txt
new file mode 100644
index 0000000..24937b6
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/license.txt
@@ -0,0 +1,87 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
diff --git a/mapping/features/org.eclipse.intent.mapping.feature/pom.xml b/mapping/features/org.eclipse.intent.mapping.feature/pom.xml
new file mode 100644
index 0000000..1360b60
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.feature/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent.features</groupId>
+  <artifactId>org.eclipse.intent.mapping</artifactId>
+  <packaging>eclipse-feature</packaging>
+
+  <name>Mapping Feature</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho.extras</groupId>
+        <artifactId>tycho-source-feature-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <id>source-feature</id>
+            <goals>
+              <goal>source-feature</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/.project b/mapping/features/org.eclipse.intent.mapping.sirius.feature/.project
new file mode 100644
index 0000000..b854a2b
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.sirius.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/build.properties b/mapping/features/org.eclipse.intent.mapping.sirius.feature/build.properties
new file mode 100644
index 0000000..e427639
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+               license.html,\
+               license.txt
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/feature.xml b/mapping/features/org.eclipse.intent.mapping.sirius.feature/feature.xml
new file mode 100644
index 0000000..99505f4
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/feature.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.intent.mapping.sirius"
+      label="Mapping Sirius feature"
+      version="0.10.0.qualifier">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="license.html">
+      Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+&quot;Contribution&quot; means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+&quot;Contributor&quot; means any person or entity that distributes the Program.
+
+&quot;Licensed Patents &quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.
+
+&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+   </license>
+
+   <plugin
+         id="org.eclipse.intent.mapping.sirius.ide.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.html b/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.txt b/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.txt
new file mode 100644
index 0000000..24937b6
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/license.txt
@@ -0,0 +1,87 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
diff --git a/mapping/features/org.eclipse.intent.mapping.sirius.feature/pom.xml b/mapping/features/org.eclipse.intent.mapping.sirius.feature/pom.xml
new file mode 100644
index 0000000..38ca018
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.mapping.sirius.feature/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent.features</groupId>
+  <artifactId>org.eclipse.intent.mapping.sirius</artifactId>
+  <packaging>eclipse-feature</packaging>
+
+  <name>Mapping Sirius Feature</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho.extras</groupId>
+        <artifactId>tycho-source-feature-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <id>source-feature</id>
+            <goals>
+              <goal>source-feature</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/features/org.eclipse.intent.product.feature/.project b/mapping/features/org.eclipse.intent.product.feature/.project
new file mode 100644
index 0000000..6dca771
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.product.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.resources.prefs b/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.runtime.prefs b/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/mapping/features/org.eclipse.intent.product.feature/build.properties b/mapping/features/org.eclipse.intent.product.feature/build.properties
new file mode 100644
index 0000000..c4f078c
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/build.properties
@@ -0,0 +1,10 @@
+bin.includes = feature.xml,\
+               license.html,\
+               license.txt
+root.win32.win32.x86_64 = win32-64
+root.linux.gtk.x86 = linux-64
+root.linux.gtk.x86_64 = linux-64
+root.macosx.cocoa.x86_64 = macosx
+root.linux.gtk.x86.permissions.755 = jre/bin/java
+root.linux.gtk.x86_64.permissions.755 = jre/bin/java
+root.macosx.cocoa.x86_64.permissions.755 = jre/bin/java
diff --git a/mapping/features/org.eclipse.intent.product.feature/feature.xml b/mapping/features/org.eclipse.intent.product.feature/feature.xml
new file mode 100644
index 0000000..955123b
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/feature.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.intent.product.feature"
+      label="Intent with Product Specific Branding"
+      version="0.10.0.qualifier"
+      provider-name="Obeo"
+      plugin="org.eclipse.intent.branding">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="license.html">
+      Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+&quot;Contribution&quot; means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+&quot;Contributor&quot; means any person or entity that distributes the Program.
+
+&quot;Licensed Patents &quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.
+
+&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.intent.mapping" version="0.0.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.intent.mapping.sirius" version="0.0.0" match="greaterOrEqual"/>
+   </requires>
+
+</feature>
diff --git a/mapping/features/org.eclipse.intent.product.feature/license.html b/mapping/features/org.eclipse.intent.product.feature/license.html
new file mode 100644
index 0000000..834ab27
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/license.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/legal/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Revision>2</o:Revision>
+  <o:TotalTime>3</o:TotalTime>
+  <o:Created>2004-03-05T23:03:00Z</o:Created>
+  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+  <o:Pages>4</o:Pages>
+  <o:Words>1626</o:Words>
+  <o:Characters>9270</o:Characters>
+   <o:Lines>77</o:Lines>
+  <o:Paragraphs>18</o:Paragraphs>
+  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+  <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+	{mso-style-name:"Balloon Text";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:8.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style></head><body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><o:p></o:p></p>
+
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/mapping/features/org.eclipse.intent.product.feature/license.txt b/mapping/features/org.eclipse.intent.product.feature/license.txt
new file mode 100644
index 0000000..24937b6
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/license.txt
@@ -0,0 +1,87 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
diff --git a/mapping/features/org.eclipse.intent.product.feature/linux-64/jre/.gitkeep b/mapping/features/org.eclipse.intent.product.feature/linux-64/jre/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/linux-64/jre/.gitkeep
diff --git a/mapping/features/org.eclipse.intent.product.feature/macosx/jre/.gitkeep b/mapping/features/org.eclipse.intent.product.feature/macosx/jre/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/macosx/jre/.gitkeep
diff --git a/mapping/features/org.eclipse.intent.product.feature/pom.xml b/mapping/features/org.eclipse.intent.product.feature/pom.xml
new file mode 100644
index 0000000..c8bb17d
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2016 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+    Obeo - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.product.feature</artifactId>
+  <packaging>eclipse-feature</packaging>
+
+  <name>Intent with Product Specific Feature</name>
+
+</project>
diff --git a/mapping/features/org.eclipse.intent.product.feature/win32-64/jre/.gitkeep b/mapping/features/org.eclipse.intent.product.feature/win32-64/jre/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mapping/features/org.eclipse.intent.product.feature/win32-64/jre/.gitkeep
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.checkstyle
new file mode 100644
index 0000000..46c61e2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src-gen"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.classpath b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.classpath
new file mode 100644
index 0000000..1bdc2a0
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.project b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.project
new file mode 100644
index 0000000..a80218e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2c14df6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,311 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f7e57f8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3f7321c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf.edit;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.intent.mapping.provider.MappingEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.intent.mapping.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.intent.mapping.emf;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.intent.mapping,
+ org.eclipse.jface,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.emf.cdo.edit
+Bundle-ActivationPolicy: lazy
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/build.properties b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/build.properties
new file mode 100644
index 0000000..f53e329
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/build.properties
@@ -0,0 +1,19 @@
+#  Copyright (c) 2015 Obeo.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  Contributors:
+#     Obeo - initial API and implementation and/or initial documentation
+#     ...
+# 
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateBase_reports_Report.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateBase_reports_Report.gif
new file mode 100644
index 0000000..3b01cc9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateBase_reports_Report.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateLocation_targetLinks_Link.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateLocation_targetLinks_Link.gif
new file mode 100644
index 0000000..dea9e2d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/ctool16/CreateLocation_targetLinks_Link.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Base.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Base.gif
new file mode 100644
index 0000000..c673a52
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Base.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOBinaryResourceLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOBinaryResourceLocation.gif
new file mode 100644
index 0000000..10d2229
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOBinaryResourceLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOFolderLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOFolderLocation.gif
new file mode 100644
index 0000000..83afb9b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOFolderLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDORepositoryLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDORepositoryLocation.gif
new file mode 100644
index 0000000..9041598
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDORepositoryLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOResourceLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOResourceLocation.gif
new file mode 100644
index 0000000..134551b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOResourceLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOTextResourceLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOTextResourceLocation.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/CDOTextResourceLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Couple.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Couple.gif
new file mode 100644
index 0000000..05dc74a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Couple.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/EObjectLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/EObjectLocation.gif
new file mode 100644
index 0000000..a26660e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/EObjectLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Link.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Link.gif
new file mode 100644
index 0000000..89ad5da
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/Link.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/TextLocation.gif b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/TextLocation.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/icons/full/obj16/TextLocation.gif
Binary files differ
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.properties b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.properties
new file mode 100644
index 0000000..d2a2058
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.properties
@@ -0,0 +1,90 @@
+#  Copyright (c) 2015 Obeo.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  Contributors:
+#     Obeo - initial API and implementation and/or initial documentation
+#     ...
+# 
+
+pluginName = Mapping Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Location_type = Location
+_UI_Scope_type = Scope
+_UI_Link_type = Link
+_UI_Base_type = Base
+_UI_IEMFBaseElement_type = IEMF Base Element
+_UI_TextLocation_type = Text Location
+_UI_EObjectLocation_type = EObject Location
+_UI_LocationContainer_type = Location Container
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Location_scope_feature = Scope
+_UI_Location_sourceLinks_feature = Source Links
+_UI_Location_targetLinks_feature = Target Links
+_UI_Location_container_feature = Container
+_UI_Location_referencingScopes_feature = Referencing Scopes
+_UI_Location_type_feature = Type
+_UI_Scope_locations_feature = Locations
+_UI_Scope_holder_feature = Holder
+_UI_Link_status_feature = Status
+_UI_Link_description_feature = Description
+_UI_Link_source_feature = Source
+_UI_Link_target_feature = Target
+_UI_Link_type_feature = Type
+_UI_Base_name_feature = Name
+_UI_TextLocation_startOffset_feature = Start Offset
+_UI_TextLocation_endOffset_feature = End Offset
+_UI_LocationContainer_contents_feature = Contents
+_UI_Unknown_feature = Unspecified
+
+_UI_Status_VALID_literal = VALID
+_UI_Status_CHANGED_SOURCE_literal = CHANGED_SOURCE
+_UI_Status_CHANGED_TARGET_literal = CHANGED_TARGET
+_UI_Status_DELETED_SOURCE_literal = DELETED_SOURCE
+_UI_Status_DELETED_TARGET_literal = DELETED_TARGET
+_UI_Report_type = Report
+_UI_Link_reports_feature = Reports
+_UI_Report_description_feature = Description
+_UI_Report_link_feature = Link
+_UI_Base_reports_feature = Reports
+_UI_EObjectLocation_featureName_feature = Feature Name
+_UI_Location_markedAsDeleted_feature = Marked As Deleted
+_UI_EObjectLocation_URIFragment_feature = URI Fragment
+_UI_EObjectLocation_index_feature = Index
+_UI_Couple_type = Couple
+_UI_EObjectContainer_type = EObject Container
+_UI_CDOResourceNodeLocation_type = CDO Resource Node Location
+_UI_CDOFileLocation_type = CDO File Location
+_UI_CDOFolderLocation_type = CDO Folder Location
+_UI_CDORepositoryLocation_type = CDO Repository Location
+_UI_CDOBinaryResourceLocation_type = CDO Binary Resource Location
+_UI_CDOTextResourceLocation_type = CDO Text Resource Location
+_UI_CDOResourceLocation_type = CDO Resource Location
+_UI_EObjectLocation_savedURIFragment_feature = Saved URI Fragment
+_UI_Couple_key_feature = Key
+_UI_Couple_value_feature = Value
+_UI_EObjectContainer_XMIContent_feature = XMI Content
+_UI_EObjectContainer_savedURIFragments_feature = Saved URI Fragments
+_UI_CDOResourceNodeLocation_path_feature = Path
+_UI_CDORepositoryLocation_URL_feature = URL
+_UI_CDORepositoryLocation_UUID_feature = UUID
+_UI_CDORepositoryLocation_name_feature = Name
+_UI_CDORepositoryLocation_branchID_feature = Branch ID
+_UI_TextContainer_type = Text Container
+_UI_TextContainer_text_feature = Text
+_UI_Base_containerProviders_feature = Container Providers
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.xml
new file mode 100644
index 0000000..6da5f8a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+  Copyright (c) 2015 Obeo.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+ 
+  Contributors:
+     Obeo - initial API and implementation and/or initial documentation
+     ...
+ 
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated mapping -->
+      <factory
+            uri="http://www.eclipse.org/intent/mapping"
+            class="org.eclipse.intent.mapping.provider.MappingItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/pom.xml
new file mode 100644
index 0000000..43d7e50
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2016, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf.edit</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping EMF Edit</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/BaseItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/BaseItemProvider.java
new file mode 100644
index 0000000..eb92cb3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/BaseItemProvider.java
@@ -0,0 +1,223 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.cdo.edit.CDOItemProviderAdapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingFactory;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.Base} object. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class BaseItemProvider extends CDOItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public BaseItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addContainerProvidersPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Base_name_feature"), getString(
+						"_UI_PropertyDescriptor_description", "_UI_Base_name_feature", "_UI_Base_type"),
+				MappingPackage.Literals.BASE__NAME, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Container Providers feature. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addContainerProvidersPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_Base_containerProviders_feature"), getString(
+								"_UI_PropertyDescriptor_description", "_UI_Base_containerProviders_feature",
+								"_UI_Base_type"), MappingPackage.Literals.BASE__CONTAINER_PROVIDERS, true,
+				false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for
+	 * an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand}
+	 * or {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS);
+			childrenFeatures.add(MappingPackage.Literals.BASE__REPORTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Base.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Base"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Base)object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Base_type")
+				: getString("_UI_Base_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Base.class)) {
+			case MappingPackage.BASE__NAME:
+			case MappingPackage.BASE__CONTAINER_PROVIDERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+			case MappingPackage.BASE__CONTENTS:
+			case MappingPackage.BASE__REPORTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true,
+						false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createTextLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createEObjectLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOFolderLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDORepositoryLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOBinaryResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOTextResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.BASE__REPORTS,
+				MappingFactory.eINSTANCE.createReport()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return MappingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOBinaryResourceLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOBinaryResourceLocationItemProvider.java
new file mode 100644
index 0000000..a636fd9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOBinaryResourceLocationItemProvider.java
@@ -0,0 +1,131 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.CDOBinaryResourceLocation}
+ * object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CDOBinaryResourceLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CDOBinaryResourceLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPathPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Path feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDOResourceNodeLocation_path_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDOResourceNodeLocation_path_feature",
+								"_UI_CDOResourceNodeLocation_type"),
+				MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns CDOBinaryResourceLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CDOBinaryResourceLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Serializable labelValue = ((CDOBinaryResourceLocation)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_CDOBinaryResourceLocation_type")
+				: getString("_UI_CDOBinaryResourceLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CDOBinaryResourceLocation.class)) {
+			case MappingPackage.CDO_BINARY_RESOURCE_LOCATION__PATH:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOFolderLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOFolderLocationItemProvider.java
new file mode 100644
index 0000000..396d736
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOFolderLocationItemProvider.java
@@ -0,0 +1,131 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.CDOFolderLocation} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CDOFolderLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CDOFolderLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPathPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Path feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDOResourceNodeLocation_path_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDOResourceNodeLocation_path_feature",
+								"_UI_CDOResourceNodeLocation_type"),
+				MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns CDOFolderLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CDOFolderLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Serializable labelValue = ((CDOFolderLocation)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_CDOFolderLocation_type")
+				: getString("_UI_CDOFolderLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CDOFolderLocation.class)) {
+			case MappingPackage.CDO_FOLDER_LOCATION__PATH:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDORepositoryLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDORepositoryLocationItemProvider.java
new file mode 100644
index 0000000..0d0ee06
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDORepositoryLocationItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.CDORepositoryLocation} object.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CDORepositoryLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CDORepositoryLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addURLPropertyDescriptor(object);
+			addUUIDPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addBranchIDPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the URL feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addURLPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDORepositoryLocation_URL_feature"), getString(
+								"_UI_PropertyDescriptor_description", "_UI_CDORepositoryLocation_URL_feature",
+								"_UI_CDORepositoryLocation_type"),
+				MappingPackage.Literals.CDO_REPOSITORY_LOCATION__URL, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the UUID feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addUUIDPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDORepositoryLocation_UUID_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDORepositoryLocation_UUID_feature", "_UI_CDORepositoryLocation_type"),
+				MappingPackage.Literals.CDO_REPOSITORY_LOCATION__UUID, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDORepositoryLocation_name_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDORepositoryLocation_name_feature", "_UI_CDORepositoryLocation_type"),
+				MappingPackage.Literals.CDO_REPOSITORY_LOCATION__NAME, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Branch ID feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addBranchIDPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDORepositoryLocation_branchID_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDORepositoryLocation_branchID_feature",
+								"_UI_CDORepositoryLocation_type"),
+				MappingPackage.Literals.CDO_REPOSITORY_LOCATION__BRANCH_ID, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns CDORepositoryLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CDORepositoryLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CDORepositoryLocation)object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_CDORepositoryLocation_type")
+				: getString("_UI_CDORepositoryLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CDORepositoryLocation.class)) {
+			case MappingPackage.CDO_REPOSITORY_LOCATION__URL:
+			case MappingPackage.CDO_REPOSITORY_LOCATION__UUID:
+			case MappingPackage.CDO_REPOSITORY_LOCATION__NAME:
+			case MappingPackage.CDO_REPOSITORY_LOCATION__BRANCH_ID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOResourceLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOResourceLocationItemProvider.java
new file mode 100644
index 0000000..653ecdb
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOResourceLocationItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.MappingFactory;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.CDOResourceLocation} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CDOResourceLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CDOResourceLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPathPropertyDescriptor(object);
+			addXMIContentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Path feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDOResourceNodeLocation_path_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDOResourceNodeLocation_path_feature",
+								"_UI_CDOResourceNodeLocation_type"),
+				MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the XMI Content feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addXMIContentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_EObjectContainer_XMIContent_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_EObjectContainer_XMIContent_feature", "_UI_EObjectContainer_type"),
+				MappingPackage.Literals.EOBJECT_CONTAINER__XMI_CONTENT, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for
+	 * an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand}
+	 * or {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MappingPackage.Literals.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CDOResourceLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CDOResourceLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Serializable labelValue = ((CDOResourceLocation)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_CDOResourceLocation_type")
+				: getString("_UI_CDOResourceLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CDOResourceLocation.class)) {
+			case MappingPackage.CDO_RESOURCE_LOCATION__PATH:
+			case MappingPackage.CDO_RESOURCE_LOCATION__XMI_CONTENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+			case MappingPackage.CDO_RESOURCE_LOCATION__SAVED_URI_FRAGMENTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true,
+						false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(
+				MappingPackage.Literals.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS, MappingFactory.eINSTANCE
+						.createCouple()));
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOTextResourceLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOTextResourceLocationItemProvider.java
new file mode 100644
index 0000000..05d4b815
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CDOTextResourceLocationItemProvider.java
@@ -0,0 +1,146 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.CDOTextResourceLocation} object.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CDOTextResourceLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CDOTextResourceLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPathPropertyDescriptor(object);
+			addTextPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Path feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_CDOResourceNodeLocation_path_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_CDOResourceNodeLocation_path_feature",
+								"_UI_CDOResourceNodeLocation_type"),
+				MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Text feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_TextContainer_text_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_TextContainer_text_feature",
+						"_UI_TextContainer_type"), MappingPackage.Literals.TEXT_CONTAINER__TEXT, true, false,
+				false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns CDOTextResourceLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CDOTextResourceLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Serializable labelValue = ((CDOTextResourceLocation)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_CDOTextResourceLocation_type")
+				: getString("_UI_CDOTextResourceLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CDOTextResourceLocation.class)) {
+			case MappingPackage.CDO_TEXT_RESOURCE_LOCATION__PATH:
+			case MappingPackage.CDO_TEXT_RESOURCE_LOCATION__TEXT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CoupleItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CoupleItemProvider.java
new file mode 100644
index 0000000..799fe6a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/CoupleItemProvider.java
@@ -0,0 +1,159 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.cdo.edit.CDOItemProviderAdapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.Couple} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class CoupleItemProvider extends CDOItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public CoupleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Couple_key_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Couple_key_feature", "_UI_Couple_type"),
+				MappingPackage.Literals.COUPLE__KEY, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Couple_value_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Couple_value_feature",
+						"_UI_Couple_type"), MappingPackage.Literals.COUPLE__VALUE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Couple.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Couple"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Couple)object).getKey();
+		return label == null || label.length() == 0 ? getString("_UI_Couple_type")
+				: getString("_UI_Couple_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Couple.class)) {
+			case MappingPackage.COUPLE__KEY:
+			case MappingPackage.COUPLE__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return MappingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/EObjectLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/EObjectLocationItemProvider.java
new file mode 100644
index 0000000..940a11a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/EObjectLocationItemProvider.java
@@ -0,0 +1,212 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.jface.viewers.ILabelProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.EObjectLocation} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class EObjectLocationItemProvider extends LocationItemProvider {
+
+	/**
+	 * The EMF {@link ILabelProvider}.
+	 * 
+	 * @generated NOT
+	 */
+	private final ILabelProvider eLabelProvider;
+
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated NOT
+	 */
+	public EObjectLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+		final ComposedAdapterFactory factory = new ComposedAdapterFactory(
+				ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+		eLabelProvider = new AdapterFactoryLabelProvider(factory);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#dispose()
+	 * @generated NOT
+	 */
+	@Override
+	public void dispose() {
+		super.dispose();
+		eLabelProvider.dispose();
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addURIFragmentPropertyDescriptor(object);
+			addSavedURIFragmentPropertyDescriptor(object);
+			addFeatureNamePropertyDescriptor(object);
+			addIndexPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the URI Fragment feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addURIFragmentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_EObjectLocation_URIFragment_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_EObjectLocation_URIFragment_feature", "_UI_EObjectLocation_type"),
+				MappingPackage.Literals.EOBJECT_LOCATION__URI_FRAGMENT, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Saved URI Fragment feature. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addSavedURIFragmentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_EObjectLocation_savedURIFragment_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_EObjectLocation_savedURIFragment_feature", "_UI_EObjectLocation_type"),
+				MappingPackage.Literals.EOBJECT_LOCATION__SAVED_URI_FRAGMENT, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Feature Name feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addFeatureNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_EObjectLocation_featureName_feature"), getString(
+								"_UI_PropertyDescriptor_description",
+								"_UI_EObjectLocation_featureName_feature", "_UI_EObjectLocation_type"),
+				MappingPackage.Literals.EOBJECT_LOCATION__FEATURE_NAME, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Index feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addIndexPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_EObjectLocation_index_feature"), getString("_UI_PropertyDescriptor_description",
+								"_UI_EObjectLocation_index_feature", "_UI_EObjectLocation_type"),
+				MappingPackage.Literals.EOBJECT_LOCATION__INDEX, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns EObjectLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EObjectLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final String label;
+
+		label = MappingUtils.getConnectorRegistry().getName((ILocation)object);
+
+		return label == null || label.length() == 0 ? getString("_UI_EObjectLocation_type")
+				: getString("_UI_EObjectLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EObjectLocation.class)) {
+			case MappingPackage.EOBJECT_LOCATION__URI_FRAGMENT:
+			case MappingPackage.EOBJECT_LOCATION__SAVED_URI_FRAGMENT:
+			case MappingPackage.EOBJECT_LOCATION__FEATURE_NAME:
+			case MappingPackage.EOBJECT_LOCATION__INDEX:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LinkItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LinkItemProvider.java
new file mode 100644
index 0000000..4db442b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LinkItemProvider.java
@@ -0,0 +1,212 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.cdo.edit.CDOItemProviderAdapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.jface.viewers.ILabelProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.Link} object. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class LinkItemProvider extends CDOItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+
+	/**
+	 * The EMF {@link ILabelProvider}.
+	 * 
+	 * @generated NOT
+	 */
+	private final ILabelProvider eLabelProvider;
+
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated NOT
+	 */
+	public LinkItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+		final ComposedAdapterFactory factory = new ComposedAdapterFactory(
+				ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+		eLabelProvider = new AdapterFactoryLabelProvider(factory);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#dispose()
+	 * @generated NOT
+	 */
+	@Override
+	public void dispose() {
+		super.dispose();
+		eLabelProvider.dispose();
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDescriptionPropertyDescriptor(object);
+			addTargetPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addReportsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Link_description_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Link_description_feature",
+						"_UI_Link_type"), MappingPackage.Literals.LINK__DESCRIPTION, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Target feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTargetPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Link_target_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Link_target_feature", "_UI_Link_type"),
+				MappingPackage.Literals.LINK__TARGET, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Link_type_feature"), getString(
+						"_UI_PropertyDescriptor_description", "_UI_Link_type_feature", "_UI_Link_type"),
+				MappingPackage.Literals.LINK__TYPE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Reports feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addReportsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Link_reports_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Link_reports_feature", "_UI_Link_type"),
+				MappingPackage.Literals.LINK__REPORTS, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This returns Link.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Link"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = eLabelProvider.getText(((Link)object).getTarget());
+		return label == null || label.length() == 0 ? getString("_UI_Link_type")
+				: getString("_UI_Link_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Link.class)) {
+			case MappingPackage.LINK__SOURCE:
+			case MappingPackage.LINK__TARGET:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return MappingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LocationItemProvider.java
new file mode 100644
index 0000000..bbc4630
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/LocationItemProvider.java
@@ -0,0 +1,230 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.cdo.edit.CDOItemProviderAdapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.MappingFactory;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.Location} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class LocationItemProvider extends CDOItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public LocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSourceLinksPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addMarkedAsDeletedPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Source Links feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addSourceLinksPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Location_sourceLinks_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Location_sourceLinks_feature",
+						"_UI_Location_type"), MappingPackage.Literals.LOCATION__SOURCE_LINKS, true, false,
+				true, null, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Location_type_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Location_type_feature",
+						"_UI_Location_type"), MappingPackage.Literals.LOCATION__TYPE, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Marked As Deleted feature. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addMarkedAsDeletedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_Location_markedAsDeleted_feature"), getString(
+								"_UI_PropertyDescriptor_description", "_UI_Location_markedAsDeleted_feature",
+								"_UI_Location_type"), MappingPackage.Literals.LOCATION__MARKED_AS_DELETED,
+				true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for
+	 * an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand}
+	 * or {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS);
+			childrenFeatures.add(MappingPackage.Literals.LOCATION__TARGET_LINKS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Serializable labelValue = ((Location)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ? getString("_UI_Location_type")
+				: getString("_UI_Location_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Location.class)) {
+			case MappingPackage.LOCATION__TYPE:
+			case MappingPackage.LOCATION__MARKED_AS_DELETED:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+			case MappingPackage.LOCATION__CONTENTS:
+			case MappingPackage.LOCATION__TARGET_LINKS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true,
+						false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createTextLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createEObjectLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOFolderLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDORepositoryLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOBinaryResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOTextResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS,
+				MappingFactory.eINSTANCE.createCDOResourceLocation()));
+
+		newChildDescriptors.add(createChildParameter(MappingPackage.Literals.LOCATION__TARGET_LINKS,
+				MappingFactory.eINSTANCE.createLink()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return MappingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingEditPlugin.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingEditPlugin.java
new file mode 100644
index 0000000..b091a3b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingEditPlugin.java
@@ -0,0 +1,88 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Mapping edit plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public final class MappingEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final MappingEditPlugin INSTANCE = new MappingEditPlugin();
+
+	/**
+	 * Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingEditPlugin() {
+		super(new ResourceLocator[] {});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingItemProviderAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingItemProviderAdapterFactory.java
new file mode 100644
index 0000000..57973f7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/MappingItemProviderAdapterFactory.java
@@ -0,0 +1,457 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.intent.mapping.util.MappingAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers. The adapters
+ * generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}. The adapters also support Eclipse property sheets. Note that most of the adapters are
+ * shared among multiple instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class MappingItemProviderAdapterFactory extends MappingAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.Link} instances.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected LinkItemProvider linkItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.Link}. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createLinkAdapter() {
+		if (linkItemProvider == null) {
+			linkItemProvider = new LinkItemProvider(this);
+		}
+
+		return linkItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.Base} instances.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected BaseItemProvider baseItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.Base}. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createBaseAdapter() {
+		if (baseItemProvider == null) {
+			baseItemProvider = new BaseItemProvider(this);
+		}
+
+		return baseItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.TextLocation}
+	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TextLocationItemProvider textLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.TextLocation}. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createTextLocationAdapter() {
+		if (textLocationItemProvider == null) {
+			textLocationItemProvider = new TextLocationItemProvider(this);
+		}
+
+		return textLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.EObjectLocation}
+	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EObjectLocationItemProvider eObjectLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.EObjectLocation}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createEObjectLocationAdapter() {
+		if (eObjectLocationItemProvider == null) {
+			eObjectLocationItemProvider = new EObjectLocationItemProvider(this);
+		}
+
+		return eObjectLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.Report} instances.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ReportItemProvider reportItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.Report}. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createReportAdapter() {
+		if (reportItemProvider == null) {
+			reportItemProvider = new ReportItemProvider(this);
+		}
+
+		return reportItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.Couple} instances.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CoupleItemProvider coupleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.Couple}. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCoupleAdapter() {
+		if (coupleItemProvider == null) {
+			coupleItemProvider = new CoupleItemProvider(this);
+		}
+
+		return coupleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.CDOFolderLocation}
+	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CDOFolderLocationItemProvider cdoFolderLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.CDOFolderLocation}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCDOFolderLocationAdapter() {
+		if (cdoFolderLocationItemProvider == null) {
+			cdoFolderLocationItemProvider = new CDOFolderLocationItemProvider(this);
+		}
+
+		return cdoFolderLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.intent.mapping.CDORepositoryLocation} instances. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CDORepositoryLocationItemProvider cdoRepositoryLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.CDORepositoryLocation}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCDORepositoryLocationAdapter() {
+		if (cdoRepositoryLocationItemProvider == null) {
+			cdoRepositoryLocationItemProvider = new CDORepositoryLocationItemProvider(this);
+		}
+
+		return cdoRepositoryLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.intent.mapping.CDOBinaryResourceLocation} instances. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CDOBinaryResourceLocationItemProvider cdoBinaryResourceLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.CDOBinaryResourceLocation}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCDOBinaryResourceLocationAdapter() {
+		if (cdoBinaryResourceLocationItemProvider == null) {
+			cdoBinaryResourceLocationItemProvider = new CDOBinaryResourceLocationItemProvider(this);
+		}
+
+		return cdoBinaryResourceLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.intent.mapping.CDOTextResourceLocation} instances. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CDOTextResourceLocationItemProvider cdoTextResourceLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.CDOTextResourceLocation}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCDOTextResourceLocationAdapter() {
+		if (cdoTextResourceLocationItemProvider == null) {
+			cdoTextResourceLocationItemProvider = new CDOTextResourceLocationItemProvider(this);
+		}
+
+		return cdoTextResourceLocationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.intent.mapping.CDOResourceLocation}
+	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CDOResourceLocationItemProvider cdoResourceLocationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.intent.mapping.CDOResourceLocation}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createCDOResourceLocationAdapter() {
+		if (cdoResourceLocationItemProvider == null) {
+			cdoResourceLocationItemProvider = new CDOResourceLocationItemProvider(this);
+		}
+
+		return cdoResourceLocationItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void dispose() {
+		if (linkItemProvider != null)
+			linkItemProvider.dispose();
+		if (baseItemProvider != null)
+			baseItemProvider.dispose();
+		if (textLocationItemProvider != null)
+			textLocationItemProvider.dispose();
+		if (eObjectLocationItemProvider != null)
+			eObjectLocationItemProvider.dispose();
+		if (reportItemProvider != null)
+			reportItemProvider.dispose();
+		if (coupleItemProvider != null)
+			coupleItemProvider.dispose();
+		if (cdoFolderLocationItemProvider != null)
+			cdoFolderLocationItemProvider.dispose();
+		if (cdoRepositoryLocationItemProvider != null)
+			cdoRepositoryLocationItemProvider.dispose();
+		if (cdoBinaryResourceLocationItemProvider != null)
+			cdoBinaryResourceLocationItemProvider.dispose();
+		if (cdoTextResourceLocationItemProvider != null)
+			cdoTextResourceLocationItemProvider.dispose();
+		if (cdoResourceLocationItemProvider != null)
+			cdoResourceLocationItemProvider.dispose();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/ReportItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/ReportItemProvider.java
new file mode 100644
index 0000000..953407b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/ReportItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.cdo.edit.CDOItemProviderAdapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.Report} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class ReportItemProvider extends CDOItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public ReportItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDescriptionPropertyDescriptor(object);
+			addLinkPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Report_description_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Report_description_feature",
+						"_UI_Report_type"), MappingPackage.Literals.REPORT__DESCRIPTION, true, false, false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Link feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addLinkPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString("_UI_Report_link_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_Report_link_feature", "_UI_Report_type"),
+				MappingPackage.Literals.REPORT__LINK, true, false, true, null, null, null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Report)object).getDescription();
+		return label == null || label.length() == 0 ? getString("_UI_Report_type")
+				: getString("_UI_Report_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Report.class)) {
+			case MappingPackage.REPORT__DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return MappingEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/TextLocationItemProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/TextLocationItemProvider.java
new file mode 100644
index 0000000..2823aaf
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.edit/src-gen/org/eclipse/intent/mapping/provider/TextLocationItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.TextLocation;
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.intent.mapping.TextLocation} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class TextLocationItemProvider extends LocationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	public TextLocationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addStartOffsetPropertyDescriptor(object);
+			addEndOffsetPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Start Offset feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addStartOffsetPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_TextLocation_startOffset_feature"), getString(
+								"_UI_PropertyDescriptor_description", "_UI_TextLocation_startOffset_feature",
+								"_UI_TextLocation_type"), MappingPackage.Literals.TEXT_LOCATION__START_OFFSET,
+				true, false, false, ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the End Offset feature. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	protected void addEndOffsetPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory)
+				.getRootAdapterFactory(), getResourceLocator(), getString(
+						"_UI_TextLocation_endOffset_feature"), getString("_UI_PropertyDescriptor_description",
+								"_UI_TextLocation_endOffset_feature", "_UI_TextLocation_type"),
+				MappingPackage.Literals.TEXT_LOCATION__END_OFFSET, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns TextLocation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TextLocation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final String label = MappingUtils.getConnectorRegistry().getName((ILocation)object);
+		return label == null || label.length() == 0 ? getString("_UI_TextLocation_type")
+				: getString("_UI_TextLocation_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached children and
+	 * by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(TextLocation.class)) {
+			case MappingPackage.TEXT_LOCATION__START_OFFSET:
+			case MappingPackage.TEXT_LOCATION__END_OFFSET:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false,
+						true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be
+	 * created under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.checkstyle
new file mode 100644
index 0000000..b3e8ea9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.classpath b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.project b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.project
new file mode 100644
index 0000000..63c65d2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf.ide.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f7e57f8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5a04ff9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf.ide.ui;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.intent.mapping,
+ org.eclipse.intent.mapping.emf,
+ org.eclipse.intent.mapping.emf.ide,
+ org.eclipse.jface,
+ org.eclipse.ui.ide,
+ org.eclipse.intent.mapping.ide.ui,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.ui
+Export-Package: org.eclipse.intent.mapping.emf.ide.ui,
+ org.eclipse.intent.mapping.emf.ide.ui.wizard
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.intent.mapping.emf.ide.ui.Activator
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/build.properties b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/plugin.xml
new file mode 100644
index 0000000..df8ca96
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <wizard
+            category="org.eclipse.intent.mapping.ide.ui.mapping"
+            class="org.eclipse.intent.mapping.emf.ide.ui.wizard.NewEMFBase"
+            id="org.eclipse.intent.mapping.emf.ide.ui.newEMFBase"
+            name="EMF Base">
+      </wizard>
+   </extension>
+
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/pom.xml
new file mode 100644
index 0000000..90f98a1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf.ide.ui</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping EMF IDE UI</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/Activator.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/Activator.java
new file mode 100644
index 0000000..631c7bb
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/Activator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.ui;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Activator extends Plugin {
+
+	/** The plug-in ID. */
+	public static final String PLUGIN_ID = "org.eclipse.intent.mapping.emf.ide.ui";
+
+	/** This plug-in's shared instance. */
+	private static Activator plugin;
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+		plugin = null;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBase.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBase.java
new file mode 100644
index 0000000..29cbe1c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBase.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2016 0beo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.ui.wizard;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.emf.ide.ui.Activator;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWizard;
+
+/**
+ * Creates a {@link Base}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class NewEMFBase extends Wizard implements IWorkbenchWizard {
+
+	/**
+	 * The {@link NewEMFBasePage}.
+	 */
+	protected NewEMFBasePage page;
+
+	/**
+	 * The default file name.
+	 */
+	private String defaultFileName;
+
+	/**
+	 * Constructor.
+	 */
+	public NewEMFBase() {
+		setWindowTitle("New Wizard");
+	}
+
+	@Override
+	public void addPages() {
+		page = new NewEMFBasePage(defaultFileName);
+		addPage(page);
+	}
+
+	@Override
+	public boolean performFinish() {
+		boolean res = false;
+
+		final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		base.setName(page.getMappingBaseName());
+		final ResourceSet rs = new ResourceSetImpl();
+		final Resource r = rs.createResource(URI.createPlatformResourceURI(page.getFileName(), true));
+		r.getContents().add(base);
+		try {
+			r.save(null);
+			res = true;
+		} catch (IOException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+					"unable to save base " + page.getFileName()));
+
+		}
+
+		dispose();
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
+	 *      org.eclipse.jface.viewers.IStructuredSelection)
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		final IContainer container;
+
+		if (selection.getFirstElement() instanceof IFile) {
+			container = ((IFile)selection.getFirstElement()).getParent();
+			defaultFileName = container.getFullPath().toString() + "/";
+		} else if (selection.getFirstElement() instanceof IContainer) {
+			container = (IContainer)selection.getFirstElement();
+			defaultFileName = container.getFullPath().toString() + "/";
+		}
+
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBasePage.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBasePage.java
new file mode 100644
index 0000000..d7e12ed
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide.ui/src/org/eclipse/intent/mapping/emf/ide/ui/wizard/NewEMFBasePage.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.ui.wizard;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * EMF {@link org.eclipse.intent.mapping.Base Base} creation page.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class NewEMFBasePage extends WizardPage {
+
+	/**
+	 * The default file name.
+	 */
+	private final String defaultFileName;
+
+	/**
+	 * The base name {@link Text}.
+	 */
+	private Text baseNameText;
+
+	/**
+	 * The file name {@link Text}.
+	 */
+	private Text fileNameText;
+
+	/**
+	 * Create the wizard.
+	 * 
+	 * @param defaultFileName
+	 *            the default file name
+	 */
+	public NewEMFBasePage(String defaultFileName) {
+		super("Create EMF Mapping Base");
+		this.defaultFileName = defaultFileName;
+		setTitle("Create EMF Mapping Base");
+		setDescription("Enter information to create a new EMF mapping base");
+	}
+
+	/**
+	 * Create contents of the wizard.
+	 * 
+	 * @param parent
+	 *            the parent {@link Composite}
+	 */
+	public void createControl(Composite parent) {
+		KeyListener listener = new KeyListener() {
+
+			public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
+				// nothing to do here
+			}
+
+			public void keyReleased(org.eclipse.swt.events.KeyEvent e) {
+				check();
+			}
+
+		};
+
+		final Composite container = new Composite(parent, SWT.NULL);
+
+		setControl(container);
+		container.setLayout(new GridLayout(2, false));
+
+		final Label baseNameLabel = new Label(container, SWT.NONE);
+		baseNameLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+		baseNameLabel.setText("Mapping base name:");
+
+		baseNameText = new Text(container, SWT.BORDER);
+		baseNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		baseNameText.addKeyListener(listener);
+
+		final Label fileNameLabel = new Label(container, SWT.NONE);
+		fileNameLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+		fileNameLabel.setText("File name:");
+
+		fileNameText = new Text(container, SWT.BORDER);
+		fileNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		fileNameText.addKeyListener(listener);
+		if (defaultFileName != null) {
+			fileNameText.setText(defaultFileName);
+		}
+
+		check();
+	}
+
+	/**
+	 * Gets the {@link org.eclipse.intent.mapping.Base#getName() name}.
+	 * 
+	 * @return the {@link org.eclipse.intent.mapping.Base#getName() name}
+	 */
+	public String getMappingBaseName() {
+		return baseNameText.getText();
+	}
+
+	/**
+	 * Gets the file name.
+	 * 
+	 * @return the file name
+	 */
+	public String getFileName() {
+		return fileNameText.getText();
+	}
+
+	/**
+	 * Sets the file name.
+	 * 
+	 * @param name
+	 *            the file name
+	 */
+	public void setFileName(String name) {
+		fileNameText.setText(name);
+	}
+
+	/**
+	 * Checks the page.
+	 */
+	private void check() {
+		final StringBuilder builder = new StringBuilder();
+		if (baseNameText.getText().isEmpty()) {
+			builder.append("The mapping base name can't be empty.");
+			if (fileNameText.getText().isEmpty()) {
+				builder.append("\n");
+			}
+		}
+		if (fileNameText.getText().isEmpty() || !fileNameText.getText().endsWith(".mapping")) {
+			builder.append("The file name can't be empty and must finish with \".mapping\"");
+		}
+		if (builder.length() == 0) {
+			setErrorMessage(null);
+			setPageComplete(true);
+		} else {
+			setErrorMessage(builder.toString());
+			setPageComplete(false);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.checkstyle
new file mode 100644
index 0000000..46c61e2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src-gen"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.classpath b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.classpath
new file mode 100644
index 0000000..756f428
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.project b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.project
new file mode 100644
index 0000000..95de13e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf.ide</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..16a3508
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf.ide;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.intent.mapping.emf.ide,
+ org.eclipse.intent.mapping.emf.ide.adapter,
+ org.eclipse.intent.mapping.emf.ide.connector,
+ org.eclipse.intent.mapping.emf.ide.marker,
+ org.eclipse.intent.mapping.emf.ide.resource,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.intent.mapping.ide.impl,
+ org.eclipse.intent.mapping.ide.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.cdo;visibility:=reexport,
+ org.eclipse.intent.mapping.emf;visibility:=reexport,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.intent.mapping,
+ org.eclipse.core.resources,
+ org.eclipse.emf.ecore.xmi
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.intent.mapping.emf.ide.Activator
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/build.properties b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/build.properties
new file mode 100644
index 0000000..599c44b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/build.properties
@@ -0,0 +1,20 @@
+#  Copyright (c) 2015 Obeo.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  Contributors:
+#     Obeo - initial API and implementation and/or initial documentation
+#     ...
+# 
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.ecore b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.ecore
new file mode 100644
index 0000000..7f1282c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.ecore
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ide" nsURI="http://www.eclipse.org/intent/mapping/ide" nsPrefix="ide">
+  <eClassifiers xsi:type="ecore:EClass" name="ResourceLocation" eSuperTypes="../../org.eclipse.intent.mapping.emf/model/mapping.ecore#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fullPath" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FileLocation" eSuperTypes="#//ResourceLocation"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TextFileLocation" eSuperTypes="#//FileLocation ../../org.eclipse.intent.mapping.emf/model/mapping.ecore#//TextContainer"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EObjectFileLocation" eSuperTypes="#//FileLocation ../../org.eclipse.intent.mapping.emf/model/mapping.ecore#//EObjectContainer"/>
+</ecore:EPackage>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.genmodel b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.genmodel
new file mode 100644
index 0000000..7b18a6a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/model/ide.genmodel
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=" Copyright (c) 2015 Obeo.&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License v1.0&#xA; which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA; Contributors:&#xA;    Obeo - initial API and implementation and/or initial documentation&#xA;    ...&#xA;"
+    modelDirectory="/org.eclipse.intent.mapping.emf.ide/src-gen" editDirectory="/org.eclipse.intent.mapping.emf.ide.edit/src-gen"
+    editorDirectory="/org.eclipse.intent.mapping.emf.ide.editor/src-gen"
+    modelPluginID="org.eclipse.intent.mapping.emf.ide" modelName="Ide"
+    rootExtendsInterface="org.eclipse.emf.cdo.CDOObject" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl"
+    reflectiveDelegation="true" codeFormatting="true" testsDirectory="/org.eclipse.intent.mapping.emf.ide.tests/src-gen"
+    importerID="org.eclipse.emf.importer.cdo" featureDelegation="Reflective" complianceLevel="5.0"
+    copyrightFields="false" publicConstructors="true" providerRootExtendsClass="org.eclipse.emf.cdo.edit.CDOItemProviderAdapter"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>ide.ecore</foreignModel>
+  <modelPluginVariables>CDO=org.eclipse.emf.cdo</modelPluginVariables>
+  <genPackages prefix="Ide" basePackage="org.eclipse.intent.mapping" disposableProviderFactory="true"
+      ecorePackage="ide.ecore#/">
+    <genClasses ecoreClass="ide.ecore#//ResourceLocation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ide.ecore#//ResourceLocation/fullPath"/>
+    </genClasses>
+    <genClasses ecoreClass="ide.ecore#//FileLocation"/>
+    <genClasses ecoreClass="ide.ecore#//TextFileLocation"/>
+    <genClasses ecoreClass="ide.ecore#//EObjectFileLocation"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.properties b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.properties
new file mode 100644
index 0000000..2f7173b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.properties
@@ -0,0 +1,13 @@
+#  Copyright (c) 2015 Obeo.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  Contributors:
+#     Obeo - initial API and implementation and/or initial documentation
+#     ...
+# 
+
+pluginName = Ide Model
+providerName = www.example.org
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.xml
new file mode 100644
index 0000000..92a7c87
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/plugin.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+  Copyright (c) 2015 Obeo.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+ 
+  Contributors:
+     Obeo - initial API and implementation and/or initial documentation
+     ...
+ 
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated ide -->
+      <package
+            uri="http://www.eclipse.org/intent/mapping/ide"
+            class="org.eclipse.intent.mapping.ide.IdePackage"
+            genModel="model/ide.genmodel"/>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.location">
+      <base
+            class="org.eclipse.intent.mapping.Base">
+         <location
+               implementation="org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl"
+               interface="org.eclipse.intent.mapping.ide.resource.IResourceLocation">
+         </location>
+         <location
+               implementation="org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl"
+               interface="org.eclipse.intent.mapping.ide.resource.ITextFileLocation">
+         </location>
+         <location
+               implementation="org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl"
+               interface="org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation">
+         </location>
+      </base>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.fileConnectorDelegate">
+      <fileConnectorDelegate
+            class="org.eclipse.intent.mapping.emf.ide.connector.EObjectFileConnectorDelegate">
+      </fileConnectorDelegate>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.baseProvider">
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.connector">
+      <connector
+            class="org.eclipse.intent.mapping.emf.ide.connector.IdeEObjectConnector">
+      </connector>
+      <connector
+            class="org.eclipse.intent.mapping.emf.ide.connector.IdeCDOResourceNodeConnector">
+      </connector>
+      <connector
+            class="org.eclipse.intent.mapping.emf.ide.connector.IdeCDOViewConnector">
+      </connector>
+   </extension>
+   <extension
+         id="org.eclipse.intent.mapping.emf.ide.eobjectLocationMarker"
+         name="EObject Location"
+         point="org.eclipse.core.resources.markers">
+      <persistent
+            value="false">
+      </persistent>
+      <super
+            type="org.eclipse.intent.mapping.ide.locationMarker">
+      </super>
+      <super
+            type="org.eclipse.emf.ecore.diagnostic">
+      </super>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.intent.mapping.emf.IEObjectLocation"
+            class="org.eclipse.intent.mapping.emf.ide.adapter.EObjectLocationToMarkerAdapterFactory">
+         <adapter
+               type="org.eclipse.core.resources.IMarker">
+         </adapter>
+      </factory>
+      <factory
+            adaptableType="org.eclipse.emf.ecore.EObject"
+            class="org.eclipse.intent.mapping.emf.ide.adapter.EObjectToFileAdapterFactory">
+         <adapter
+               type="org.eclipse.core.resources.IFile">
+         </adapter>
+      </factory>
+   </extension>
+   <extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            base-type="org.eclipse.emf.ecore.xmi"
+            file-extensions="mapping"
+            id="org.eclipse.intent.mapping.emf.ide.mapping"
+            name="Mapping base"
+            priority="normal">
+      </content-type>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.markerToLocation">
+      <markerToLocation
+            class="org.eclipse.intent.mapping.emf.ide.adapter.MarkerToEObjectLocationDescriptor"
+            markerType="org.eclipse.emf.ecore.diagnostic">
+      </markerToLocation>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.containerProvider">
+      <provider
+            class="org.eclipse.intent.mapping.emf.connector.CDOContainerProvider">
+      </provider>
+      <provider
+            class="org.eclipse.intent.mapping.emf.ide.connector.EObjectContainerProvider">
+      </provider>
+   </extension>
+
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/pom.xml
new file mode 100644
index 0000000..7658de0
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf.ide</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping EMF IDE</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/EObjectFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/EObjectFileLocation.java
new file mode 100644
index 0000000..256cd8d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/EObjectFileLocation.java
@@ -0,0 +1,46 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import java.util.List;
+
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>EObject File Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.ide.IdePackage#getEObjectFileLocation()
+ * @model
+ * @generated NOT
+ */
+public interface EObjectFileLocation extends FileLocation, EObjectContainer, IEObjectFileLocation {
+
+	/**
+	 * Returns the value of the '<em><b>Saved URI Fragments</b></em>' containment reference list. The list
+	 * contents are of type {@link org.eclipse.intent.mapping.Couple}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Saved URI Fragments</em>' containment reference list isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Saved URI Fragments</em>' containment reference list.
+	 * @see org.eclipse.intent.mapping.ide.IdePackage#getEObjectFileLocation_SavedURIFragments()
+	 * @model containment="true"
+	 * @generated NOT
+	 */
+	List<ICouple> getSavedURIFragments();
+} // EObjectFileLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/FileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/FileLocation.java
new file mode 100644
index 0000000..4b1dd25
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/FileLocation.java
@@ -0,0 +1,26 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>File Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.ide.IdePackage#getFileLocation()
+ * @model
+ * @generated NOT
+ */
+public interface FileLocation extends ResourceLocation, IFileLocation {
+} // FileLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdeFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdeFactory.java
new file mode 100644
index 0000000..0f7feb1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdeFactory.java
@@ -0,0 +1,75 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a create method for each non-abstract
+ * class of the model. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.ide.IdePackage
+ * @generated
+ */
+public interface IdeFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	IdeFactory eINSTANCE = org.eclipse.intent.mapping.ide.impl.IdeFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Resource Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return a new object of class '<em>Resource Location</em>'.
+	 * @generated
+	 */
+	ResourceLocation createResourceLocation();
+
+	/**
+	 * Returns a new object of class '<em>File Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>File Location</em>'.
+	 * @generated
+	 */
+	FileLocation createFileLocation();
+
+	/**
+	 * Returns a new object of class '<em>Text File Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return a new object of class '<em>Text File Location</em>'.
+	 * @generated
+	 */
+	TextFileLocation createTextFileLocation();
+
+	/**
+	 * Returns a new object of class '<em>EObject File Location</em>'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>EObject File Location</em>'.
+	 * @generated
+	 */
+	EObjectFileLocation createEObjectFileLocation();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	IdePackage getIdePackage();
+
+} // IdeFactory
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdePackage.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdePackage.java
new file mode 100644
index 0000000..023245d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/IdePackage.java
@@ -0,0 +1,576 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains accessors for the meta objects to
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.ide.IdeFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface IdePackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "ide";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/intent/mapping/ide";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "ide";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	IdePackage eINSTANCE = org.eclipse.intent.mapping.ide.impl.IdePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl
+	 * <em>Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl
+	 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getResourceLocation()
+	 * @generated
+	 */
+	int RESOURCE_LOCATION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__CONTENTS = MappingPackage.LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__SOURCE_LINKS = MappingPackage.LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__TARGET_LINKS = MappingPackage.LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__CONTAINER = MappingPackage.LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__TYPE = MappingPackage.LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__MARKED_AS_DELETED = MappingPackage.LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Full Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION__FULL_PATH = MappingPackage.LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Resource Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION_FEATURE_COUNT = MappingPackage.LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Resource Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESOURCE_LOCATION_OPERATION_COUNT = MappingPackage.LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.ide.impl.FileLocationImpl <em>File
+	 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.ide.impl.FileLocationImpl
+	 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getFileLocation()
+	 * @generated
+	 */
+	int FILE_LOCATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__CONTENTS = RESOURCE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__SOURCE_LINKS = RESOURCE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__TARGET_LINKS = RESOURCE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__CONTAINER = RESOURCE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__TYPE = RESOURCE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__MARKED_AS_DELETED = RESOURCE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Full Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION__FULL_PATH = RESOURCE_LOCATION__FULL_PATH;
+
+	/**
+	 * The number of structural features of the '<em>File Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION_FEATURE_COUNT = RESOURCE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>File Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_LOCATION_OPERATION_COUNT = RESOURCE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl <em>Text
+	 * File Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl
+	 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getTextFileLocation()
+	 * @generated
+	 */
+	int TEXT_FILE_LOCATION = 2;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__CONTENTS = FILE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__SOURCE_LINKS = FILE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__TARGET_LINKS = FILE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__CONTAINER = FILE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__TYPE = FILE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__MARKED_AS_DELETED = FILE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Full Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__FULL_PATH = FILE_LOCATION__FULL_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION__TEXT = FILE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Text File Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION_FEATURE_COUNT = FILE_LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Text File Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_FILE_LOCATION_OPERATION_COUNT = FILE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl
+	 * <em>EObject File Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl
+	 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getEObjectFileLocation()
+	 * @generated
+	 */
+	int EOBJECT_FILE_LOCATION = 3;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__CONTENTS = FILE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__SOURCE_LINKS = FILE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__TARGET_LINKS = FILE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__CONTAINER = FILE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__TYPE = FILE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__MARKED_AS_DELETED = FILE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Full Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__FULL_PATH = FILE_LOCATION__FULL_PATH;
+
+	/**
+	 * The feature id for the '<em><b>XMI Content</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__XMI_CONTENT = FILE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Saved URI Fragments</b></em>' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION__SAVED_URI_FRAGMENTS = FILE_LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>EObject File Location</em>' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION_FEATURE_COUNT = FILE_LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>EObject File Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_FILE_LOCATION_OPERATION_COUNT = FILE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.ide.ResourceLocation <em>Resource
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Resource Location</em>'.
+	 * @see org.eclipse.intent.mapping.ide.ResourceLocation
+	 * @generated
+	 */
+	EClass getResourceLocation();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.ide.ResourceLocation#getFullPath <em>Full Path</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Full Path</em>'.
+	 * @see org.eclipse.intent.mapping.ide.ResourceLocation#getFullPath()
+	 * @see #getResourceLocation()
+	 * @generated
+	 */
+	EAttribute getResourceLocation_FullPath();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.ide.FileLocation <em>File
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>File Location</em>'.
+	 * @see org.eclipse.intent.mapping.ide.FileLocation
+	 * @generated
+	 */
+	EClass getFileLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.ide.TextFileLocation <em>Text File
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Text File Location</em>'.
+	 * @see org.eclipse.intent.mapping.ide.TextFileLocation
+	 * @generated
+	 */
+	EClass getTextFileLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.ide.EObjectFileLocation
+	 * <em>EObject File Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>EObject File Location</em>'.
+	 * @see org.eclipse.intent.mapping.ide.EObjectFileLocation
+	 * @generated
+	 */
+	EClass getEObjectFileLocation();
+
+	/**
+	 * Returns the factory that creates the instances of the model. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	IdeFactory getIdeFactory();
+
+	/**
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl
+		 * <em>Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl
+		 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getResourceLocation()
+		 * @generated
+		 */
+		EClass RESOURCE_LOCATION = eINSTANCE.getResourceLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>Full Path</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute RESOURCE_LOCATION__FULL_PATH = eINSTANCE.getResourceLocation_FullPath();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.ide.impl.FileLocationImpl
+		 * <em>File Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.ide.impl.FileLocationImpl
+		 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getFileLocation()
+		 * @generated
+		 */
+		EClass FILE_LOCATION = eINSTANCE.getFileLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl
+		 * <em>Text File Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl
+		 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getTextFileLocation()
+		 * @generated
+		 */
+		EClass TEXT_FILE_LOCATION = eINSTANCE.getTextFileLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl
+		 * <em>EObject File Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl
+		 * @see org.eclipse.intent.mapping.ide.impl.IdePackageImpl#getEObjectFileLocation()
+		 * @generated
+		 */
+		EClass EOBJECT_FILE_LOCATION = eINSTANCE.getEObjectFileLocation();
+
+	}
+
+} // IdePackage
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/ResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/ResourceLocation.java
new file mode 100644
index 0000000..3f23dcb
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/ResourceLocation.java
@@ -0,0 +1,60 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.ide.resource.IResourceLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Resource Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.ide.ResourceLocation#getFullPath <em>Full Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.ide.IdePackage#getResourceLocation()
+ * @model
+ * @generated NOT
+ */
+public interface ResourceLocation extends Location, IResourceLocation {
+	/**
+	 * Returns the value of the '<em><b>Full Path</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Full Path</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Full Path</em>' attribute.
+	 * @see #setFullPath(String)
+	 * @see org.eclipse.intent.mapping.ide.IdePackage#getResourceLocation_FullPath()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getFullPath();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.ide.ResourceLocation#getFullPath <em>Full
+	 * Path</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Full Path</em>' attribute.
+	 * @see #getFullPath()
+	 * @generated
+	 */
+	void setFullPath(String value);
+
+} // ResourceLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/TextFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/TextFileLocation.java
new file mode 100644
index 0000000..11c5e5a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/TextFileLocation.java
@@ -0,0 +1,28 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.ide.resource.ITextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Text File Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.ide.IdePackage#getTextFileLocation()
+ * @model
+ * @generated NOT
+ */
+public interface TextFileLocation extends FileLocation, TextContainer, ITextFileLocation {
+
+} // TextFileLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/EObjectFileLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/EObjectFileLocationImpl.java
new file mode 100644
index 0000000..eb3cff8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/EObjectFileLocationImpl.java
@@ -0,0 +1,128 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.ide.EObjectFileLocation;
+import org.eclipse.intent.mapping.ide.IdePackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>EObject File Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl#getXMIContent <em>XMI
+ * Content</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl#getSavedURIFragments <em>Saved URI
+ * Fragments</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectFileLocationImpl extends FileLocationImpl implements EObjectFileLocation {
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObjectFileLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IdePackage.Literals.EOBJECT_FILE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getXMIContent() {
+		return (String)eGet(MappingPackage.Literals.EOBJECT_CONTAINER__XMI_CONTENT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setXMIContent(String newXMIContent) {
+		eSet(MappingPackage.Literals.EOBJECT_CONTAINER__XMI_CONTENT, newXMIContent);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public List<ICouple> getSavedURIFragments() {
+		return (List<ICouple>)eGet(MappingPackage.Literals.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == EObjectContainer.class) {
+			switch (derivedFeatureID) {
+				case IdePackage.EOBJECT_FILE_LOCATION__XMI_CONTENT:
+					return MappingPackage.EOBJECT_CONTAINER__XMI_CONTENT;
+				case IdePackage.EOBJECT_FILE_LOCATION__SAVED_URI_FRAGMENTS:
+					return MappingPackage.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == EObjectContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.EOBJECT_CONTAINER__XMI_CONTENT:
+					return IdePackage.EOBJECT_FILE_LOCATION__XMI_CONTENT;
+				case MappingPackage.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS:
+					return IdePackage.EOBJECT_FILE_LOCATION__SAVED_URI_FRAGMENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} // EObjectFileLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/FileLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/FileLocationImpl.java
new file mode 100644
index 0000000..2da15cf
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/FileLocationImpl.java
@@ -0,0 +1,45 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.ide.FileLocation;
+import org.eclipse.intent.mapping.ide.IdePackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>File Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class FileLocationImpl extends ResourceLocationImpl implements FileLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public FileLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IdePackage.Literals.FILE_LOCATION;
+	}
+
+} // FileLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdeFactoryImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdeFactoryImpl.java
new file mode 100644
index 0000000..7ad01df
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdeFactoryImpl.java
@@ -0,0 +1,141 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.intent.mapping.ide.EObjectFileLocation;
+import org.eclipse.intent.mapping.ide.FileLocation;
+import org.eclipse.intent.mapping.ide.IdeFactory;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.ResourceLocation;
+import org.eclipse.intent.mapping.ide.TextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class IdeFactoryImpl extends EFactoryImpl implements IdeFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static IdeFactory init() {
+		try {
+			IdeFactory theIdeFactory = (IdeFactory)EPackage.Registry.INSTANCE.getEFactory(IdePackage.eNS_URI);
+			if (theIdeFactory != null) {
+				return theIdeFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new IdeFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IdeFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case IdePackage.RESOURCE_LOCATION:
+				return (EObject)createResourceLocation();
+			case IdePackage.FILE_LOCATION:
+				return (EObject)createFileLocation();
+			case IdePackage.TEXT_FILE_LOCATION:
+				return (EObject)createTextFileLocation();
+			case IdePackage.EOBJECT_FILE_LOCATION:
+				return (EObject)createEObjectFileLocation();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ResourceLocation createResourceLocation() {
+		ResourceLocationImpl resourceLocation = new ResourceLocationImpl();
+		return resourceLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public FileLocation createFileLocation() {
+		FileLocationImpl fileLocation = new FileLocationImpl();
+		return fileLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TextFileLocation createTextFileLocation() {
+		TextFileLocationImpl textFileLocation = new TextFileLocationImpl();
+		return textFileLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObjectFileLocation createEObjectFileLocation() {
+		EObjectFileLocationImpl eObjectFileLocation = new EObjectFileLocationImpl();
+		return eObjectFileLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IdePackage getIdePackage() {
+		return (IdePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static IdePackage getPackage() {
+		return IdePackage.eINSTANCE;
+	}
+
+} // IdeFactoryImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdePackageImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdePackageImpl.java
new file mode 100644
index 0000000..fc102fa
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/IdePackageImpl.java
@@ -0,0 +1,268 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.ide.EObjectFileLocation;
+import org.eclipse.intent.mapping.ide.FileLocation;
+import org.eclipse.intent.mapping.ide.IdeFactory;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.ResourceLocation;
+import org.eclipse.intent.mapping.ide.TextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class IdePackageImpl extends EPackageImpl implements IdePackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass resourceLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass fileLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass textFileLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass eObjectFileLocationEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory method {@link #init init()},
+	 * which also performs initialization of the package, or returns the registered package, if one already
+	 * exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.intent.mapping.ide.IdePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private IdePackageImpl() {
+		super(eNS_URI, IdeFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it
+	 * depends.
+	 * <p>
+	 * This method is used to initialize {@link IdePackage#eINSTANCE} when that field is accessed. Clients
+	 * should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static IdePackage init() {
+		if (isInited)
+			return (IdePackage)EPackage.Registry.INSTANCE.getEPackage(IdePackage.eNS_URI);
+
+		// Obtain or create and register package
+		IdePackageImpl theIdePackage = (IdePackageImpl)(EPackage.Registry.INSTANCE.get(
+				eNS_URI) instanceof IdePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+						: new IdePackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		MappingPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theIdePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theIdePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theIdePackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(IdePackage.eNS_URI, theIdePackage);
+		return theIdePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getResourceLocation() {
+		return resourceLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getResourceLocation_FullPath() {
+		return (EAttribute)resourceLocationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getFileLocation() {
+		return fileLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getTextFileLocation() {
+		return textFileLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEObjectFileLocation() {
+		return eObjectFileLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IdeFactory getIdeFactory() {
+		return (IdeFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is guarded to have no affect on any
+	 * invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		resourceLocationEClass = createEClass(RESOURCE_LOCATION);
+		createEAttribute(resourceLocationEClass, RESOURCE_LOCATION__FULL_PATH);
+
+		fileLocationEClass = createEClass(FILE_LOCATION);
+
+		textFileLocationEClass = createEClass(TEXT_FILE_LOCATION);
+
+		eObjectFileLocationEClass = createEClass(EOBJECT_FILE_LOCATION);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This method is guarded to have no affect
+	 * on any invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		MappingPackage theMappingPackage = (MappingPackage)EPackage.Registry.INSTANCE.getEPackage(
+				MappingPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		resourceLocationEClass.getESuperTypes().add(theMappingPackage.getLocation());
+		fileLocationEClass.getESuperTypes().add(this.getResourceLocation());
+		textFileLocationEClass.getESuperTypes().add(this.getFileLocation());
+		textFileLocationEClass.getESuperTypes().add(theMappingPackage.getTextContainer());
+		eObjectFileLocationEClass.getESuperTypes().add(this.getFileLocation());
+		eObjectFileLocationEClass.getESuperTypes().add(theMappingPackage.getEObjectContainer());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(resourceLocationEClass, ResourceLocation.class, "ResourceLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getResourceLocation_FullPath(), ecorePackage.getEString(), "fullPath", null, 1, 1,
+				ResourceLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(fileLocationEClass, FileLocation.class, "FileLocation", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(textFileLocationEClass, TextFileLocation.class, "TextFileLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(eObjectFileLocationEClass, EObjectFileLocation.class, "EObjectFileLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // IdePackageImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/ResourceLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/ResourceLocationImpl.java
new file mode 100644
index 0000000..a1bf098
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/ResourceLocationImpl.java
@@ -0,0 +1,70 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.ResourceLocation;
+import org.eclipse.intent.mapping.impl.LocationImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Resource Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl#getFullPath <em>Full Path</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ResourceLocationImpl extends LocationImpl implements ResourceLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ResourceLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IdePackage.Literals.RESOURCE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getFullPath() {
+		return (String)eGet(IdePackage.Literals.RESOURCE_LOCATION__FULL_PATH, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setFullPath(String newFullPath) {
+		eSet(IdePackage.Literals.RESOURCE_LOCATION__FULL_PATH, newFullPath);
+	}
+
+} // ResourceLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/TextFileLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/TextFileLocationImpl.java
new file mode 100644
index 0000000..25c57ab
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/impl/TextFileLocationImpl.java
@@ -0,0 +1,107 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.TextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Text File Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl#getText <em>Text</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TextFileLocationImpl extends FileLocationImpl implements TextFileLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TextFileLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IdePackage.Literals.TEXT_FILE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getText() {
+		return (String)eGet(MappingPackage.Literals.TEXT_CONTAINER__TEXT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setText(String newText) {
+		eSet(MappingPackage.Literals.TEXT_CONTAINER__TEXT, newText);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == TextContainer.class) {
+			switch (derivedFeatureID) {
+				case IdePackage.TEXT_FILE_LOCATION__TEXT:
+					return MappingPackage.TEXT_CONTAINER__TEXT;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == TextContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.TEXT_CONTAINER__TEXT:
+					return IdePackage.TEXT_FILE_LOCATION__TEXT;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} // TextFileLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeAdapterFactory.java
new file mode 100644
index 0000000..3bb94d7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeAdapterFactory.java
@@ -0,0 +1,283 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.IEMFBaseElement;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.ide.EObjectFileLocation;
+import org.eclipse.intent.mapping.ide.FileLocation;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.ResourceLocation;
+import org.eclipse.intent.mapping.ide.TextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides an adapter
+ * <code>createXXX</code> method for each class of the model. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.ide.IdePackage
+ * @generated
+ */
+public class IdeAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static IdePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IdeAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = IdePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object. <!-- begin-user-doc --> This
+	 * implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model. <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected IdeSwitch<Adapter> modelSwitch = new IdeSwitch<Adapter>() {
+		@Override
+		public Adapter caseResourceLocation(ResourceLocation object) {
+			return createResourceLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseFileLocation(FileLocation object) {
+			return createFileLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseTextFileLocation(TextFileLocation object) {
+			return createTextFileLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseEObjectFileLocation(EObjectFileLocation object) {
+			return createEObjectFileLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseIEMFBaseElement(IEMFBaseElement object) {
+			return createIEMFBaseElementAdapter();
+		}
+
+		@Override
+		public Adapter caseLocationContainer(LocationContainer object) {
+			return createLocationContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseLocation(Location object) {
+			return createLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseTextContainer(TextContainer object) {
+			return createTextContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseEObjectContainer(EObjectContainer object) {
+			return createEObjectContainerAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.ide.ResourceLocation
+	 * <em>Resource Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.ide.ResourceLocation
+	 * @generated
+	 */
+	public Adapter createResourceLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.ide.FileLocation
+	 * <em>File Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+	 * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.ide.FileLocation
+	 * @generated
+	 */
+	public Adapter createFileLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.ide.TextFileLocation
+	 * <em>Text File Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.ide.TextFileLocation
+	 * @generated
+	 */
+	public Adapter createTextFileLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.ide.EObjectFileLocation
+	 * <em>EObject File Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.ide.EObjectFileLocation
+	 * @generated
+	 */
+	public Adapter createEObjectFileLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.IEMFBaseElement
+	 * <em>IEMF Base Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.IEMFBaseElement
+	 * @generated
+	 */
+	public Adapter createIEMFBaseElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.LocationContainer
+	 * <em>Location Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.LocationContainer
+	 * @generated
+	 */
+	public Adapter createLocationContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Location
+	 * <em>Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Location
+	 * @generated
+	 */
+	public Adapter createLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.TextContainer <em>Text
+	 * Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.TextContainer
+	 * @generated
+	 */
+	public Adapter createTextContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.EObjectContainer
+	 * <em>EObject Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.EObjectContainer
+	 * @generated
+	 */
+	public Adapter createEObjectContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This default implementation returns
+	 * null. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // IdeAdapterFactory
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeSwitch.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeSwitch.java
new file mode 100644
index 0000000..4bd6f75
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src-gen/org/eclipse/intent/mapping/ide/util/IdeSwitch.java
@@ -0,0 +1,302 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.ide.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.IEMFBaseElement;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.ide.EObjectFileLocation;
+import org.eclipse.intent.mapping.ide.FileLocation;
+import org.eclipse.intent.mapping.ide.IdePackage;
+import org.eclipse.intent.mapping.ide.ResourceLocation;
+import org.eclipse.intent.mapping.ide.TextFileLocation;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance hierarchy. It supports the call
+ * {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the
+ * model, starting with the actual class of the object and proceeding up the inheritance hierarchy until a
+ * non-null result is returned, which is the result of the switch. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.ide.IdePackage
+ * @generated
+ */
+public class IdeSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static IdePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IdeSwitch() {
+		if (modelPackage == null) {
+			modelPackage = IdePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param ePackage
+	 *            the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+	 * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case IdePackage.RESOURCE_LOCATION: {
+				ResourceLocation resourceLocation = (ResourceLocation)theEObject;
+				T result = caseResourceLocation(resourceLocation);
+				if (result == null)
+					result = caseLocation(resourceLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(resourceLocation);
+				if (result == null)
+					result = caseLocationContainer(resourceLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case IdePackage.FILE_LOCATION: {
+				FileLocation fileLocation = (FileLocation)theEObject;
+				T result = caseFileLocation(fileLocation);
+				if (result == null)
+					result = caseResourceLocation(fileLocation);
+				if (result == null)
+					result = caseLocation(fileLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(fileLocation);
+				if (result == null)
+					result = caseLocationContainer(fileLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case IdePackage.TEXT_FILE_LOCATION: {
+				TextFileLocation textFileLocation = (TextFileLocation)theEObject;
+				T result = caseTextFileLocation(textFileLocation);
+				if (result == null)
+					result = caseFileLocation(textFileLocation);
+				if (result == null)
+					result = caseTextContainer(textFileLocation);
+				if (result == null)
+					result = caseResourceLocation(textFileLocation);
+				if (result == null)
+					result = caseLocation(textFileLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(textFileLocation);
+				if (result == null)
+					result = caseLocationContainer(textFileLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case IdePackage.EOBJECT_FILE_LOCATION: {
+				EObjectFileLocation eObjectFileLocation = (EObjectFileLocation)theEObject;
+				T result = caseEObjectFileLocation(eObjectFileLocation);
+				if (result == null)
+					result = caseFileLocation(eObjectFileLocation);
+				if (result == null)
+					result = caseEObjectContainer(eObjectFileLocation);
+				if (result == null)
+					result = caseResourceLocation(eObjectFileLocation);
+				if (result == null)
+					result = caseLocation(eObjectFileLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(eObjectFileLocation);
+				if (result == null)
+					result = caseLocationContainer(eObjectFileLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			default:
+				return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Resource Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Resource Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseResourceLocation(ResourceLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>File Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>File Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFileLocation(FileLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text File Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text File Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTextFileLocation(TextFileLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject File Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject File Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEObjectFileLocation(EObjectFileLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>IEMF Base Element</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>IEMF Base Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIEMFBaseElement(IEMFBaseElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Location Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Location Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLocationContainer(LocationContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLocation(Location object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTextContainer(TextContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEObjectContainer(EObjectContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch, but this
+	 * is the last case anyway. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // IdeSwitch
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/Activator.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/Activator.java
new file mode 100644
index 0000000..fd88eb1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/Activator.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Activator extends Plugin {
+
+	/** The plug-in ID. */
+	public static final String PLUGIN_ID = "org.eclipse.intent.mapping.emf.ide";
+
+	/** This plug-in's shared instance. */
+	private static Activator plugin;
+
+	/**
+	 * The {@link WorkspaceMappingBaseListener}.
+	 */
+	private WorkspaceMappingBaseListener mappingBaseListener;
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+
+		// make sure org.eclipse.intent.mapping.ide is activated
+		org.eclipse.intent.mapping.ide.Activator.getDefault();
+
+		mappingBaseListener = new WorkspaceMappingBaseListener(true);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(mappingBaseListener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+		plugin = null;
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(mappingBaseListener);
+		mappingBaseListener = null;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/WorkspaceMappingBaseListener.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/WorkspaceMappingBaseListener.java
new file mode 100644
index 0000000..d7bb957
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/WorkspaceMappingBaseListener.java
@@ -0,0 +1,321 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+
+/**
+ * An {@link IResourceChangeListener} that
+ * {@link org.eclipse.intent.mapping.base.IBaseRegistry#register(org.eclipse.intent.mapping.base.IBase)
+ * register}/
+ * {@link org.eclipse.intent.mapping.base.IBaseRegistry#unregister(org.eclipse.intent.mapping.base.IBase)
+ * unregister} {@link Base} of the {@link org.eclipse.intent.mapping.base.IBaseRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class WorkspaceMappingBaseListener implements IResourceChangeListener {
+
+	/**
+	 * The "Unable to load mapping base from " message.
+	 */
+	private static final String UNABLE_TO_LOAD_MAPPING_BASE_FROM = "Unable to load mapping base from ";
+
+	/**
+	 * Mapping of {@link IFile} to
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#register(org.eclipse.intent.mapping.base.IBase)
+	 * registered} {@link Base}.
+	 */
+	private final Map<IFile, Base> resourceToBase = new HashMap<IFile, Base>();
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param scan
+	 *            tells if we should scan the workspace
+	 */
+	public WorkspaceMappingBaseListener(boolean scan) {
+		if (scan) {
+			scan(ResourcesPlugin.getWorkspace().getRoot());
+		}
+	}
+
+	/**
+	 * Scans the given {@link IContainer} for bases.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 */
+	private void scan(IContainer container) {
+		IResource[] members;
+		if (container.isAccessible()) {
+			try {
+				members = container.members();
+				for (IResource member : members) {
+					if (member instanceof IContainer) {
+						scan((IContainer)member);
+					} else if (member instanceof IFile) {
+						register((IFile)member);
+					}
+				}
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+						UNABLE_TO_LOAD_MAPPING_BASE_FROM + e.getMessage(), e));
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
+	 */
+	public void resourceChanged(IResourceChangeEvent event) {
+		if (event.getDelta() != null) {
+			walkDelta(event.getDelta(), new HashMap<IPath, IResource>());
+		}
+	}
+
+	/**
+	 * Walks the {@link IResourceDelta} tree.
+	 * 
+	 * @param delta
+	 *            the root {@link IResourceDelta}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 */
+	private void walkDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources) {
+		processDelta(delta, movedResources);
+		for (IResourceDelta child : delta.getAffectedChildren()) {
+			walkDelta(child, movedResources);
+		}
+	}
+
+	/**
+	 * Processes the given {@link IResourceDelta} by
+	 * {@link WorkspaceListener#fireChange(fr.obeo.dsl.workspace.listener.change.IChange) firing}
+	 * {@link fr.obeo.dsl.workspace.listener.change.IChange IChange}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} to process
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 */
+	private void processDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources) {
+		if (delta.getResource() instanceof IFile) {
+			switch (delta.getKind()) {
+				case IResourceDelta.ADDED:
+					processAddedDelta(delta, movedResources);
+					break;
+
+				case IResourceDelta.REMOVED:
+					processRemovedDelta(delta, movedResources);
+					break;
+
+				case IResourceDelta.CHANGED:
+					processChangedDelta(delta);
+					break;
+
+				default:
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#CHANGED changed}
+	 * {@link IResourceDelta#getKind() kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#CHANGED changed}
+	 *            {@link IResourceDelta#getKind() kind}
+	 */
+	private void processChangedDelta(IResourceDelta delta) {
+		if ((delta.getFlags() & IResourceDelta.OPEN) != 0) {
+			if (delta.getResource().isAccessible()) {
+				register((IFile)delta.getResource());
+			} else {
+				unregister((IFile)delta.getResource());
+			}
+		} else if ((delta.getFlags() & IResourceDelta.DESCRIPTION) != 0) {
+			// nothing to do here
+		} else if ((delta.getFlags() & IResourceDelta.CONTENT) != 0) {
+			if (resourceToBase.get(delta.getResource()) == null) {
+				register((IFile)delta.getResource());
+			}
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#REMOVED removed}
+	 * {@link IResourceDelta#getKind() kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#REMOVED removed}
+	 *            {@link IResourceDelta#getKind() kind}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 */
+	private void processRemovedDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources) {
+		if ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
+			final IResource target = movedResources.get(delta.getMovedToPath());
+			if (target != null) {
+				resourceMoved((IFile)delta.getResource(), (IFile)target);
+			} else {
+				movedResources.put(delta.getResource().getFullPath(), delta.getResource());
+			}
+		} else {
+			unregister((IFile)delta.getResource());
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#ADDED added} {@link IResourceDelta#getKind()
+	 * kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#ADDED added}
+	 *            {@link IResourceDelta#getKind() kind}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 */
+	private void processAddedDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources) {
+		if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
+			final IResource source = movedResources.get(delta.getMovedFromPath());
+			if (source != null) {
+				resourceMoved((IFile)source, (IFile)delta.getResource());
+			} else {
+				movedResources.put(delta.getResource().getFullPath(), delta.getResource());
+			}
+		} else {
+			register((IFile)delta.getResource());
+		}
+	}
+
+	/**
+	 * Handles a {@link IFile} move.
+	 * 
+	 * @param source
+	 *            the source {@link IFile}
+	 * @param target
+	 *            the target {@link IFile}
+	 */
+	private void resourceMoved(IFile source, IFile target) {
+		if (MappingPackage.eNAME.equals(source.getFileExtension())) {
+			if (MappingPackage.eNAME.equals(target.getFileExtension())) {
+				final Base base = resourceToBase.remove(source);
+				resourceToBase.put(target, base);
+			} else {
+				unregister(source);
+			}
+		} else {
+			if (MappingPackage.eNAME.equals(target.getFileExtension())) {
+				register(target);
+			} else {
+				// nothing to do here
+			}
+		}
+
+	}
+
+	/**
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#register(org.eclipse.intent.mapping.base.IBase)
+	 * Unregisters} the {@link Base} stored in the given {@link IFile} if any, does nothing otherwise.
+	 * 
+	 * @param file
+	 *            the {@link IFile}
+	 */
+	private void register(IFile file) {
+		final Base base = getBaseFromFile(file);
+		if (base != null) {
+			resourceToBase.put(file, base);
+			MappingUtils.getMappingRegistry().register(base);
+		}
+	}
+
+	/**
+	 * Gets the {@link Base} from the given {@link IFile}.
+	 * 
+	 * @param file
+	 *            the {@link IFile}
+	 * @return the {@link Base} from the given {@link IFile} if nay, <code>null</code> otherwise
+	 */
+	private Base getBaseFromFile(IFile file) {
+		Base res = null;
+
+		if (MappingPackage.eNAME.equals(file.getFileExtension())) {
+			try {
+				final ResourceSet resourceSet = new ResourceSetImpl();
+				resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(MappingPackage.eNAME,
+						new XMIResourceFactoryImpl());
+
+				final Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(file
+						.getFullPath().toString(), true), true);
+				if (!resource.getContents().isEmpty()) {
+					if (resource.getContents().get(0) instanceof Base) {
+						res = (Base)resource.getContents().get(0);
+					} else {
+						Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+								UNABLE_TO_LOAD_MAPPING_BASE_FROM + file.getFullPath().toString()
+										+ " doesn't contain a Base."));
+					}
+				} else {
+					Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+							UNABLE_TO_LOAD_MAPPING_BASE_FROM + file.getFullPath().toString()
+									+ " resource is empty"));
+				}
+				// CHECKSTYLE:OFF
+			} catch (Exception e) {
+				// CHECKSTYLE:ON
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+						UNABLE_TO_LOAD_MAPPING_BASE_FROM + file.getFullPath().toString(), e));
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#unregister(org.eclipse.intent.mapping.base.IBase)
+	 * Unregisters} the {@link Base} corresponding to the given {@link IFile}.
+	 * 
+	 * @param file
+	 *            the {@link IFile}
+	 */
+	private void unregister(IFile file) {
+		final Base base = resourceToBase.remove(file);
+		if (base != null) {
+			MappingUtils.getMappingRegistry().unregister(base);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectLocationToMarkerAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectLocationToMarkerAdapterFactory.java
new file mode 100644
index 0000000..b3d3b7d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectLocationToMarkerAdapterFactory.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.adapter;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.ide.marker.IEObjectLocationMaker;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * {@link IEObjectLocation} to Marker {@link IAdapterFactory}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectLocationToMarkerAdapterFactory implements IAdapterFactory {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	@SuppressWarnings("unchecked")
+	public IMarker getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		IMarker res;
+
+		if (adaptableObject instanceof IEObjectLocation) {
+			final IEObjectLocation eObjLocation = (IEObjectLocation)adaptableObject;
+			final IMarker existingMarker = IdeMappingUtils.getMarker(eObjLocation);
+			if (existingMarker != null) {
+				res = existingMarker;
+			} else {
+				final IFileLocation fileLocation = IdeMappingUtils.getContainingFileLocation(eObjLocation);
+				final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(Path.fromPortableString(
+						fileLocation.getFullPath()));
+				try {
+					res = file.createMarker(IEObjectLocationMaker.EOBJECT_LOCATION_ID);
+					final EObject eObject = (EObject)MappingUtils.getConnectorRegistry().getElement(
+							eObjLocation);
+					res.setAttribute(IEObjectLocationMaker.URI_ATTRIBUTE, EcoreUtil.getURI(eObject)
+							.toString());
+				} catch (CoreException e) {
+					res = null;
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class<?>[] getAdapterList() {
+		return new Class[] {IMarker.class };
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectToFileAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectToFileAdapterFactory.java
new file mode 100644
index 0000000..72712a0
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/EObjectToFileAdapterFactory.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.adapter;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * Adapts {@link EObject} to {@link IFile}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectToFileAdapterFactory implements IAdapterFactory {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	@SuppressWarnings("unchecked")
+	public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		final IFile res;
+
+		if (adaptableObject instanceof EObject && ((EObject)adaptableObject).eResource() != null
+				&& ((EObject)adaptableObject).eResource().getURI() != null) {
+			final URI uri = ((EObject)adaptableObject).eResource().getURI();
+			if (uri.isPlatformResource()) {
+				final String path = ((EObject)adaptableObject).eResource().getURI().toString().substring(
+						"platform:/resource".length());
+				res = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path));
+			} else {
+				res = null;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class<?>[] getAdapterList() {
+		return new Class[] {IFile.class };
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/MarkerToEObjectLocationDescriptor.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/MarkerToEObjectLocationDescriptor.java
new file mode 100644
index 0000000..31faeda
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/adapter/MarkerToEObjectLocationDescriptor.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.adapter;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.emf.ide.marker.IEObjectLocationMaker;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.adapter.IMarkerToLocationDescriptor;
+
+/**
+ * Marker to {@link ILocationDescriptor} descriptor.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MarkerToEObjectLocationDescriptor implements IMarkerToLocationDescriptor {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.adapter.IMarkerToLocationDescriptor#getAdapter(org.eclipse.core.resources.IMarker)
+	 */
+	public ILocationDescriptor getAdapter(IMarker marker) {
+		ILocationDescriptor res = null;
+
+		try {
+			if (marker.isSubtypeOf(EValidator.MARKER)) {
+				final String uri = (String)marker.getAttribute(IEObjectLocationMaker.URI_ATTRIBUTE);
+				// TODO we should change this to use a global ResourceSet...
+				final ResourceSet rs = new ResourceSetImpl();
+				final EObject eObject = rs.getEObject(URI.createURI(uri), true);
+				res = IdeMappingUtils.adapt(eObject, ILocationDescriptor.class);
+			}
+		} catch (CoreException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectContainerProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectContainerProvider.java
new file mode 100644
index 0000000..ae67d37
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectContainerProvider.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.connector;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * {@link EObject} -> {@link IFile}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectContainerProvider implements IContainerProvider {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IContainerProvider#getContainer(java.lang.Object)
+	 */
+	public Object getContainer(Object element) {
+		final Object res;
+
+		if (element instanceof EObject && ((EObject)element).eResource() != null && ((EObject)element)
+				.eResource().getURI() != null) {
+			final URI uri = ((EObject)element).eResource().getURI();
+			if (uri.isPlatformResource()) {
+				final String path = ((EObject)element).eResource().getURI().toString().substring(
+						"platform:/resource".length());
+				res = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path));
+			} else {
+				res = null;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectFileConnectorDelegate.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectFileConnectorDelegate.java
new file mode 100644
index 0000000..6890aa9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/EObjectFileConnectorDelegate.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.connector;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.emf.IEObjectContainer;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector.EObjectContainerHelper;
+import org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.connector.AbstractFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * {@link IEObjectFileLocation} delegate.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectFileConnectorDelegate extends AbstractFileConnectorDelegate {
+
+	/**
+	 * The {@link IFileType}.
+	 */
+	private static final IFileType FILE_TYPE = MappingUtils.getFileTypeRegistry().getFileType(
+			"org.eclipse.emf.ecore.xmi");
+
+	/**
+	 * The {@link EObjectContainerHelper}.
+	 */
+	private final EObjectContainerHelper eObjectContainerHelper = new EObjectContainerHelper();
+
+	/**
+	 * Mapping of {@link IEObjectFileLocation#getFullPath() full path} to {@link Resource}.
+	 */
+	private final Map<String, Resource> knownResources = new HashMap<String, Resource>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getFileType()
+	 */
+	public IFileType getFileType() {
+		return FILE_TYPE;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getFileLocationType()
+	 */
+	public Class<? extends IFileLocation> getFileLocationType() {
+		return IEObjectFileLocation.class;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#initLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      org.eclipse.intent.mapping.ide.resource.IFileLocation, org.eclipse.core.resources.IFile)
+	 */
+	public void initLocation(ILocationContainer container, IFileLocation location, IFile element) {
+		final ResourceSet rs = new ResourceSetImpl();
+		final Resource resource = rs.getResource(URI.createPlatformResourceURI(element.getFullPath()
+				.toPortableString(), true), true);
+		knownResources.put(location.getFullPath(), resource);
+		try {
+			eObjectContainerHelper.updateEObjectContainer(container, (IEObjectContainer)location, resource);
+			// CHECKSTYLE:OFF
+		} catch (Exception e) {
+			// CHECKSTYLE:ON
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getElement(org.eclipse.intent.mapping.ide.resource.IFileLocation)
+	 */
+	public Object getElement(IFileLocation location) {
+		if (!knownResources.containsKey(location.getFullPath())) {
+			initLocation(location.getContainer(), location, (IFile)super.getElement(location));
+		}
+
+		return knownResources.get(location.getFullPath());
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOResourceNodeConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOResourceNodeConnector.java
new file mode 100644
index 0000000..84c61a3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOResourceNodeConnector.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.connector;
+
+import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.intent.mapping.emf.connector.CDOResourceNodeConnector;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Ide {@link CDOResourceNodeConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeCDOResourceNodeConnector extends CDOResourceNodeConnector {
+
+	@Override
+	protected Object adapt(Object element) {
+		final Object res;
+
+		final CDOResourceNode adaptedElement = IdeMappingUtils.adapt(element, CDOResourceNode.class);
+		if (adaptedElement != null) {
+			res = adaptedElement;
+		} else {
+			res = super.adapt(element);
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOViewConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOViewConnector.java
new file mode 100644
index 0000000..227a2bf
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeCDOViewConnector.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.connector;
+
+import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.intent.mapping.emf.connector.CDOViewConnector;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Ide {@link CDOViewConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeCDOViewConnector extends CDOViewConnector {
+
+	@Override
+	protected Object adapt(Object element) {
+		final Object res;
+
+		final CDOResourceNode adaptedElement = IdeMappingUtils.adapt(element, CDOResourceNode.class);
+		if (adaptedElement != null) {
+			res = adaptedElement;
+		} else {
+			res = super.adapt(element);
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeEObjectConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeEObjectConnector.java
new file mode 100644
index 0000000..fd51017
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/connector/IdeEObjectConnector.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.connector;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Ide implementation of {@link EObjectConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeEObjectConnector extends EObjectConnector {
+
+	@Override
+	protected Object adapt(Object element) {
+		final Object res;
+
+		final EObject eObject = IdeMappingUtils.adapt(element, EObject.class);
+		if (eObject != null) {
+			res = eObject;
+		} else {
+			final Setting setting = IdeMappingUtils.adapt(element, Setting.class);
+			if (setting != null) {
+				res = setting;
+			} else {
+				res = super.adapt(element);
+			}
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/marker/IEObjectLocationMaker.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/marker/IEObjectLocationMaker.java
new file mode 100644
index 0000000..6a33520
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/marker/IEObjectLocationMaker.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.marker;
+
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.intent.mapping.emf.ide.Activator;
+
+/**
+ * Place holder for location marker constants.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IEObjectLocationMaker {
+
+	/**
+	 * The EObject location marker ID.
+	 */
+	String EOBJECT_LOCATION_ID = Activator.PLUGIN_ID + ".eobjectLocationMarker";
+
+	/**
+	 * The URI attribute.
+	 */
+	String URI_ATTRIBUTE = EValidator.URI_ATTRIBUTE;
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/resource/IEObjectFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/resource/IEObjectFileLocation.java
new file mode 100644
index 0000000..6a3886d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf.ide/src/org/eclipse/intent/mapping/emf/ide/resource/IEObjectFileLocation.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.resource;
+
+import org.eclipse.intent.mapping.emf.IEObjectContainer;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * {@link org.eclipse.emf.ecore.EObject EObject} {@link IFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IEObjectFileLocation extends IFileLocation, IEObjectContainer {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.emf/.checkstyle
new file mode 100644
index 0000000..46c61e2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src-gen"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/.classpath b/mapping/plugins/org.eclipse.intent.mapping.emf/.classpath
new file mode 100644
index 0000000..756f428
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/.project b/mapping/plugins/org.eclipse.intent.mapping.emf/.project
new file mode 100644
index 0000000..f32a0e2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.sirius.nature.modelingproject</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.emf/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..eaed321
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.intent.mapping,
+ org.eclipse.intent.mapping.emf,
+ org.eclipse.intent.mapping.emf.connector,
+ org.eclipse.intent.mapping.impl,
+ org.eclipse.intent.mapping.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.cdo;visibility:=reexport,
+ org.eclipse.intent.mapping;bundle-version="0.10.0",
+ org.eclipse.emf.edit,
+ org.eclipse.emf.compare,
+ org.eclipse.emf.ecore.xmi,
+ com.google.guava;bundle-version="[15.0.0,16.0.0)",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.emf.cdo.net4j
+Bundle-ActivationPolicy: lazy
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/build.properties b/mapping/plugins/org.eclipse.intent.mapping.emf/build.properties
new file mode 100644
index 0000000..7f0c2ff
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.ecore b/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.ecore
new file mode 100644
index 0000000..4809168
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.ecore
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mapping" nsURI="http://www.eclipse.org/intent/mapping" nsPrefix="mapping">
+  <eClassifiers xsi:type="ecore:EClass" name="Location" abstract="true" eSuperTypes="#//IEMFBaseElement #//LocationContainer">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceLinks" upperBound="-1"
+        eType="#//Link" eOpposite="#//Link/target"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="targetLinks" upperBound="-1"
+        eType="#//Link" containment="true" eOpposite="#//Link/source"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="container" eType="#//LocationContainer"
+        eOpposite="#//LocationContainer/contents"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//Type"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="markedAsDeleted" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Link" eSuperTypes="#//IEMFBaseElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+        eType="#//Location" eOpposite="#//Location/targetLinks"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+        eType="#//Location" eOpposite="#//Location/sourceLinks"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//Type"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reports" upperBound="-1"
+        eType="#//Report" eOpposite="#//Report/link"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Base" eSuperTypes="#//IEMFBaseElement #//LocationContainer">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reports" upperBound="-1"
+        eType="#//Report" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="containerProviders" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IEMFBaseElement" abstract="true" interface="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TextLocation" eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="startOffset" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="-1"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="endOffset" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TextContainer" abstract="true" interface="true"
+      eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="text" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EObjectLocation" eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URIFragment" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="savedURIFragment" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="featureName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="Type" instanceClassName="java.io.Serializable"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LocationContainer" abstract="true" interface="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+        eType="#//Location" containment="true" eOpposite="#//Location/container"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Report" eSuperTypes="#//IEMFBaseElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="link" lowerBound="1" eType="#//Link"
+        eOpposite="#//Link/reports"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Couple">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EObjectContainer" abstract="true" interface="true"
+      eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="XMIContent" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="savedURIFragments" upperBound="-1"
+        eType="#//Couple" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOResourceNodeLocation" abstract="true"
+      interface="true" eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOFileLocation" abstract="true" interface="true"
+      eSuperTypes="#//CDOResourceNodeLocation"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOFolderLocation" eSuperTypes="#//CDOResourceNodeLocation"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CDORepositoryLocation" eSuperTypes="#//Location">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URL" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="UUID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="branchID" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOBinaryResourceLocation" eSuperTypes="#//CDOFileLocation"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOTextResourceLocation" eSuperTypes="#//CDOFileLocation #//TextContainer"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CDOResourceLocation" eSuperTypes="#//CDOFileLocation #//EObjectContainer"/>
+</ecore:EPackage>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.genmodel b/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.genmodel
new file mode 100644
index 0000000..51b180a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/model/mapping.genmodel
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=" Copyright (c) 2015 Obeo.&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License v1.0&#xA; which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA; Contributors:&#xA;    Obeo - initial API and implementation and/or initial documentation&#xA;    ...&#xA;"
+    modelDirectory="/org.eclipse.intent.mapping.emf/src-gen" editDirectory="/org.eclipse.intent.mapping.emf.edit/src-gen"
+    editorDirectory="/org.eclipse.intent.mapping.emf.editor/src-gen" modelPluginID="org.eclipse.intent.mapping.emf"
+    modelName="Mapping" rootExtendsInterface="org.eclipse.emf.cdo.CDOObject" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl"
+    reflectiveDelegation="true" codeFormatting="true" testsDirectory="/org.eclipse.intent.mapping.emf.tests/src-gen"
+    importerID="org.eclipse.emf.importer.cdo" featureDelegation="Reflective" complianceLevel="5.0"
+    copyrightFields="false" publicConstructors="true" providerRootExtendsClass="org.eclipse.emf.cdo.edit.CDOItemProviderAdapter"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>mapping.ecore</foreignModel>
+  <modelPluginVariables>CDO=org.eclipse.emf.cdo</modelPluginVariables>
+  <genPackages prefix="Mapping" basePackage="org.eclipse.intent" disposableProviderFactory="true"
+      ecorePackage="mapping.ecore#/">
+    <genDataTypes ecoreDataType="mapping.ecore#//Type"/>
+    <genClasses image="false" ecoreClass="mapping.ecore#//Location">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mapping.ecore#//Location/sourceLinks"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mapping.ecore#//Location/targetLinks"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference mapping.ecore#//Location/container"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Location/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Location/markedAsDeleted"/>
+    </genClasses>
+    <genClasses ecoreClass="mapping.ecore#//Link">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Link/description"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference mapping.ecore#//Link/source"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mapping.ecore#//Link/target"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Link/type"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mapping.ecore#//Link/reports"/>
+    </genClasses>
+    <genClasses ecoreClass="mapping.ecore#//Base">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Base/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mapping.ecore#//Base/reports"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Base/containerProviders"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//IEMFBaseElement"/>
+    <genClasses ecoreClass="mapping.ecore#//TextLocation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//TextLocation/startOffset"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//TextLocation/endOffset"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//TextContainer">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//TextContainer/text"/>
+    </genClasses>
+    <genClasses ecoreClass="mapping.ecore#//EObjectLocation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//EObjectLocation/URIFragment"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//EObjectLocation/savedURIFragment"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//EObjectLocation/featureName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//EObjectLocation/index"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//LocationContainer">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mapping.ecore#//LocationContainer/contents"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//Report">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Report/description"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mapping.ecore#//Report/link"/>
+    </genClasses>
+    <genClasses ecoreClass="mapping.ecore#//Couple">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Couple/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//Couple/value"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//EObjectContainer">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//EObjectContainer/XMIContent"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mapping.ecore#//EObjectContainer/savedURIFragments"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//CDOResourceNodeLocation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//CDOResourceNodeLocation/path"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="mapping.ecore#//CDOFileLocation"/>
+    <genClasses ecoreClass="mapping.ecore#//CDOFolderLocation"/>
+    <genClasses ecoreClass="mapping.ecore#//CDORepositoryLocation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//CDORepositoryLocation/URL"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//CDORepositoryLocation/UUID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//CDORepositoryLocation/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mapping.ecore#//CDORepositoryLocation/branchID"/>
+    </genClasses>
+    <genClasses ecoreClass="mapping.ecore#//CDOBinaryResourceLocation"/>
+    <genClasses ecoreClass="mapping.ecore#//CDOTextResourceLocation"/>
+    <genClasses ecoreClass="mapping.ecore#//CDOResourceLocation"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/model/representations.aird b/mapping/plugins/org.eclipse.intent.mapping.emf/model/representations.aird
new file mode 100644
index 0000000..3dff784
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/model/representations.aird
@@ -0,0 +1,578 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_WIYxUN0nEeSrTZVsNOV2JQ" selectedViews="_Wsb5kN0nEeSrTZVsNOV2JQ _WsgLAN0nEeSrTZVsNOV2JQ _W4nUYN0nEeSrTZVsNOV2JQ" version="8.1.1">
+  <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+  <models xmi:type="ecore:EPackage" href="mapping.ecore#/"/>
+  <models xmi:type="genmodel:GenModel" href="mapping.genmodel#/"/>
+  <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_Wsb5kN0nEeSrTZVsNOV2JQ" initialized="true">
+    <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
+  </ownedViews>
+  <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_WsgLAN0nEeSrTZVsNOV2JQ" initialized="true">
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_yuNMIAkiEeWFVOi_8hW2kQ" name="mapping class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_yuNMJgkiEeWFVOi_8hW2kQ" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_yuNMJwkiEeWFVOi_8hW2kQ" type="Sirius" element="_yuNMIAkiEeWFVOi_8hW2kQ" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_G7VMwAkjEeWFVOi_8hW2kQ" type="2003" element="_G61dgAkjEeWFVOi_8hW2kQ">
+            <children xmi:type="notation:Node" xmi:id="_G7VMwwkjEeWFVOi_8hW2kQ" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_G7VMxAkjEeWFVOi_8hW2kQ" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_a-RHID6kEeaW46TWXHz9iw" type="3010" element="_a8u2ED6kEeaW46TWXHz9iw">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_a-RHIT6kEeaW46TWXHz9iw"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_Hy_XkMHWEeangZPFpBYoMg" type="3010" element="_Hyav0MHWEeangZPFpBYoMg">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_Hy_XkcHWEeangZPFpBYoMg"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_G7VMxQkjEeWFVOi_8hW2kQ"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_G7VMxgkjEeWFVOi_8hW2kQ"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_G7VMwQkjEeWFVOi_8hW2kQ" fontName="Segoe UI" fontHeight="8" italic="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G7VMwgkjEeWFVOi_8hW2kQ" x="100" y="211" width="177" height="87"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_KiL-sAkjEeWFVOi_8hW2kQ" type="2003" element="_Kh_xcAkjEeWFVOi_8hW2kQ">
+            <children xmi:type="notation:Node" xmi:id="_KiL-swkjEeWFVOi_8hW2kQ" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_KiL-tAkjEeWFVOi_8hW2kQ" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_8I_2IAkjEeWFVOi_8hW2kQ" type="3010" element="_8IbOYAkjEeWFVOi_8hW2kQ">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_8I_2IQkjEeWFVOi_8hW2kQ"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_a-WmsD6kEeaW46TWXHz9iw" type="3010" element="_a82x4D6kEeaW46TWXHz9iw">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_a-XNwD6kEeaW46TWXHz9iw"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_KiL-tQkjEeWFVOi_8hW2kQ"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_KiL-tgkjEeWFVOi_8hW2kQ"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_KiL-sQkjEeWFVOi_8hW2kQ" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KiL-sgkjEeWFVOi_8hW2kQ" x="100" y="426" width="177" height="87"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_reRv0AkkEeWFVOi_8hW2kQ" type="2003" element="_rdzOsAkkEeWFVOi_8hW2kQ">
+            <children xmi:type="notation:Node" xmi:id="_reRv0wkkEeWFVOi_8hW2kQ" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_reRv1AkkEeWFVOi_8hW2kQ" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_LsCnsAtdEeWH1PvRpPAbiQ" type="3010" element="_Lq_e0AtdEeWH1PvRpPAbiQ">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_LsCnsQtdEeWH1PvRpPAbiQ"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_reRv1QkkEeWFVOi_8hW2kQ"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_reRv1gkkEeWFVOi_8hW2kQ"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_reRv0QkkEeWFVOi_8hW2kQ" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_reRv0gkkEeWFVOi_8hW2kQ" x="529" y="205" width="144" height="100"/>
+          </children>
+          <children xmi:type="notation:Shape" xmi:id="_Z-_WwB_TEeWosIVuL4CkTA" type="Note" fontName="Ubuntu" description="Possible Location implementations:&#xA;- TextLocation&#xA;- ModelLocation&#xA;- JavaLocation&#xA;- ..." fillColor="13369343" transparency="0" lineColor="6737151" lineWidth="1">
+            <children xmi:type="notation:BasicDecorationNode" xmi:id="_Z_DoMB_TEeWosIVuL4CkTA" type="DiagramName">
+              <element xsi:nil="true"/>
+            </children>
+            <children xmi:type="notation:BasicDecorationNode" xmi:id="_Z_DoMR_TEeWosIVuL4CkTA" type="Description">
+              <element xsi:nil="true"/>
+            </children>
+            <styles xmi:type="notation:TextStyle" xmi:id="_Z-_WwR_TEeWosIVuL4CkTA"/>
+            <styles xmi:type="notation:LineTypeStyle" xmi:id="_Z-_Wwh_TEeWosIVuL4CkTA"/>
+            <element xsi:nil="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z-_Wwx_TEeWosIVuL4CkTA" x="5" y="110"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dYa1YD6kEeaW46TWXHz9iw" type="2003" element="_dXUCID6kEeaW46TWXHz9iw">
+            <children xmi:type="notation:Node" xmi:id="_dYhjED6kEeaW46TWXHz9iw" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_dYixMD6kEeaW46TWXHz9iw" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_dYixMT6kEeaW46TWXHz9iw"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_dYixMj6kEeaW46TWXHz9iw"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_dYa1YT6kEeaW46TWXHz9iw" fontName="Ubuntu" fontHeight="8" italic="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYa1Yj6kEeaW46TWXHz9iw" x="350" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_hbHAID-TEeatdPECk4x2fg" type="2003" element="_hZcMMD-TEeatdPECk4x2fg">
+            <children xmi:type="notation:Node" xmi:id="_hbT0cD-TEeatdPECk4x2fg" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_hbVCkD-TEeatdPECk4x2fg" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_hbYF4D-TEeatdPECk4x2fg" type="3010" element="_hamCwD-TEeatdPECk4x2fg">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_hbYF4T-TEeatdPECk4x2fg"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_hbVCkT-TEeatdPECk4x2fg"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_hbVCkj-TEeatdPECk4x2fg"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_hbHAIT-TEeatdPECk4x2fg" fontName="Ubuntu" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbHAIj-TEeatdPECk4x2fg" x="530" y="420"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_yuNMKAkiEeWFVOi_8hW2kQ"/>
+          <edges xmi:type="notation:Edge" xmi:id="_rhdxQAklEeWFVOi_8hW2kQ" type="4001" element="_rhFWwAklEeWFVOi_8hW2kQ" source="_G7VMwAkjEeWFVOi_8hW2kQ" target="_KiL-sAkjEeWFVOi_8hW2kQ">
+            <children xmi:type="notation:Node" xmi:id="_rhdxRAklEeWFVOi_8hW2kQ" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rhdxRQklEeWFVOi_8hW2kQ" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rhdxRgklEeWFVOi_8hW2kQ" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rhdxRwklEeWFVOi_8hW2kQ" x="13" y="-45"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rhj34AklEeWFVOi_8hW2kQ" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rhj34QklEeWFVOi_8hW2kQ" x="-21" y="-56"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_rhdxQQklEeWFVOi_8hW2kQ" routing="Rectilinear"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_rhdxQgklEeWFVOi_8hW2kQ" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rhdxQwklEeWFVOi_8hW2kQ" points="[8, 43, 37, -132]$[8, 163, 37, -12]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rhj34gklEeWFVOi_8hW2kQ" id="(0.6685393258426966,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rhj34wklEeWFVOi_8hW2kQ" id="(0.4971751412429379,0.1412565026010404)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_sqDJ8AklEeWFVOi_8hW2kQ" type="4001" element="_spw2EAklEeWFVOi_8hW2kQ" source="_G7VMwAkjEeWFVOi_8hW2kQ" target="_KiL-sAkjEeWFVOi_8hW2kQ">
+            <children xmi:type="notation:Node" xmi:id="_sqDJ9AklEeWFVOi_8hW2kQ" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sqDJ9QklEeWFVOi_8hW2kQ" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_sqDJ9gklEeWFVOi_8hW2kQ" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sqDJ9wklEeWFVOi_8hW2kQ" x="3" y="48"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_sqDJ-AklEeWFVOi_8hW2kQ" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sqDJ-QklEeWFVOi_8hW2kQ" x="-11" y="61"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_sqDJ8QklEeWFVOi_8hW2kQ" routing="Rectilinear"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_sqDJ8gklEeWFVOi_8hW2kQ" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sqDJ8wklEeWFVOi_8hW2kQ" points="[-92, 43, -63, -132]$[-92, 163, -63, -12]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sqDJ-gklEeWFVOi_8hW2kQ" id="(0.6685393258426966,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sqDJ-wklEeWFVOi_8hW2kQ" id="(0.4971751412429379,0.1412565026010404)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_dYoQwD6kEeaW46TWXHz9iw" type="4001" element="_dYJIkD6kEeaW46TWXHz9iw" source="_G7VMwAkjEeWFVOi_8hW2kQ" target="_dYa1YD6kEeaW46TWXHz9iw">
+            <children xmi:type="notation:Node" xmi:id="_dYqtAD6kEeaW46TWXHz9iw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYqtAT6kEeaW46TWXHz9iw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dYr7ID6kEeaW46TWXHz9iw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYr7IT6kEeaW46TWXHz9iw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dYsiMD6kEeaW46TWXHz9iw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYsiMT6kEeaW46TWXHz9iw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_dYoQwT6kEeaW46TWXHz9iw" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_dYoQwj6kEeaW46TWXHz9iw" fontName="Ubuntu" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dYoQwz6kEeaW46TWXHz9iw" points="[-1, -1, -191, 145]$[-1, -72, -191, 74]$[214, -72, 24, 74]$[214, -98, 24, 48]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYwzoD6kEeaW46TWXHz9iw" id="(0.8587570621468926,0.022988505747126436)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYwzoT6kEeaW46TWXHz9iw" id="(0.008333333333333333,0.52)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_dYxasD6kEeaW46TWXHz9iw" type="4001" element="_dYLk0D6kEeaW46TWXHz9iw" source="_reRv0AkkEeWFVOi_8hW2kQ" target="_dYa1YD6kEeaW46TWXHz9iw">
+            <children xmi:type="notation:Node" xmi:id="_dYyBwD6kEeaW46TWXHz9iw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYyBwT6kEeaW46TWXHz9iw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dYyo0D6kEeaW46TWXHz9iw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYyo0T6kEeaW46TWXHz9iw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dYyo0j6kEeaW46TWXHz9iw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dYyo0z6kEeaW46TWXHz9iw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_dYxasT6kEeaW46TWXHz9iw" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_dYxasj6kEeaW46TWXHz9iw" fontName="Ubuntu" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dYxasz6kEeaW46TWXHz9iw" points="[-1, -13, 72, 103]$[-1, -84, 72, 32]$[-99, -84, -26, 32]$[-99, -110, -26, 6]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYzP4D6kEeaW46TWXHz9iw" id="(0.16666666666666666,0.14)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dYzP4T6kEeaW46TWXHz9iw" id="(0.9333333333333333,0.94)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_dYz28D6kEeaW46TWXHz9iw" type="4001" element="_dYREYD6kEeaW46TWXHz9iw" source="_G7VMwAkjEeWFVOi_8hW2kQ" target="_dYa1YD6kEeaW46TWXHz9iw">
+            <children xmi:type="notation:Node" xmi:id="_dY0eAD6kEeaW46TWXHz9iw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dY0eAT6kEeaW46TWXHz9iw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dY1FED6kEeaW46TWXHz9iw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dY1FET6kEeaW46TWXHz9iw" x="-1" y="-20"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dY1FEj6kEeaW46TWXHz9iw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dY1FEz6kEeaW46TWXHz9iw" x="-6" y="-46"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_dYz28T6kEeaW46TWXHz9iw" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_dYz28j6kEeaW46TWXHz9iw" fontName="Ubuntu" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dYz28z6kEeaW46TWXHz9iw" points="[88, 33, -134, 227]$[222, 33, 0, 227]$[222, -145, 0, 49]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dY1sID6kEeaW46TWXHz9iw" id="(0.4971751412429379,0.4942528735632184)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dY1sIT6kEeaW46TWXHz9iw" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_hbcXUD-TEeatdPECk4x2fg" type="4001" element="_hat-kD-TEeatdPECk4x2fg" source="_reRv0AkkEeWFVOi_8hW2kQ" target="_hbHAID-TEeatdPECk4x2fg">
+            <children xmi:type="notation:Node" xmi:id="_hbezkD-TEeatdPECk4x2fg" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbezkT-TEeatdPECk4x2fg" x="14" y="-52"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_hbgBsD-TEeatdPECk4x2fg" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbgBsT-TEeatdPECk4x2fg" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_hbgowD-TEeatdPECk4x2fg" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbgowT-TEeatdPECk4x2fg" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_hbcXUT-TEeatdPECk4x2fg" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_hbcXUj-TEeatdPECk4x2fg" fontColor="7490599" fontName="Ubuntu" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hbcXUz-TEeatdPECk4x2fg" points="[3, 49, -16, -166]$[3, 166, -16, -49]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hblhQD-TEeatdPECk4x2fg" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hblhQT-TEeatdPECk4x2fg" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_hbmIUD-TEeatdPECk4x2fg" type="4001" element="_ha6y4D-TEeatdPECk4x2fg" source="_KiL-sAkjEeWFVOi_8hW2kQ" target="_hbHAID-TEeatdPECk4x2fg">
+            <children xmi:type="notation:Node" xmi:id="_hbnWcD-TEeatdPECk4x2fg" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbnWcT-TEeatdPECk4x2fg" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_hbnWcj-TEeatdPECk4x2fg" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbnWcz-TEeatdPECk4x2fg" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_hbn9gD-TEeatdPECk4x2fg" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbn9gT-TEeatdPECk4x2fg" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_hbmIUT-TEeatdPECk4x2fg" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_hbmIUj-TEeatdPECk4x2fg" fontName="Ubuntu" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hbmIUz-TEeatdPECk4x2fg" points="[325, 85, 325, 85]$[913, 564, 913, 564]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hbokkD-TEeatdPECk4x2fg" id="(0.4971751412429379,0.4942528735632184)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hbokkT-TEeatdPECk4x2fg" id="(0.5,0.5)"/>
+          </edges>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_5tFNUQkjEeWFVOi_8hW2kQ" source="DANNOTATION_CUSTOMIZATION_KEY">
+        <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_5tFNUgkjEeWFVOi_8hW2kQ">
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_QQUsYgnKEeWATYXIsIrDKQ" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_OWQyQgtdEeWH1PvRpPAbiQ" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_VqPkEB_TEeWosIVuL4CkTA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_VqPkER_TEeWosIVuL4CkTA" showIcon="false" labelExpression="service:renderEOpposite">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </beginLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_VqPkEh_TEeWosIVuL4CkTA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_dYSSgj6kEeaW46TWXHz9iw" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_dYSSgz6kEeaW46TWXHz9iw" showIcon="false" labelExpression="service:renderEOpposite">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </beginLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_dYSShD6kEeaW46TWXHz9iw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_hanQ4j-TEeatdPECk4x2fg" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_havMsz-TEeatdPECk4x2fg" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_havMtD-TEeatdPECk4x2fg" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_havzwD-TEeatdPECk4x2fg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HydMEMHWEeangZPFpBYoMg" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_JZKEoAkkEeWFVOi_8hW2kQ">
+            <key xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_QQUsYAnKEeWATYXIsIrDKQ">
+              <key xmi:type="ecore:EAttribute" href="mapping.ecore#//Link/description"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_QQUsYQnKEeWATYXIsIrDKQ" key="_8IbOYAkjEeWFVOi_8hW2kQ">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_QQUsYwnKEeWATYXIsIrDKQ" value="_QQUsYgnKEeWATYXIsIrDKQ">
+                  <key xmi:type="ecore:EClass" href="mapping.ecore#//Link"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_OWQyQAtdEeWH1PvRpPAbiQ">
+              <key xmi:type="ecore:EAttribute" href="mapping.ecore#//Base/name"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_OWQyQQtdEeWH1PvRpPAbiQ" key="_Lq_e0AtdEeWH1PvRpPAbiQ">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_OWW44AtdEeWH1PvRpPAbiQ" value="_OWQyQgtdEeWH1PvRpPAbiQ">
+                  <key xmi:type="ecore:EClass" href="mapping.ecore#//Base"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_hanQ4D-TEeatdPECk4x2fg">
+              <key xmi:type="ecore:EAttribute" href="mapping.ecore#//Report/description"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_hanQ4T-TEeatdPECk4x2fg" key="_hamCwD-TEeatdPECk4x2fg">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_han38D-TEeatdPECk4x2fg" value="_hanQ4j-TEeatdPECk4x2fg">
+                  <key xmi:type="ecore:EClass" href="mapping.ecore#//Report"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HyclAMHWEeangZPFpBYoMg">
+              <key xmi:type="ecore:EAttribute" href="mapping.ecore#//Location/markedAsDeleted"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HyclAcHWEeangZPFpBYoMg" key="_Hyav0MHWEeangZPFpBYoMg">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HydMEcHWEeangZPFpBYoMg" value="_HydMEMHWEeangZPFpBYoMg">
+                  <key xmi:type="ecore:EClass" href="mapping.ecore#//Location"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_O1hX8AkqEeWFVOi_8hW2kQ">
+            <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6Bfp0AtiEeWH1PvRpPAbiQ">
+              <key xmi:type="ecore:EReference" href="mapping.ecore#//Location/targetLinks"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6Bfp0QtiEeWH1PvRpPAbiQ" key="_spw2EAklEeWFVOi_8hW2kQ">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6Bfp1QtiEeWH1PvRpPAbiQ" value="_VqPkEB_TEeWosIVuL4CkTA">
+                  <key xmi:type="ecore:EPackage" href="mapping.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_dYSSgD6kEeaW46TWXHz9iw">
+              <key xmi:type="ecore:EReference" href="mapping.ecore#//Location/container"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_dYSSgT6kEeaW46TWXHz9iw" key="_dYREYD6kEeaW46TWXHz9iw">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_dYSShT6kEeaW46TWXHz9iw" value="_dYSSgj6kEeaW46TWXHz9iw">
+                  <key xmi:type="ecore:EPackage" href="mapping.ecore#/"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_havMsD-TEeatdPECk4x2fg">
+            <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_havMsT-TEeatdPECk4x2fg">
+              <key xmi:type="ecore:EReference" href="mapping.ecore#//Base/reports"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_havMsj-TEeatdPECk4x2fg" key="_hat-kD-TEeatdPECk4x2fg">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_havzwT-TEeatdPECk4x2fg" value="_havMsz-TEeatdPECk4x2fg">
+                  <key xmi:type="ecore:EPackage" href="mapping.ecore#/"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_G61dgAkjEeWFVOi_8hW2kQ" name="Location" tooltipText="" outgoingEdges="_rhFWwAklEeWFVOi_8hW2kQ _spw2EAklEeWFVOi_8hW2kQ _dYJIkD6kEeaW46TWXHz9iw _dYREYD6kEeaW46TWXHz9iw" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Location"/>
+        <semanticElements xmi:type="ecore:EClass" href="mapping.ecore#//Location"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_TiU2QCCMEeWW2MIM32qjYw" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_TiU2QSCMEeWW2MIM32qjYw"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_TiU2QiCMEeWW2MIM32qjYw" red="125" green="125" blue="125"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_TiU2QyCMEeWW2MIM32qjYw" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_TiU2RCCMEeWW2MIM32qjYw" red="228" green="228" blue="228"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_a8u2ED6kEeaW46TWXHz9iw" name="type : Type" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Location/type"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Location/type"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_a8xSUD6kEeaW46TWXHz9iw" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_a8xSUT6kEeaW46TWXHz9iw"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_a8xSUj6kEeaW46TWXHz9iw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_a8x5YD6kEeaW46TWXHz9iw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Hyav0MHWEeangZPFpBYoMg" name="markedAsDeleted : EBoolean = false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Location/markedAsDeleted"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Location/markedAsDeleted"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HydzIMHWEeangZPFpBYoMg" labelFormat="bold" labelAlignment="LEFT" description="_HydMEMHWEeangZPFpBYoMg">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HydzIcHWEeangZPFpBYoMg"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HydzIsHWEeangZPFpBYoMg"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HydzI8HWEeangZPFpBYoMg"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_Kh_xcAkjEeWFVOi_8hW2kQ" name="Link" tooltipText="" outgoingEdges="_ha6y4D-TEeatdPECk4x2fg" incomingEdges="_rhFWwAklEeWFVOi_8hW2kQ _spw2EAklEeWFVOi_8hW2kQ" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Link"/>
+        <semanticElements xmi:type="ecore:EClass" href="mapping.ecore#//Link"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Vp6z8B_TEeWosIVuL4CkTA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp6z8R_TEeWosIVuL4CkTA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp6z8h_TEeWosIVuL4CkTA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp6z8x_TEeWosIVuL4CkTA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp6z9B_TEeWosIVuL4CkTA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_8IbOYAkjEeWFVOi_8hW2kQ" name="description : EString" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Link/description"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Link/description"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_QQUsZAnKEeWATYXIsIrDKQ" labelFormat="bold" labelAlignment="LEFT" description="_QQUsYgnKEeWATYXIsIrDKQ">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_QQUsZQnKEeWATYXIsIrDKQ"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_QQUsZgnKEeWATYXIsIrDKQ"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_QQUsZwnKEeWATYXIsIrDKQ"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_a82x4D6kEeaW46TWXHz9iw" name="type : Type" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Link/type"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Link/type"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_a84AAD6kEeaW46TWXHz9iw" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_a84AAT6kEeaW46TWXHz9iw"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_a84AAj6kEeaW46TWXHz9iw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_a84AAz6kEeaW46TWXHz9iw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_rdzOsAkkEeWFVOi_8hW2kQ" name="Base" tooltipText="" outgoingEdges="_dYLk0D6kEeaW46TWXHz9iw _hat-kD-TEeatdPECk4x2fg" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Base"/>
+        <semanticElements xmi:type="ecore:EClass" href="mapping.ecore#//Base"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Vp8CEB_TEeWosIVuL4CkTA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp8CER_TEeWosIVuL4CkTA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp8CEh_TEeWosIVuL4CkTA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp8CEx_TEeWosIVuL4CkTA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_Vp8CFB_TEeWosIVuL4CkTA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Lq_e0AtdEeWH1PvRpPAbiQ" name="name : EString" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Base/name"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Base/name"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_OWW44QtdEeWH1PvRpPAbiQ" labelFormat="bold" labelAlignment="LEFT" description="_OWQyQgtdEeWH1PvRpPAbiQ">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_OWW44gtdEeWH1PvRpPAbiQ"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_OWW44wtdEeWH1PvRpPAbiQ"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_OWW45AtdEeWH1PvRpPAbiQ"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_rhFWwAklEeWFVOi_8hW2kQ" sourceNode="_G61dgAkjEeWFVOi_8hW2kQ" targetNode="_Kh_xcAkjEeWFVOi_8hW2kQ" beginLabel="[1..1] target" endLabel="[0..*] sourceLinks">
+        <target xmi:type="ecore:EReference" href="mapping.ecore#//Location/sourceLinks"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Location/sourceLinks"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Link/target"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_VqQyMB_TEeWosIVuL4CkTA" sourceArrow="InputArrow" routingStyle="manhattan">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQyMR_TEeWosIVuL4CkTA"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_VqQyMh_TEeWosIVuL4CkTA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQyMx_TEeWosIVuL4CkTA"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_VqQyNB_TEeWosIVuL4CkTA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQyNR_TEeWosIVuL4CkTA"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_spw2EAklEeWFVOi_8hW2kQ" sourceNode="_G61dgAkjEeWFVOi_8hW2kQ" targetNode="_Kh_xcAkjEeWFVOi_8hW2kQ" beginLabel="[1..1] source" endLabel="[0..*] targetLinks">
+        <target xmi:type="ecore:EReference" href="mapping.ecore#//Location/targetLinks"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Link/source"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Location/targetLinks"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_VqQLIB_TEeWosIVuL4CkTA" description="_VqPkEB_TEeWosIVuL4CkTA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQLIR_TEeWosIVuL4CkTA"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_VqQLIh_TEeWosIVuL4CkTA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQLIx_TEeWosIVuL4CkTA"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_VqQLJB_TEeWosIVuL4CkTA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_VqQLJR_TEeWosIVuL4CkTA"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_dXUCID6kEeaW46TWXHz9iw" name="LocationContainer" tooltipText="" incomingEdges="_dYJIkD6kEeaW46TWXHz9iw _dYLk0D6kEeaW46TWXHz9iw _dYREYD6kEeaW46TWXHz9iw" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//LocationContainer"/>
+        <semanticElements xmi:type="ecore:EClass" href="mapping.ecore#//LocationContainer"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_dXVQQD6kEeaW46TWXHz9iw" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_interface.gif" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dXVQQT6kEeaW46TWXHz9iw"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.0/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_dXVQQj6kEeaW46TWXHz9iw" red="125" green="125" blue="125"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_dXVQQz6kEeaW46TWXHz9iw" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_dXVQRD6kEeaW46TWXHz9iw" red="228" green="228" blue="228"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_dYJIkD6kEeaW46TWXHz9iw" sourceNode="_G61dgAkjEeWFVOi_8hW2kQ" targetNode="_dXUCID6kEeaW46TWXHz9iw">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Location"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="mapping.ecore#//Location/@eGenericSuperTypes.0"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="mapping.ecore#//Location/@eGenericSuperTypes.1"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_dYK9wD6kEeaW46TWXHz9iw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_dYK9wT6kEeaW46TWXHz9iw" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_dYK9wj6kEeaW46TWXHz9iw" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYK9wz6kEeaW46TWXHz9iw"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_dYK9xD6kEeaW46TWXHz9iw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYK9xT6kEeaW46TWXHz9iw"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_dYLk0D6kEeaW46TWXHz9iw" sourceNode="_rdzOsAkkEeWFVOi_8hW2kQ" targetNode="_dXUCID6kEeaW46TWXHz9iw">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Base"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="mapping.ecore#//Base/@eGenericSuperTypes.0"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="mapping.ecore#//Base/@eGenericSuperTypes.1"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_dYMy8D6kEeaW46TWXHz9iw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_dYMy8T6kEeaW46TWXHz9iw" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_dYMy8j6kEeaW46TWXHz9iw" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYMy8z6kEeaW46TWXHz9iw"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_dYMy9D6kEeaW46TWXHz9iw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYMy9T6kEeaW46TWXHz9iw"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_dYREYD6kEeaW46TWXHz9iw" sourceNode="_G61dgAkjEeWFVOi_8hW2kQ" targetNode="_dXUCID6kEeaW46TWXHz9iw" beginLabel="[0..*] contents" endLabel="[0..1] container">
+        <target xmi:type="ecore:EReference" href="mapping.ecore#//Location/container"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Location/container"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//LocationContainer/contents"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_dYS5kD6kEeaW46TWXHz9iw" description="_dYSSgj6kEeaW46TWXHz9iw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_dYS5kT6kEeaW46TWXHz9iw"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_dYS5kj6kEeaW46TWXHz9iw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYS5kz6kEeaW46TWXHz9iw"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_dYS5lD6kEeaW46TWXHz9iw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_dYS5lT6kEeaW46TWXHz9iw"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_hZcMMD-TEeatdPECk4x2fg" name="Report" tooltipText="" incomingEdges="_hat-kD-TEeatdPECk4x2fg _ha6y4D-TEeatdPECk4x2fg" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="mapping.ecore#//Report"/>
+        <semanticElements xmi:type="ecore:EClass" href="mapping.ecore#//Report"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_hZeBYD-TEeatdPECk4x2fg" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_hZeBYT-TEeatdPECk4x2fg"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_hZeBYj-TEeatdPECk4x2fg"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_hZeBYz-TEeatdPECk4x2fg" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_hZeBZD-TEeatdPECk4x2fg" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_hamCwD-TEeatdPECk4x2fg" name="description : EString" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="mapping.ecore#//Report/description"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="mapping.ecore#//Report/description"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_haofAD-TEeatdPECk4x2fg" labelFormat="bold" labelAlignment="LEFT" description="_hanQ4j-TEeatdPECk4x2fg">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_haofAT-TEeatdPECk4x2fg"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_haofAj-TEeatdPECk4x2fg"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_haofAz-TEeatdPECk4x2fg"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_hat-kD-TEeatdPECk4x2fg" name="[0..*] reports" sourceNode="_rdzOsAkkEeWFVOi_8hW2kQ" targetNode="_hZcMMD-TEeatdPECk4x2fg">
+        <target xmi:type="ecore:EReference" href="mapping.ecore#//Base/reports"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Base/reports"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_havzwj-TEeatdPECk4x2fg" description="_havMsz-TEeatdPECk4x2fg" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_havzwz-TEeatdPECk4x2fg"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_havzxD-TEeatdPECk4x2fg" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_havzxT-TEeatdPECk4x2fg"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_havzxj-TEeatdPECk4x2fg" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_havzxz-TEeatdPECk4x2fg" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ha6y4D-TEeatdPECk4x2fg" sourceNode="_Kh_xcAkjEeWFVOi_8hW2kQ" targetNode="_hZcMMD-TEeatdPECk4x2fg" beginLabel="[1..1] link" endLabel="[0..*] reports">
+        <target xmi:type="ecore:EReference" href="mapping.ecore#//Link/reports"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Report/link"/>
+        <semanticElements xmi:type="ecore:EReference" href="mapping.ecore#//Link/reports"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ha7Z8D-TEeatdPECk4x2fg" sourceArrow="InputArrow" routingStyle="manhattan">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_ha7Z8T-TEeatdPECk4x2fg"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_ha7Z8j-TEeatdPECk4x2fg" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_ha7Z8z-TEeatdPECk4x2fg"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ha7Z9D-TEeatdPECk4x2fg" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_ha7Z9T-TEeatdPECk4x2fg"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_yuNMJQkiEeWFVOi_8hW2kQ"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="mapping.ecore#/"/>
+    </ownedRepresentations>
+    <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+  </ownedViews>
+  <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_W4nUYN0nEeSrTZVsNOV2JQ" initialized="true">
+    <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
+  </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.properties b/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.properties
new file mode 100644
index 0000000..d357604
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Mapping Model
+providerName = www.example.org
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.xml
new file mode 100644
index 0000000..97e86f2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated mapping -->
+      <package
+            uri="http://www.eclipse.org/intent/mapping"
+            class="org.eclipse.intent.mapping.MappingPackage"
+            genModel="model/mapping.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.emf/pom.xml
new file mode 100644
index 0000000..c0ffe14
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping EMF</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Base.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Base.java
new file mode 100644
index 0000000..f1deced
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Base.java
@@ -0,0 +1,77 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Base</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.Base#getRootLocations <em>Root Locations</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Base#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getBase()
+ * @model
+ * @generated NOT
+ */
+public interface Base extends IEMFBaseElement, LocationContainer, IBase {
+	/**
+	 * Returns the value of the '<em><b>Root Locations</b></em>' containment reference list. The list contents
+	 * are of type {@link org.eclipse.intent.mapping.Location}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Root Locations</em>' containment reference list isn't clear, there really
+	 * should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Root Locations</em>' containment reference list.
+	 * @see org.eclipse.intent.mapping.MappingPackage#getBase_RootLocations()
+	 * @model containment="true"
+	 * @generated NOT
+	 */
+	EList<ILocation> getContents();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getBase_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Base#getName <em>Name</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // Base
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOBinaryResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOBinaryResourceLocation.java
new file mode 100644
index 0000000..d8eea6f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOBinaryResourceLocation.java
@@ -0,0 +1,26 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Binary Resource
+ * Location</b></em>'. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOBinaryResourceLocation()
+ * @model
+ * @generated NOT
+ */
+public interface CDOBinaryResourceLocation extends CDOFileLocation, ICDOBinaryResourceLocation {
+} // CDOBinaryResourceLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFileLocation.java
new file mode 100644
index 0000000..9903c56
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFileLocation.java
@@ -0,0 +1,24 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO File Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOFileLocation()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface CDOFileLocation extends CDOResourceNodeLocation {
+} // CDOFileLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFolderLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFolderLocation.java
new file mode 100644
index 0000000..b7276c8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOFolderLocation.java
@@ -0,0 +1,26 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Folder Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOFolderLocation()
+ * @model
+ * @generated NOT
+ */
+public interface CDOFolderLocation extends CDOResourceNodeLocation, ICDOFolderLocation {
+} // CDOFolderLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDORepositoryLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDORepositoryLocation.java
new file mode 100644
index 0000000..f1acf1a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDORepositoryLocation.java
@@ -0,0 +1,143 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Repository Location</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.CDORepositoryLocation#getURL <em>URL</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.CDORepositoryLocation#getUUID <em>UUID</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.CDORepositoryLocation#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.CDORepositoryLocation#getBranchID <em>Branch ID</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDORepositoryLocation()
+ * @model
+ * @generated NOT
+ */
+public interface CDORepositoryLocation extends Location, ICDORepositoryLocation {
+	/**
+	 * Returns the value of the '<em><b>URL</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>URL</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>URL</em>' attribute.
+	 * @see #setURL(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCDORepositoryLocation_URL()
+	 * @model
+	 * @generated
+	 */
+	String getURL();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getURL <em>URL</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>URL</em>' attribute.
+	 * @see #getURL()
+	 * @generated
+	 */
+	void setURL(String value);
+
+	/**
+	 * Returns the value of the '<em><b>UUID</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>UUID</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>UUID</em>' attribute.
+	 * @see #setUUID(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCDORepositoryLocation_UUID()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getUUID();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getUUID <em>UUID</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>UUID</em>' attribute.
+	 * @see #getUUID()
+	 * @generated
+	 */
+	void setUUID(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCDORepositoryLocation_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getName <em>Name</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Branch ID</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Branch ID</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Branch ID</em>' attribute.
+	 * @see #setBranchID(int)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCDORepositoryLocation_BranchID()
+	 * @model required="true"
+	 * @generated
+	 */
+	int getBranchID();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getBranchID <em>Branch
+	 * ID</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Branch ID</em>' attribute.
+	 * @see #getBranchID()
+	 * @generated
+	 */
+	void setBranchID(int value);
+
+} // CDORepositoryLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceLocation.java
new file mode 100644
index 0000000..d05f562
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceLocation.java
@@ -0,0 +1,26 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Resource Location</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOResourceLocation()
+ * @model
+ * @generated NOT
+ */
+public interface CDOResourceLocation extends CDOFileLocation, EObjectContainer, ICDOResourceLocation {
+} // CDOResourceLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceNodeLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceNodeLocation.java
new file mode 100644
index 0000000..dea24f1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOResourceNodeLocation.java
@@ -0,0 +1,57 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Resource Node Location</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.CDOResourceNodeLocation#getPath <em>Path</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOResourceNodeLocation()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface CDOResourceNodeLocation extends Location {
+	/**
+	 * Returns the value of the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Path</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Path</em>' attribute.
+	 * @see #setPath(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCDOResourceNodeLocation_Path()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getPath();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation#getPath
+	 * <em>Path</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Path</em>' attribute.
+	 * @see #getPath()
+	 * @generated
+	 */
+	void setPath(String value);
+
+} // CDOResourceNodeLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOTextResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOTextResourceLocation.java
new file mode 100644
index 0000000..f7cbe37
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/CDOTextResourceLocation.java
@@ -0,0 +1,26 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CDO Text Resource Location</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCDOTextResourceLocation()
+ * @model
+ * @generated NOT
+ */
+public interface CDOTextResourceLocation extends CDOFileLocation, TextContainer, ICDOTextResourceLocation {
+} // CDOTextResourceLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Couple.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Couple.java
new file mode 100644
index 0000000..2f748bd
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Couple.java
@@ -0,0 +1,89 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.intent.mapping.emf.ICouple;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Couple</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.Couple#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Couple#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getCouple()
+ * @model
+ * @extends CDOObject
+ * @generated NOT
+ */
+public interface Couple extends CDOObject, ICouple {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCouple_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Couple#getKey <em>Key</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getCouple_Value()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Couple#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // Couple
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectContainer.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectContainer.java
new file mode 100644
index 0000000..e40d38c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectContainer.java
@@ -0,0 +1,80 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import java.util.List;
+
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectContainer;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>EObject Container</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.EObjectContainer#getXMIContent <em>XMI Content</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.EObjectContainer#getSavedURIFragments <em>Saved URI
+ * Fragments</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getEObjectContainer()
+ * @model interface="true" abstract="true"
+ * @generated NOT
+ */
+public interface EObjectContainer extends Location, IEObjectContainer {
+	/**
+	 * Returns the value of the '<em><b>XMI Content</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>XMI Content</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>XMI Content</em>' attribute.
+	 * @see #setXMIContent(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getEObjectContainer_XMIContent()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getXMIContent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.EObjectContainer#getXMIContent <em>XMI
+	 * Content</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>XMI Content</em>' attribute.
+	 * @see #getXMIContent()
+	 * @generated
+	 */
+	void setXMIContent(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Saved URI Fragments</b></em>' containment reference list. The list
+	 * contents are of type {@link org.eclipse.intent.mapping.Couple}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Saved URI Fragments</em>' containment reference list isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Saved URI Fragments</em>' containment reference list.
+	 * @see org.eclipse.intent.mapping.MappingPackage#getEObjectContainer_SavedURIFragments()
+	 * @model containment="true"
+	 * @generated NOT
+	 */
+	List<ICouple> getSavedURIFragments();
+
+} // EObjectContainer
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectLocation.java
new file mode 100644
index 0000000..cb6f6ea
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/EObjectLocation.java
@@ -0,0 +1,116 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>EObject Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.EObjectLocation#getURIFragment <em>URI Fragment</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.EObjectLocation#getFeatureName <em>Feature Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.EObjectLocation#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getEObjectLocation()
+ * @model
+ * @generated NOT
+ */
+public interface EObjectLocation extends Location, IEObjectLocation {
+	/**
+	 * Returns the value of the '<em><b>URI Fragment</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>URI Fragment</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>URI Fragment</em>' attribute.
+	 * @see #setURIFragment(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getEObjectLocation_URIFragment()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getURIFragment();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.EObjectLocation#getURIFragment <em>URI
+	 * Fragment</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>URI Fragment</em>' attribute.
+	 * @see #getURIFragment()
+	 * @generated
+	 */
+	void setURIFragment(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Feature Name</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Setting</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Feature Name</em>' attribute.
+	 * @see #setFeatureName(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getEObjectLocation_FeatureName()
+	 * @model
+	 * @generated
+	 */
+	String getFeatureName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.EObjectLocation#getFeatureName <em>Feature
+	 * Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Feature Name</em>' attribute.
+	 * @see #getFeatureName()
+	 * @generated
+	 */
+	void setFeatureName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Index</b></em>' attribute. The default value is <code>"0"</code>. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Index</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Index</em>' attribute.
+	 * @see #setIndex(int)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getEObjectLocation_Index()
+	 * @model default="0" required="true"
+	 * @generated
+	 */
+	int getIndex();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.EObjectLocation#getIndex <em>Index</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Index</em>' attribute.
+	 * @see #getIndex()
+	 * @generated
+	 */
+	void setIndex(int value);
+
+} // EObjectLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/IEMFBaseElement.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/IEMFBaseElement.java
new file mode 100644
index 0000000..3f643a7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/IEMFBaseElement.java
@@ -0,0 +1,27 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.base.IMappingElement;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>IBase Element</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getIBaseElement()
+ * @model interface="true" abstract="true"
+ * @generated NOT
+ */
+public interface IEMFBaseElement extends EObject, IMappingElement {
+} // IEMFBaseElement
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Link.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Link.java
new file mode 100644
index 0000000..1dc5297
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Link.java
@@ -0,0 +1,123 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Link</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.Link#getStatus <em>Status</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Link#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Link#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Link#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getLink()
+ * @model
+ * @generated NOT
+ */
+public interface Link extends IEMFBaseElement, ILink {
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLink_Description()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Link#getDescription <em>Description</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Source</b></em>' container reference. It is bidirectional and its
+	 * opposite is '{@link org.eclipse.intent.mapping.Location#getTargetLinks <em>Target Links</em>}'. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source</em>' container reference isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Source</em>' container reference.
+	 * @see #setSource(Location)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLink_Source()
+	 * @see org.eclipse.intent.mapping.Location#getTargetLinks
+	 * @model opposite="targetLinks" required="true" transient="false"
+	 * @generated
+	 */
+	Location getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Link#getSource <em>Source</em>}' container
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Source</em>' container reference.
+	 * @see #getSource()
+	 * @generated NOT
+	 */
+	void setSource(ILocation value);
+
+	/**
+	 * Returns the value of the '<em><b>Target</b></em>' reference. It is bidirectional and its opposite is '
+	 * {@link org.eclipse.intent.mapping.Location#getSourceLinks <em>Source Links</em>}'. <!-- begin-user-doc
+	 * -->
+	 * <p>
+	 * If the meaning of the '<em>Target</em>' reference isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Target</em>' reference.
+	 * @see #setTarget(Location)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLink_Target()
+	 * @see org.eclipse.intent.mapping.Location#getSourceLinks
+	 * @model opposite="sourceLinks" required="true"
+	 * @generated
+	 */
+	Location getTarget();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Link#getTarget <em>Target</em>}' reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Target</em>' reference.
+	 * @see #getTarget()
+	 * @generated NOT
+	 */
+	void setTarget(ILocation value);
+
+} // Link
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Location.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Location.java
new file mode 100644
index 0000000..8a23b3b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Location.java
@@ -0,0 +1,183 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import java.io.Serializable;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Location</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.Location#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getScope <em>Scope</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getSourceLinks <em>Source Links</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getTargetLinks <em>Target Links</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Location#getReferencingScopes <em>Referencing Scopes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getLocation()
+ * @model interface="true" abstract="true"
+ * @generated NOT
+ */
+public interface Location extends IEMFBaseElement, LocationContainer, ILocation {
+
+	/**
+	 * Returns the value of the '<em><b>Source Links</b></em>' reference list. The list contents are of type
+	 * {@link org.eclipse.intent.mapping.Link}. It is bidirectional and its opposite is '
+	 * {@link org.eclipse.intent.mapping.Link#getTarget <em>Target</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Links</em>' reference list isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Source Links</em>' reference list.
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_SourceLinks()
+	 * @see org.eclipse.intent.mapping.Link#getTarget
+	 * @model opposite="target"
+	 * @generated NOT
+	 */
+	EList<ILink> getSourceLinks();
+
+	/**
+	 * Returns the value of the '<em><b>Target Links</b></em>' containment reference list. The list contents
+	 * are of type {@link org.eclipse.intent.mapping.Link}. It is bidirectional and its opposite is
+	 * '{@link org.eclipse.intent.mapping.Link#getSource <em>Source</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target Links</em>' containment reference list isn't clear, there really
+	 * should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Target Links</em>' containment reference list.
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_TargetLinks()
+	 * @see org.eclipse.intent.mapping.Link#getSource
+	 * @model opposite="source" containment="true"
+	 * @generated NOT
+	 */
+	EList<ILink> getTargetLinks();
+
+	/**
+	 * Returns the value of the '<em><b>Contents</b></em>' containment reference list. The list contents are
+	 * of type {@link org.eclipse.intent.mapping.Location}. It is bidirectional and its opposite is
+	 * '{@link org.eclipse.intent.mapping.Location#getContainer <em>Container</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Contents</em>' containment reference list isn't clear, there really should
+	 * be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Contents</em>' containment reference list.
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_Contents()
+	 * @see org.eclipse.intent.mapping.Location#getContainer
+	 * @model opposite="container" containment="true"
+	 * @generated NOT
+	 */
+	EList<ILocation> getContents();
+
+	/**
+	 * Returns the value of the '<em><b>Container</b></em>' container reference. It is bidirectional and its
+	 * opposite is '{@link org.eclipse.intent.mapping.LocationContainer#getContents <em>Contents</em>}'. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Container</em>' container reference isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Container</em>' container reference.
+	 * @see #setContainer(LocationContainer)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_Container()
+	 * @see org.eclipse.intent.mapping.LocationContainer#getContents
+	 * @model opposite="contents" transient="false"
+	 * @generated
+	 */
+	LocationContainer getContainer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Location#getContainer <em>Container</em>}'
+	 * container reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Container</em>' container reference.
+	 * @see #getContainer()
+	 * @generated NOT
+	 */
+	void setContainer(ILocationContainer value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(Serializable)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_Type()
+	 * @model dataType="org.eclipse.mylyn.docs.intent.mapping.Type"
+	 * @generated
+	 */
+	Serializable getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Location#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(Serializable value);
+
+	/**
+	 * Returns the value of the '<em><b>Marked As Deleted</b></em>' attribute. The default value is
+	 * <code>"false"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Marked As Deleted</em>' attribute isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Marked As Deleted</em>' attribute.
+	 * @see #setMarkedAsDeleted(boolean)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getLocation_MarkedAsDeleted()
+	 * @model default="false" required="true"
+	 * @generated
+	 */
+	boolean isMarkedAsDeleted();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Location#isMarkedAsDeleted <em>Marked As
+	 * Deleted</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Marked As Deleted</em>' attribute.
+	 * @see #isMarkedAsDeleted()
+	 * @generated
+	 */
+	void setMarkedAsDeleted(boolean value);
+
+} // Location
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/LocationContainer.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/LocationContainer.java
new file mode 100644
index 0000000..d7b99e9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/LocationContainer.java
@@ -0,0 +1,34 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Location Container</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.LocationContainer#getContents <em>Contents</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getLocationContainer()
+ * @model interface="true" abstract="true"
+ * @generated NOT
+ */
+public interface LocationContainer extends EObject, ILocationContainer {
+
+} // LocationContainer
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingFactory.java
new file mode 100644
index 0000000..2376431
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingFactory.java
@@ -0,0 +1,134 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a create method for each non-abstract
+ * class of the model. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.MappingPackage
+ * @generated
+ */
+public interface MappingFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	MappingFactory eINSTANCE = org.eclipse.intent.mapping.impl.MappingFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Link</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Link</em>'.
+	 * @generated
+	 */
+	Link createLink();
+
+	/**
+	 * Returns a new object of class '<em>Base</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Base</em>'.
+	 * @generated
+	 */
+	Base createBase();
+
+	/**
+	 * Returns a new object of class '<em>Text Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Text Location</em>'.
+	 * @generated
+	 */
+	TextLocation createTextLocation();
+
+	/**
+	 * Returns a new object of class '<em>EObject Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return a new object of class '<em>EObject Location</em>'.
+	 * @generated
+	 */
+	EObjectLocation createEObjectLocation();
+
+	/**
+	 * Returns a new object of class '<em>Report</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Report</em>'.
+	 * @generated
+	 */
+	Report createReport();
+
+	/**
+	 * Returns a new object of class '<em>Couple</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Couple</em>'.
+	 * @generated
+	 */
+	Couple createCouple();
+
+	/**
+	 * Returns a new object of class '<em>CDO Folder Location</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return a new object of class '<em>CDO Folder Location</em>'.
+	 * @generated
+	 */
+	CDOFolderLocation createCDOFolderLocation();
+
+	/**
+	 * Returns a new object of class '<em>CDO Repository Location</em>'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>CDO Repository Location</em>'.
+	 * @generated
+	 */
+	CDORepositoryLocation createCDORepositoryLocation();
+
+	/**
+	 * Returns a new object of class '<em>CDO Binary Resource Location</em>'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>CDO Binary Resource Location</em>'.
+	 * @generated
+	 */
+	CDOBinaryResourceLocation createCDOBinaryResourceLocation();
+
+	/**
+	 * Returns a new object of class '<em>CDO Text Resource Location</em>'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>CDO Text Resource Location</em>'.
+	 * @generated
+	 */
+	CDOTextResourceLocation createCDOTextResourceLocation();
+
+	/**
+	 * Returns a new object of class '<em>CDO Resource Location</em>'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>CDO Resource Location</em>'.
+	 * @generated
+	 */
+	CDOResourceLocation createCDOResourceLocation();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	MappingPackage getMappingPackage();
+
+} // MappingFactory
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingPackage.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingPackage.java
new file mode 100644
index 0000000..c9ee0c8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/MappingPackage.java
@@ -0,0 +1,2550 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains accessors for the meta objects to
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.MappingFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface MappingPackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "mapping";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/intent/mapping";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "mapping";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	MappingPackage eINSTANCE = org.eclipse.intent.mapping.impl.MappingPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.IEMFBaseElement <em>IEMF Base
+	 * Element</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.IEMFBaseElement
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getIEMFBaseElement()
+	 * @generated
+	 */
+	int IEMF_BASE_ELEMENT = 3;
+
+	/**
+	 * The number of structural features of the '<em>IEMF Base Element</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int IEMF_BASE_ELEMENT_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>IEMF Base Element</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int IEMF_BASE_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.LocationImpl <em>Location</em>}'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.LocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLocation()
+	 * @generated
+	 */
+	int LOCATION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__CONTENTS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__SOURCE_LINKS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__TARGET_LINKS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__CONTAINER = IEMF_BASE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__TYPE = IEMF_BASE_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION__MARKED_AS_DELETED = IEMF_BASE_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION_FEATURE_COUNT = IEMF_BASE_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of operations of the '<em>Location</em>' class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION_OPERATION_COUNT = IEMF_BASE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.LinkImpl <em>Link</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.LinkImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLink()
+	 * @generated
+	 */
+	int LINK = 1;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK__DESCRIPTION = IEMF_BASE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK__SOURCE = IEMF_BASE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK__TARGET = IEMF_BASE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK__TYPE = IEMF_BASE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Reports</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK__REPORTS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Link</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_FEATURE_COUNT = IEMF_BASE_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Link</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_OPERATION_COUNT = IEMF_BASE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.BaseImpl <em>Base</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.BaseImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getBase()
+	 * @generated
+	 */
+	int BASE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE__CONTENTS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE__NAME = IEMF_BASE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Reports</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE__REPORTS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Container Providers</b></em>' attribute list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE__CONTAINER_PROVIDERS = IEMF_BASE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Base</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE_FEATURE_COUNT = IEMF_BASE_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Base</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BASE_OPERATION_COUNT = IEMF_BASE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.TextLocationImpl <em>Text
+	 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.TextLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getTextLocation()
+	 * @generated
+	 */
+	int TEXT_LOCATION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Start Offset</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__START_OFFSET = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>End Offset</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION__END_OFFSET = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Text Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Text Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_LOCATION_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.TextContainer <em>Text Container</em>}'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.TextContainer
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getTextContainer()
+	 * @generated
+	 */
+	int TEXT_CONTAINER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER__TEXT = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Text Container</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Text Container</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEXT_CONTAINER_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl <em>EObject
+	 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.EObjectLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getEObjectLocation()
+	 * @generated
+	 */
+	int EOBJECT_LOCATION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>URI Fragment</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__URI_FRAGMENT = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Saved URI Fragment</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__SAVED_URI_FRAGMENT = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Feature Name</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__FEATURE_NAME = LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Index</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION__INDEX = LOCATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>EObject Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>EObject Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_LOCATION_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.LocationContainer <em>Location
+	 * Container</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.LocationContainer
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLocationContainer()
+	 * @generated
+	 */
+	int LOCATION_CONTAINER = 7;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION_CONTAINER__CONTENTS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Location Container</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION_CONTAINER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Location Container</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LOCATION_CONTAINER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.ReportImpl <em>Report</em>}' class.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.ReportImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getReport()
+	 * @generated
+	 */
+	int REPORT = 8;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REPORT__DESCRIPTION = IEMF_BASE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Link</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REPORT__LINK = IEMF_BASE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Report</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REPORT_FEATURE_COUNT = IEMF_BASE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Report</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REPORT_OPERATION_COUNT = IEMF_BASE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CoupleImpl <em>Couple</em>}' class.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CoupleImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCouple()
+	 * @generated
+	 */
+	int COUPLE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COUPLE__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COUPLE__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Couple</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COUPLE_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Couple</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COUPLE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.EObjectContainer <em>EObject
+	 * Container</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.EObjectContainer
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getEObjectContainer()
+	 * @generated
+	 */
+	int EOBJECT_CONTAINER = 10;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>XMI Content</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__XMI_CONTENT = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Saved URI Fragments</b></em>' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>EObject Container</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>EObject Container</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EOBJECT_CONTAINER_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation <em>CDO Resource
+	 * Node Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.CDOResourceNodeLocation
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOResourceNodeLocation()
+	 * @generated
+	 */
+	int CDO_RESOURCE_NODE_LOCATION = 11;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION__PATH = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>CDO Resource Node Location</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>CDO Resource Node Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_NODE_LOCATION_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.CDOFileLocation <em>CDO File
+	 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.CDOFileLocation
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOFileLocation()
+	 * @generated
+	 */
+	int CDO_FILE_LOCATION = 12;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__CONTENTS = CDO_RESOURCE_NODE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__SOURCE_LINKS = CDO_RESOURCE_NODE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__TARGET_LINKS = CDO_RESOURCE_NODE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__CONTAINER = CDO_RESOURCE_NODE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__TYPE = CDO_RESOURCE_NODE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__MARKED_AS_DELETED = CDO_RESOURCE_NODE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION__PATH = CDO_RESOURCE_NODE_LOCATION__PATH;
+
+	/**
+	 * The number of structural features of the '<em>CDO File Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION_FEATURE_COUNT = CDO_RESOURCE_NODE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>CDO File Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FILE_LOCATION_OPERATION_COUNT = CDO_RESOURCE_NODE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CDOFolderLocationImpl <em>CDO Folder
+	 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CDOFolderLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOFolderLocation()
+	 * @generated
+	 */
+	int CDO_FOLDER_LOCATION = 13;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__CONTENTS = CDO_RESOURCE_NODE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__SOURCE_LINKS = CDO_RESOURCE_NODE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__TARGET_LINKS = CDO_RESOURCE_NODE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__CONTAINER = CDO_RESOURCE_NODE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__TYPE = CDO_RESOURCE_NODE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__MARKED_AS_DELETED = CDO_RESOURCE_NODE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION__PATH = CDO_RESOURCE_NODE_LOCATION__PATH;
+
+	/**
+	 * The number of structural features of the '<em>CDO Folder Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION_FEATURE_COUNT = CDO_RESOURCE_NODE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>CDO Folder Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_FOLDER_LOCATION_OPERATION_COUNT = CDO_RESOURCE_NODE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl <em>CDO
+	 * Repository Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDORepositoryLocation()
+	 * @generated
+	 */
+	int CDO_REPOSITORY_LOCATION = 14;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__CONTENTS = LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__SOURCE_LINKS = LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__TARGET_LINKS = LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__CONTAINER = LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__TYPE = LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__MARKED_AS_DELETED = LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>URL</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__URL = LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>UUID</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__UUID = LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__NAME = LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Branch ID</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION__BRANCH_ID = LOCATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>CDO Repository Location</em>' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION_FEATURE_COUNT = LOCATION_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>CDO Repository Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_REPOSITORY_LOCATION_OPERATION_COUNT = LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CDOBinaryResourceLocationImpl
+	 * <em>CDO Binary Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CDOBinaryResourceLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOBinaryResourceLocation()
+	 * @generated
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION = 15;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__CONTENTS = CDO_FILE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__SOURCE_LINKS = CDO_FILE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__TARGET_LINKS = CDO_FILE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__CONTAINER = CDO_FILE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__TYPE = CDO_FILE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__MARKED_AS_DELETED = CDO_FILE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION__PATH = CDO_FILE_LOCATION__PATH;
+
+	/**
+	 * The number of structural features of the '<em>CDO Binary Resource Location</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION_FEATURE_COUNT = CDO_FILE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>CDO Binary Resource Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_BINARY_RESOURCE_LOCATION_OPERATION_COUNT = CDO_FILE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl <em>CDO
+	 * Text Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOTextResourceLocation()
+	 * @generated
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION = 16;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__CONTENTS = CDO_FILE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__SOURCE_LINKS = CDO_FILE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__TARGET_LINKS = CDO_FILE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__CONTAINER = CDO_FILE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__TYPE = CDO_FILE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__MARKED_AS_DELETED = CDO_FILE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__PATH = CDO_FILE_LOCATION__PATH;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION__TEXT = CDO_FILE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>CDO Text Resource Location</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION_FEATURE_COUNT = CDO_FILE_LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>CDO Text Resource Location</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_TEXT_RESOURCE_LOCATION_OPERATION_COUNT = CDO_FILE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.intent.mapping.impl.CDOResourceLocationImpl <em>CDO
+	 * Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.intent.mapping.impl.CDOResourceLocationImpl
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOResourceLocation()
+	 * @generated
+	 */
+	int CDO_RESOURCE_LOCATION = 17;
+
+	/**
+	 * The feature id for the '<em><b>Contents</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__CONTENTS = CDO_FILE_LOCATION__CONTENTS;
+
+	/**
+	 * The feature id for the '<em><b>Source Links</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__SOURCE_LINKS = CDO_FILE_LOCATION__SOURCE_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Target Links</b></em>' containment reference list. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__TARGET_LINKS = CDO_FILE_LOCATION__TARGET_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Container</b></em>' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__CONTAINER = CDO_FILE_LOCATION__CONTAINER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__TYPE = CDO_FILE_LOCATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Marked As Deleted</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__MARKED_AS_DELETED = CDO_FILE_LOCATION__MARKED_AS_DELETED;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__PATH = CDO_FILE_LOCATION__PATH;
+
+	/**
+	 * The feature id for the '<em><b>XMI Content</b></em>' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__XMI_CONTENT = CDO_FILE_LOCATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Saved URI Fragments</b></em>' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION__SAVED_URI_FRAGMENTS = CDO_FILE_LOCATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>CDO Resource Location</em>' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION_FEATURE_COUNT = CDO_FILE_LOCATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>CDO Resource Location</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CDO_RESOURCE_LOCATION_OPERATION_COUNT = CDO_FILE_LOCATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '<em>Type</em>' data type. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see java.io.Serializable
+	 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getType()
+	 * @generated
+	 */
+	int TYPE = 18;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.Location <em>Location</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Location</em>'.
+	 * @see org.eclipse.intent.mapping.Location
+	 * @generated
+	 */
+	EClass getLocation();
+
+	/**
+	 * Returns the meta object for the reference list '
+	 * {@link org.eclipse.intent.mapping.Location#getSourceLinks <em>Source Links</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Source Links</em>'.
+	 * @see org.eclipse.intent.mapping.Location#getSourceLinks()
+	 * @see #getLocation()
+	 * @generated
+	 */
+	EReference getLocation_SourceLinks();
+
+	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link org.eclipse.intent.mapping.Location#getTargetLinks <em>Target Links</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Target Links</em>'.
+	 * @see org.eclipse.intent.mapping.Location#getTargetLinks()
+	 * @see #getLocation()
+	 * @generated
+	 */
+	EReference getLocation_TargetLinks();
+
+	/**
+	 * Returns the meta object for the container reference '
+	 * {@link org.eclipse.intent.mapping.Location#getContainer <em>Container</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the container reference '<em>Container</em>'.
+	 * @see org.eclipse.intent.mapping.Location#getContainer()
+	 * @see #getLocation()
+	 * @generated
+	 */
+	EReference getLocation_Container();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Location#getType
+	 * <em>Type</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.intent.mapping.Location#getType()
+	 * @see #getLocation()
+	 * @generated
+	 */
+	EAttribute getLocation_Type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Location#isMarkedAsDeleted
+	 * <em>Marked As Deleted</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Marked As Deleted</em>'.
+	 * @see org.eclipse.intent.mapping.Location#isMarkedAsDeleted()
+	 * @see #getLocation()
+	 * @generated
+	 */
+	EAttribute getLocation_MarkedAsDeleted();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.Link <em>Link</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Link</em>'.
+	 * @see org.eclipse.intent.mapping.Link
+	 * @generated
+	 */
+	EClass getLink();
+
+	/**
+	 * Returns the meta object for the attribute ' {@link org.eclipse.intent.mapping.Link#getDescription
+	 * <em>Description</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.intent.mapping.Link#getDescription()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EAttribute getLink_Description();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.intent.mapping.Link#getSource
+	 * <em>Source</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the container reference '<em>Source</em>'.
+	 * @see org.eclipse.intent.mapping.Link#getSource()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EReference getLink_Source();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.intent.mapping.Link#getTarget
+	 * <em>Target</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>Target</em>'.
+	 * @see org.eclipse.intent.mapping.Link#getTarget()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EReference getLink_Target();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Link#getType
+	 * <em>Type</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.intent.mapping.Link#getType()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EAttribute getLink_Type();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.intent.mapping.Link#getReports
+	 * <em>Reports</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Reports</em>'.
+	 * @see org.eclipse.intent.mapping.Link#getReports()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EReference getLink_Reports();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.Base <em>Base</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Base</em>'.
+	 * @see org.eclipse.intent.mapping.Base
+	 * @generated
+	 */
+	EClass getBase();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Base#getName
+	 * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.intent.mapping.Base#getName()
+	 * @see #getBase()
+	 * @generated
+	 */
+	EAttribute getBase_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.intent.mapping.Base#getReports <em>Reports</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Reports</em>'.
+	 * @see org.eclipse.intent.mapping.Base#getReports()
+	 * @see #getBase()
+	 * @generated
+	 */
+	EReference getBase_Reports();
+
+	/**
+	 * Returns the meta object for the attribute list
+	 * '{@link org.eclipse.intent.mapping.Base#getContainerProviders <em>Container Providers</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute list '<em>Container Providers</em>'.
+	 * @see org.eclipse.intent.mapping.Base#getContainerProviders()
+	 * @see #getBase()
+	 * @generated
+	 */
+	EAttribute getBase_ContainerProviders();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.IEMFBaseElement <em>IEMF Base
+	 * Element</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>IEMF Base Element</em>'.
+	 * @see org.eclipse.intent.mapping.IEMFBaseElement
+	 * @generated
+	 */
+	EClass getIEMFBaseElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.TextLocation <em>Text
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Text Location</em>'.
+	 * @see org.eclipse.intent.mapping.TextLocation
+	 * @generated
+	 */
+	EClass getTextLocation();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.intent.mapping.TextLocation#getStartOffset <em>Start Offset</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Start Offset</em>'.
+	 * @see org.eclipse.intent.mapping.TextLocation#getStartOffset()
+	 * @see #getTextLocation()
+	 * @generated
+	 */
+	EAttribute getTextLocation_StartOffset();
+
+	/**
+	 * Returns the meta object for the attribute ' {@link org.eclipse.intent.mapping.TextLocation#getEndOffset
+	 * <em>End Offset</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>End Offset</em>'.
+	 * @see org.eclipse.intent.mapping.TextLocation#getEndOffset()
+	 * @see #getTextLocation()
+	 * @generated
+	 */
+	EAttribute getTextLocation_EndOffset();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.TextContainer <em>Text
+	 * Container</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Text Container</em>'.
+	 * @see org.eclipse.intent.mapping.TextContainer
+	 * @generated
+	 */
+	EClass getTextContainer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.TextContainer#getText
+	 * <em>Text</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Text</em>'.
+	 * @see org.eclipse.intent.mapping.TextContainer#getText()
+	 * @see #getTextContainer()
+	 * @generated
+	 */
+	EAttribute getTextContainer_Text();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.EObjectLocation <em>EObject
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>EObject Location</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectLocation
+	 * @generated
+	 */
+	EClass getEObjectLocation();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.EObjectLocation#getURIFragment <em>URI Fragment</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>URI Fragment</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectLocation#getURIFragment()
+	 * @see #getEObjectLocation()
+	 * @generated
+	 */
+	EAttribute getEObjectLocation_URIFragment();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.EObjectLocation#getSavedURIFragment <em>Saved URI Fragment</em>}'.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Saved URI Fragment</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectLocation#getSavedURIFragment()
+	 * @see #getEObjectLocation()
+	 * @generated
+	 */
+	EAttribute getEObjectLocation_SavedURIFragment();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.EObjectLocation#getFeatureName <em>Feature Name</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Feature Name</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectLocation#getFeatureName()
+	 * @see #getEObjectLocation()
+	 * @generated
+	 */
+	EAttribute getEObjectLocation_FeatureName();
+
+	/**
+	 * Returns the meta object for the attribute ' {@link org.eclipse.intent.mapping.EObjectLocation#getIndex
+	 * <em>Index</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Index</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectLocation#getIndex()
+	 * @see #getEObjectLocation()
+	 * @generated
+	 */
+	EAttribute getEObjectLocation_Index();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.LocationContainer <em>Location
+	 * Container</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Location Container</em>'.
+	 * @see org.eclipse.intent.mapping.LocationContainer
+	 * @generated
+	 */
+	EClass getLocationContainer();
+
+	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link org.eclipse.intent.mapping.LocationContainer#getContents <em>Contents</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Contents</em>'.
+	 * @see org.eclipse.intent.mapping.LocationContainer#getContents()
+	 * @see #getLocationContainer()
+	 * @generated
+	 */
+	EReference getLocationContainer_Contents();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.Report <em>Report</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Report</em>'.
+	 * @see org.eclipse.intent.mapping.Report
+	 * @generated
+	 */
+	EClass getReport();
+
+	/**
+	 * Returns the meta object for the attribute ' {@link org.eclipse.intent.mapping.Report#getDescription
+	 * <em>Description</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.intent.mapping.Report#getDescription()
+	 * @see #getReport()
+	 * @generated
+	 */
+	EAttribute getReport_Description();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.intent.mapping.Report#getLink
+	 * <em>Link</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>Link</em>'.
+	 * @see org.eclipse.intent.mapping.Report#getLink()
+	 * @see #getReport()
+	 * @generated
+	 */
+	EReference getReport_Link();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.Couple <em>Couple</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Couple</em>'.
+	 * @see org.eclipse.intent.mapping.Couple
+	 * @generated
+	 */
+	EClass getCouple();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Couple#getKey
+	 * <em>Key</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.intent.mapping.Couple#getKey()
+	 * @see #getCouple()
+	 * @generated
+	 */
+	EAttribute getCouple_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.intent.mapping.Couple#getValue
+	 * <em>Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.intent.mapping.Couple#getValue()
+	 * @see #getCouple()
+	 * @generated
+	 */
+	EAttribute getCouple_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.EObjectContainer <em>EObject
+	 * Container</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>EObject Container</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectContainer
+	 * @generated
+	 */
+	EClass getEObjectContainer();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.EObjectContainer#getXMIContent <em>XMI Content</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>XMI Content</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectContainer#getXMIContent()
+	 * @see #getEObjectContainer()
+	 * @generated
+	 */
+	EAttribute getEObjectContainer_XMIContent();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.intent.mapping.EObjectContainer#getSavedURIFragments <em>Saved URI
+	 * Fragments</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Saved URI Fragments</em>'.
+	 * @see org.eclipse.intent.mapping.EObjectContainer#getSavedURIFragments()
+	 * @see #getEObjectContainer()
+	 * @generated
+	 */
+	EReference getEObjectContainer_SavedURIFragments();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation <em>CDO
+	 * Resource Node Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Resource Node Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOResourceNodeLocation
+	 * @generated
+	 */
+	EClass getCDOResourceNodeLocation();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation#getPath <em>Path</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Path</em>'.
+	 * @see org.eclipse.intent.mapping.CDOResourceNodeLocation#getPath()
+	 * @see #getCDOResourceNodeLocation()
+	 * @generated
+	 */
+	EAttribute getCDOResourceNodeLocation_Path();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOFileLocation <em>CDO File
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO File Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOFileLocation
+	 * @generated
+	 */
+	EClass getCDOFileLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOFolderLocation <em>CDO Folder
+	 * Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Folder Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOFolderLocation
+	 * @generated
+	 */
+	EClass getCDOFolderLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDORepositoryLocation <em>CDO
+	 * Repository Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Repository Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation
+	 * @generated
+	 */
+	EClass getCDORepositoryLocation();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getURL <em>URL</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>URL</em>'.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation#getURL()
+	 * @see #getCDORepositoryLocation()
+	 * @generated
+	 */
+	EAttribute getCDORepositoryLocation_URL();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getUUID <em>UUID</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>UUID</em>'.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation#getUUID()
+	 * @see #getCDORepositoryLocation()
+	 * @generated
+	 */
+	EAttribute getCDORepositoryLocation_UUID();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getName <em>Name</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation#getName()
+	 * @see #getCDORepositoryLocation()
+	 * @generated
+	 */
+	EAttribute getCDORepositoryLocation_Name();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.intent.mapping.CDORepositoryLocation#getBranchID <em>Branch ID</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Branch ID</em>'.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation#getBranchID()
+	 * @see #getCDORepositoryLocation()
+	 * @generated
+	 */
+	EAttribute getCDORepositoryLocation_BranchID();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOBinaryResourceLocation <em>CDO
+	 * Binary Resource Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Binary Resource Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOBinaryResourceLocation
+	 * @generated
+	 */
+	EClass getCDOBinaryResourceLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOTextResourceLocation <em>CDO
+	 * Text Resource Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Text Resource Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOTextResourceLocation
+	 * @generated
+	 */
+	EClass getCDOTextResourceLocation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.intent.mapping.CDOResourceLocation <em>CDO
+	 * Resource Location</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>CDO Resource Location</em>'.
+	 * @see org.eclipse.intent.mapping.CDOResourceLocation
+	 * @generated
+	 */
+	EClass getCDOResourceLocation();
+
+	/**
+	 * Returns the meta object for data type '{@link java.io.Serializable <em>Type</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>Type</em>'.
+	 * @see java.io.Serializable
+	 * @model instanceClass="java.io.Serializable"
+	 * @generated
+	 */
+	EDataType getType();
+
+	/**
+	 * Returns the factory that creates the instances of the model. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	MappingFactory getMappingFactory();
+
+	/**
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.LocationImpl
+		 * <em>Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.LocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLocation()
+		 * @generated
+		 */
+		EClass LOCATION = eINSTANCE.getLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>Source Links</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LOCATION__SOURCE_LINKS = eINSTANCE.getLocation_SourceLinks();
+
+		/**
+		 * The meta object literal for the '<em><b>Target Links</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LOCATION__TARGET_LINKS = eINSTANCE.getLocation_TargetLinks();
+
+		/**
+		 * The meta object literal for the '<em><b>Container</b></em>' container reference feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LOCATION__CONTAINER = eINSTANCE.getLocation_Container();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute LOCATION__TYPE = eINSTANCE.getLocation_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Marked As Deleted</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute LOCATION__MARKED_AS_DELETED = eINSTANCE.getLocation_MarkedAsDeleted();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.LinkImpl <em>Link</em>}'
+		 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.LinkImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLink()
+		 * @generated
+		 */
+		EClass LINK = eINSTANCE.getLink();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute LINK__DESCRIPTION = eINSTANCE.getLink_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' container reference feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LINK__SOURCE = eINSTANCE.getLink_Source();
+
+		/**
+		 * The meta object literal for the '<em><b>Target</b></em>' reference feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LINK__TARGET = eINSTANCE.getLink_Target();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute LINK__TYPE = eINSTANCE.getLink_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Reports</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LINK__REPORTS = eINSTANCE.getLink_Reports();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.BaseImpl <em>Base</em>}'
+		 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.BaseImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getBase()
+		 * @generated
+		 */
+		EClass BASE = eINSTANCE.getBase();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute BASE__NAME = eINSTANCE.getBase_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Reports</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference BASE__REPORTS = eINSTANCE.getBase_Reports();
+
+		/**
+		 * The meta object literal for the '<em><b>Container Providers</b></em>' attribute list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute BASE__CONTAINER_PROVIDERS = eINSTANCE.getBase_ContainerProviders();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.IEMFBaseElement <em>IEMF Base
+		 * Element</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.IEMFBaseElement
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getIEMFBaseElement()
+		 * @generated
+		 */
+		EClass IEMF_BASE_ELEMENT = eINSTANCE.getIEMFBaseElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.TextLocationImpl <em>Text
+		 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.TextLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getTextLocation()
+		 * @generated
+		 */
+		EClass TEXT_LOCATION = eINSTANCE.getTextLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>Start Offset</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEXT_LOCATION__START_OFFSET = eINSTANCE.getTextLocation_StartOffset();
+
+		/**
+		 * The meta object literal for the '<em><b>End Offset</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEXT_LOCATION__END_OFFSET = eINSTANCE.getTextLocation_EndOffset();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.TextContainer <em>Text
+		 * Container</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.TextContainer
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getTextContainer()
+		 * @generated
+		 */
+		EClass TEXT_CONTAINER = eINSTANCE.getTextContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Text</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEXT_CONTAINER__TEXT = eINSTANCE.getTextContainer_Text();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl
+		 * <em>EObject Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.EObjectLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getEObjectLocation()
+		 * @generated
+		 */
+		EClass EOBJECT_LOCATION = eINSTANCE.getEObjectLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>URI Fragment</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EOBJECT_LOCATION__URI_FRAGMENT = eINSTANCE.getEObjectLocation_URIFragment();
+
+		/**
+		 * The meta object literal for the '<em><b>Saved URI Fragment</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EOBJECT_LOCATION__SAVED_URI_FRAGMENT = eINSTANCE.getEObjectLocation_SavedURIFragment();
+
+		/**
+		 * The meta object literal for the '<em><b>Feature Name</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EOBJECT_LOCATION__FEATURE_NAME = eINSTANCE.getEObjectLocation_FeatureName();
+
+		/**
+		 * The meta object literal for the '<em><b>Index</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EOBJECT_LOCATION__INDEX = eINSTANCE.getEObjectLocation_Index();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.LocationContainer <em>Location
+		 * Container</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.LocationContainer
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getLocationContainer()
+		 * @generated
+		 */
+		EClass LOCATION_CONTAINER = eINSTANCE.getLocationContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LOCATION_CONTAINER__CONTENTS = eINSTANCE.getLocationContainer_Contents();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.ReportImpl
+		 * <em>Report</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.ReportImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getReport()
+		 * @generated
+		 */
+		EClass REPORT = eINSTANCE.getReport();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute REPORT__DESCRIPTION = eINSTANCE.getReport_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Link</b></em>' reference feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference REPORT__LINK = eINSTANCE.getReport_Link();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.CoupleImpl
+		 * <em>Couple</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CoupleImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCouple()
+		 * @generated
+		 */
+		EClass COUPLE = eINSTANCE.getCouple();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute COUPLE__KEY = eINSTANCE.getCouple_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute COUPLE__VALUE = eINSTANCE.getCouple_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.EObjectContainer <em>EObject
+		 * Container</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.EObjectContainer
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getEObjectContainer()
+		 * @generated
+		 */
+		EClass EOBJECT_CONTAINER = eINSTANCE.getEObjectContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>XMI Content</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EOBJECT_CONTAINER__XMI_CONTENT = eINSTANCE.getEObjectContainer_XMIContent();
+
+		/**
+		 * The meta object literal for the '<em><b>Saved URI Fragments</b></em>' containment reference list
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS = eINSTANCE.getEObjectContainer_SavedURIFragments();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation <em>CDO
+		 * Resource Node Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.CDOResourceNodeLocation
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOResourceNodeLocation()
+		 * @generated
+		 */
+		EClass CDO_RESOURCE_NODE_LOCATION = eINSTANCE.getCDOResourceNodeLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>Path</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute CDO_RESOURCE_NODE_LOCATION__PATH = eINSTANCE.getCDOResourceNodeLocation_Path();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.CDOFileLocation <em>CDO File
+		 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.CDOFileLocation
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOFileLocation()
+		 * @generated
+		 */
+		EClass CDO_FILE_LOCATION = eINSTANCE.getCDOFileLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.CDOFolderLocationImpl
+		 * <em>CDO Folder Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CDOFolderLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOFolderLocation()
+		 * @generated
+		 */
+		EClass CDO_FOLDER_LOCATION = eINSTANCE.getCDOFolderLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl
+		 * <em>CDO Repository Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDORepositoryLocation()
+		 * @generated
+		 */
+		EClass CDO_REPOSITORY_LOCATION = eINSTANCE.getCDORepositoryLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>URL</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute CDO_REPOSITORY_LOCATION__URL = eINSTANCE.getCDORepositoryLocation_URL();
+
+		/**
+		 * The meta object literal for the '<em><b>UUID</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute CDO_REPOSITORY_LOCATION__UUID = eINSTANCE.getCDORepositoryLocation_UUID();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute CDO_REPOSITORY_LOCATION__NAME = eINSTANCE.getCDORepositoryLocation_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Branch ID</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute CDO_REPOSITORY_LOCATION__BRANCH_ID = eINSTANCE.getCDORepositoryLocation_BranchID();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.intent.mapping.impl.CDOBinaryResourceLocationImpl <em>CDO Binary Resource
+		 * Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CDOBinaryResourceLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOBinaryResourceLocation()
+		 * @generated
+		 */
+		EClass CDO_BINARY_RESOURCE_LOCATION = eINSTANCE.getCDOBinaryResourceLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl
+		 * <em>CDO Text Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOTextResourceLocation()
+		 * @generated
+		 */
+		EClass CDO_TEXT_RESOURCE_LOCATION = eINSTANCE.getCDOTextResourceLocation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.intent.mapping.impl.CDOResourceLocationImpl
+		 * <em>CDO Resource Location</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.intent.mapping.impl.CDOResourceLocationImpl
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getCDOResourceLocation()
+		 * @generated
+		 */
+		EClass CDO_RESOURCE_LOCATION = eINSTANCE.getCDOResourceLocation();
+
+		/**
+		 * The meta object literal for the '<em>Type</em>' data type. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see java.io.Serializable
+		 * @see org.eclipse.intent.mapping.impl.MappingPackageImpl#getType()
+		 * @generated
+		 */
+		EDataType TYPE = eINSTANCE.getType();
+
+	}
+
+} // MappingPackage
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Report.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Report.java
new file mode 100644
index 0000000..7055e35
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/Report.java
@@ -0,0 +1,90 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.IReport;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Report</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.Report#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.Report#getLink <em>Link</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getReport()
+ * @model abstract="true"
+ * @generated NOT
+ */
+public interface Report extends IEMFBaseElement, IReport {
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getReport_Description()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Report#getDescription <em>Description</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Link</b></em>' reference. It is bidirectional and its opposite is '
+	 * {@link org.eclipse.intent.mapping.Link#getReports <em>Reports</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Link</em>' reference isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Link</em>' reference.
+	 * @see #setLink(Link)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getReport_Link()
+	 * @see org.eclipse.intent.mapping.Link#getReports
+	 * @model opposite="reports" required="true"
+	 * @generated NOT
+	 */
+	ILink getLink();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.Report#getLink <em>Link</em>}' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Link</em>' reference.
+	 * @see #getLink()
+	 * @generated NOT
+	 */
+	void setLink(ILink value);
+
+} // Report
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextContainer.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextContainer.java
new file mode 100644
index 0000000..b56ad85
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextContainer.java
@@ -0,0 +1,57 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Text Container</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.TextContainer#getText <em>Text</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getTextContainer()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface TextContainer extends Location {
+	/**
+	 * Returns the value of the '<em><b>Text</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Text</em>' attribute.
+	 * @see #setText(String)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getTextContainer_Text()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getText();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.TextContainer#getText <em>Text</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Text</em>' attribute.
+	 * @see #getText()
+	 * @generated
+	 */
+	void setText(String value);
+
+} // TextContainer
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextLocation.java
new file mode 100644
index 0000000..ef660f8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/TextLocation.java
@@ -0,0 +1,89 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping;
+
+import org.eclipse.intent.mapping.text.ITextLocation;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Text Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.TextLocation#getStartOffset <em>Start Offset</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.TextLocation#getEndOffset <em>End Offset</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.intent.mapping.MappingPackage#getTextLocation()
+ * @model
+ * @generated NOT
+ */
+public interface TextLocation extends Location, ITextLocation {
+	/**
+	 * Returns the value of the '<em><b>Start Offset</b></em>' attribute. The default value is
+	 * <code>"-1"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Text Offset</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Start Offset</em>' attribute.
+	 * @see #setStartOffset(int)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getTextLocation_StartOffset()
+	 * @model default="-1" required="true"
+	 * @generated
+	 */
+	int getStartOffset();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.TextLocation#getStartOffset <em>Start
+	 * Offset</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Start Offset</em>' attribute.
+	 * @see #getStartOffset()
+	 * @generated
+	 */
+	void setStartOffset(int value);
+
+	/**
+	 * Returns the value of the '<em><b>End Offset</b></em>' attribute. The default value is <code>"-1"</code>
+	 * . <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Offset</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>End Offset</em>' attribute.
+	 * @see #setEndOffset(int)
+	 * @see org.eclipse.intent.mapping.MappingPackage#getTextLocation_EndOffset()
+	 * @model default="-1" required="true"
+	 * @generated
+	 */
+	int getEndOffset();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.intent.mapping.TextLocation#getEndOffset <em>End
+	 * Offset</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>End Offset</em>' attribute.
+	 * @see #getEndOffset()
+	 * @generated
+	 */
+	void setEndOffset(int value);
+
+} // TextLocation
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/BaseImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/BaseImpl.java
new file mode 100644
index 0000000..204d370
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/BaseImpl.java
@@ -0,0 +1,380 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.BaseElementFactory.FactoryDescriptor;
+import org.eclipse.intent.mapping.base.ContainerProviderRegistry;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseListener;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.text.ITextLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Base</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.BaseImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.BaseImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.BaseImpl#getReports <em>Reports</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.BaseImpl#getContainerProviders <em>Container
+ * Providers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BaseImpl extends CDOObjectImpl implements Base {
+
+	/**
+	 * The {@link ContainerProviderRegistry}.
+	 * 
+	 * @generated NOT
+	 */
+	private final ContainerProviderRegistry registry;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public BaseImpl() {
+		super();
+		registry = new ContainerProviderRegistry(this);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.BASE;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ILocation> getContents() {
+		return (EList<ILocation>)eGet(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return (String)eGet(MappingPackage.Literals.BASE__NAME, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		eSet(MappingPackage.Literals.BASE__NAME, newName);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<IReport> getReports() {
+		return (EList<IReport>)eGet(MappingPackage.Literals.BASE__REPORTS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<String> getContainerProviders() {
+		return (EList<String>)eGet(MappingPackage.Literals.BASE__CONTAINER_PROVIDERS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LocationContainer.class) {
+			switch (derivedFeatureID) {
+				case MappingPackage.BASE__CONTENTS:
+					return MappingPackage.LOCATION_CONTAINER__CONTENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == LocationContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.LOCATION_CONTAINER__CONTENTS:
+					return MappingPackage.BASE__CONTENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * {@link IBase} adapter.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class BaseAdapter extends AdapterImpl {
+
+		/**
+		 * The {@link IBaseListener} to forward notification to.
+		 */
+		private final IBaseListener listener;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param listener
+		 *            the {@link IBaseListener} to forward notification to
+		 */
+		private BaseAdapter(IBaseListener listener) {
+			this.listener = listener;
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public void notifyChanged(Notification msg) {
+			final List<Adapter> eAdapters = new ArrayList<Adapter>(eAdapters());
+			switch (msg.getFeatureID(Base.class)) {
+				case MappingPackage.BASE__NAME:
+					listener.nameChanged((String)msg.getOldValue(), (String)msg.getNewValue());
+					break;
+				case MappingPackage.BASE__CONTENTS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							listener.contentsAdded((ILocation)msg.getNewValue());
+							break;
+						case Notification.ADD_MANY:
+							for (ILocation location : (List<ILocation>)msg.getNewValue()) {
+								listener.contentsAdded(location);
+							}
+							break;
+						case Notification.REMOVE:
+							listener.contentsRemoved((ILocation)msg.getOldValue());
+							break;
+						case Notification.REMOVE_MANY:
+							for (ILocation location : (List<ILocation>)msg.getOldValue()) {
+								listener.contentsRemoved(location);
+							}
+							break;
+					}
+					break;
+				case MappingPackage.BASE__REPORTS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							listener.reportAdded((IReport)msg.getNewValue());
+							break;
+						case Notification.ADD_MANY:
+							for (IReport report : (List<IReport>)msg.getNewValue()) {
+								listener.reportAdded(report);
+							}
+							break;
+						case Notification.REMOVE:
+							listener.reportRemoved((IReport)msg.getOldValue());
+							break;
+						case Notification.REMOVE_MANY:
+							for (IReport report : (List<IReport>)msg.getOldValue()) {
+								listener.reportRemoved(report);
+							}
+							break;
+					}
+					break;
+				case MappingPackage.BASE__CONTAINER_PROVIDERS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							listener.containerProviderAdded((String)msg.getNewValue());
+							break;
+						case Notification.ADD_MANY:
+							for (String provider : (List<String>)msg.getNewValue()) {
+								listener.containerProviderAdded(provider);
+							}
+							break;
+						case Notification.REMOVE:
+							listener.containerProviderRemoved((String)msg.getOldValue());
+							break;
+						case Notification.REMOVE_MANY:
+							for (String provider : (List<String>)msg.getOldValue()) {
+								listener.containerProviderRemoved(provider);
+							}
+							break;
+					}
+					break;
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBase#addListener(org.eclipse.intent.mapping.base.IBaseListener)
+	 * @generated NOT
+	 */
+	public void addListener(IBaseListener listener) {
+		eAdapters().add(new BaseAdapter(listener));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBase#removeListener(org.eclipse.intent.mapping.base.IBaseListener)
+	 * @generated NOT
+	 */
+	public void removeListener(IBaseListener listener) {
+		final Iterator<Adapter> it = eAdapters().iterator();
+		while (it.hasNext()) {
+			final Adapter adapter = it.next();
+			if (adapter instanceof BaseAdapter && ((BaseAdapter)adapter).listener == listener) {
+				it.remove();
+				break;
+			}
+		}
+	}
+
+	/**
+	 * The {@link BaseElementFactory}.
+	 * 
+	 * @generated NOT
+	 */
+	private final BaseElementFactory factory = initElementFactory();
+
+	/**
+	 * Initializes a {@link BaseElementFactory}.
+	 * 
+	 * @return the created and initialized {@link BaseElementFactory}
+	 * @generated NOT
+	 */
+	private BaseElementFactory initElementFactory() {
+		BaseElementFactory res = new BaseElementFactory();
+
+		res.addDescriptor(ILink.class, new FactoryDescriptor<LinkImpl>(LinkImpl.class));
+		res.addDescriptor(IReport.class, new FactoryDescriptor<ReportImpl>(ReportImpl.class));
+		res.addDescriptor(ITextLocation.class, new FactoryDescriptor<TextLocationImpl>(
+				TextLocationImpl.class));
+		res.addDescriptor(IEObjectLocation.class, new FactoryDescriptor<EObjectLocationImpl>(
+				EObjectLocationImpl.class));
+		res.addDescriptor(ICouple.class, new FactoryDescriptor<CoupleImpl>(CoupleImpl.class));
+
+		res.addDescriptor(ICDORepositoryLocation.class, new FactoryDescriptor<CDORepositoryLocationImpl>(
+				CDORepositoryLocationImpl.class));
+		res.addDescriptor(ICDOFolderLocation.class, new FactoryDescriptor<CDOFolderLocationImpl>(
+				CDOFolderLocationImpl.class));
+		res.addDescriptor(ICDOBinaryResourceLocation.class,
+				new FactoryDescriptor<CDOBinaryResourceLocationImpl>(CDOBinaryResourceLocationImpl.class));
+		res.addDescriptor(ICDOTextResourceLocation.class, new FactoryDescriptor<CDOTextResourceLocationImpl>(
+				CDOTextResourceLocationImpl.class));
+		res.addDescriptor(ICDOResourceLocation.class, new FactoryDescriptor<CDOResourceLocationImpl>(
+				CDOResourceLocationImpl.class));
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBase#getFactory()
+	 * @generated NOT
+	 */
+	public BaseElementFactory getFactory() {
+		return factory;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBase#save()
+	 * @generated NOT
+	 */
+	public void save() throws IOException {
+		final Resource eResource = this.eResource();
+		if (eResource != null) {
+			eResource.save(null);
+		} else {
+			throw new IOException("mapping base " + getName()
+					+ " is not contained in a resource and can't be saved.");
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBase#getContainerProviderRegistry()
+	 * @generated NOT
+	 */
+	public ContainerProviderRegistry getContainerProviderRegistry() {
+		return registry;
+	}
+
+} // BaseImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOBinaryResourceLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOBinaryResourceLocationImpl.java
new file mode 100644
index 0000000..5b4a474
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOBinaryResourceLocationImpl.java
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>CDO Binary Resource
+ * Location</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOBinaryResourceLocationImpl#getPath <em>Path</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CDOBinaryResourceLocationImpl extends LocationImpl implements CDOBinaryResourceLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOBinaryResourceLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.CDO_BINARY_RESOURCE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPath() {
+		return (String)eGet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPath(String newPath) {
+		eSet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, newPath);
+	}
+
+} // CDOBinaryResourceLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOFolderLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOFolderLocationImpl.java
new file mode 100644
index 0000000..a59dab3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOFolderLocationImpl.java
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>CDO Folder Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOFolderLocationImpl#getPath <em>Path</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CDOFolderLocationImpl extends LocationImpl implements CDOFolderLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOFolderLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.CDO_FOLDER_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPath() {
+		return (String)eGet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPath(String newPath) {
+		eSet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, newPath);
+	}
+
+} // CDOFolderLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDORepositoryLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDORepositoryLocationImpl.java
new file mode 100644
index 0000000..a131475
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDORepositoryLocationImpl.java
@@ -0,0 +1,126 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>CDO Repository Location</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl#getURL <em>URL</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl#getUUID <em>UUID</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDORepositoryLocationImpl#getBranchID <em>Branch ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CDORepositoryLocationImpl extends LocationImpl implements CDORepositoryLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDORepositoryLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.CDO_REPOSITORY_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getURL() {
+		return (String)eGet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__URL, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setURL(String newURL) {
+		eSet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__URL, newURL);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getUUID() {
+		return (String)eGet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__UUID, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setUUID(String newUUID) {
+		eSet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__UUID, newUUID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return (String)eGet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__NAME, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		eSet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__NAME, newName);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getBranchID() {
+		return (Integer)eGet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__BRANCH_ID, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setBranchID(int newBranchID) {
+		eSet(MappingPackage.Literals.CDO_REPOSITORY_LOCATION__BRANCH_ID, newBranchID);
+	}
+
+} // CDORepositoryLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOResourceLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOResourceLocationImpl.java
new file mode 100644
index 0000000..d5aac1f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOResourceLocationImpl.java
@@ -0,0 +1,144 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.emf.ICouple;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>CDO Resource Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOResourceLocationImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOResourceLocationImpl#getXMIContent <em>XMI Content</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOResourceLocationImpl#getSavedURIFragments <em>Saved URI
+ * Fragments</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CDOResourceLocationImpl extends LocationImpl implements CDOResourceLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOResourceLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.CDO_RESOURCE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPath() {
+		return (String)eGet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPath(String newPath) {
+		eSet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, newPath);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getXMIContent() {
+		return (String)eGet(MappingPackage.Literals.EOBJECT_CONTAINER__XMI_CONTENT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setXMIContent(String newXMIContent) {
+		eSet(MappingPackage.Literals.EOBJECT_CONTAINER__XMI_CONTENT, newXMIContent);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public List<ICouple> getSavedURIFragments() {
+		return (List<ICouple>)eGet(MappingPackage.Literals.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == EObjectContainer.class) {
+			switch (derivedFeatureID) {
+				case MappingPackage.CDO_RESOURCE_LOCATION__XMI_CONTENT:
+					return MappingPackage.EOBJECT_CONTAINER__XMI_CONTENT;
+				case MappingPackage.CDO_RESOURCE_LOCATION__SAVED_URI_FRAGMENTS:
+					return MappingPackage.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == EObjectContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.EOBJECT_CONTAINER__XMI_CONTENT:
+					return MappingPackage.CDO_RESOURCE_LOCATION__XMI_CONTENT;
+				case MappingPackage.EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS:
+					return MappingPackage.CDO_RESOURCE_LOCATION__SAVED_URI_FRAGMENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} // CDOResourceLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOTextResourceLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOTextResourceLocationImpl.java
new file mode 100644
index 0000000..1b1f157
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CDOTextResourceLocationImpl.java
@@ -0,0 +1,125 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.TextContainer;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>CDO Text Resource Location</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CDOTextResourceLocationImpl#getText <em>Text</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CDOTextResourceLocationImpl extends LocationImpl implements CDOTextResourceLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOTextResourceLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.CDO_TEXT_RESOURCE_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPath() {
+		return (String)eGet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPath(String newPath) {
+		eSet(MappingPackage.Literals.CDO_RESOURCE_NODE_LOCATION__PATH, newPath);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getText() {
+		return (String)eGet(MappingPackage.Literals.TEXT_CONTAINER__TEXT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setText(String newText) {
+		eSet(MappingPackage.Literals.TEXT_CONTAINER__TEXT, newText);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == TextContainer.class) {
+			switch (derivedFeatureID) {
+				case MappingPackage.CDO_TEXT_RESOURCE_LOCATION__TEXT:
+					return MappingPackage.TEXT_CONTAINER__TEXT;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == TextContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.TEXT_CONTAINER__TEXT:
+					return MappingPackage.CDO_TEXT_RESOURCE_LOCATION__TEXT;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} // CDOTextResourceLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CoupleImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CoupleImpl.java
new file mode 100644
index 0000000..6fc6f58
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/CoupleImpl.java
@@ -0,0 +1,99 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Couple</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.CoupleImpl#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.CoupleImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CoupleImpl extends CDOObjectImpl implements Couple {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CoupleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.COUPLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getKey() {
+		return (String)eGet(MappingPackage.Literals.COUPLE__KEY, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setKey(String newKey) {
+		eSet(MappingPackage.Literals.COUPLE__KEY, newKey);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getValue() {
+		return (String)eGet(MappingPackage.Literals.COUPLE__VALUE, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		eSet(MappingPackage.Literals.COUPLE__VALUE, newValue);
+	}
+
+} // CoupleImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/EObjectLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/EObjectLocationImpl.java
new file mode 100644
index 0000000..8da0635
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/EObjectLocationImpl.java
@@ -0,0 +1,148 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.MappingPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>EObject Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl#getURIFragment <em>URI Fragment</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl#getSavedURIFragment <em>Saved URI
+ * Fragment</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl#getFeatureName <em>Feature Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.EObjectLocationImpl#getIndex <em>Index</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectLocationImpl extends LocationImpl implements EObjectLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObjectLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.EOBJECT_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getURIFragment() {
+		return (String)eGet(MappingPackage.Literals.EOBJECT_LOCATION__URI_FRAGMENT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setURIFragment(String newURIFragment) {
+		eSet(MappingPackage.Literals.EOBJECT_LOCATION__URI_FRAGMENT, newURIFragment);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getSavedURIFragment() {
+		return (String)eGet(MappingPackage.Literals.EOBJECT_LOCATION__SAVED_URI_FRAGMENT, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setSavedURIFragment(String newSavedURIFragment) {
+		eSet(MappingPackage.Literals.EOBJECT_LOCATION__SAVED_URI_FRAGMENT, newSavedURIFragment);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getFeatureName() {
+		return (String)eGet(MappingPackage.Literals.EOBJECT_LOCATION__FEATURE_NAME, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setFeatureName(String newFeatureName) {
+		eSet(MappingPackage.Literals.EOBJECT_LOCATION__FEATURE_NAME, newFeatureName);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getIndex() {
+		return (Integer)eGet(MappingPackage.Literals.EOBJECT_LOCATION__INDEX, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setIndex(int newIndex) {
+		eSet(MappingPackage.Literals.EOBJECT_LOCATION__INDEX, newIndex);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (URIFragment: ");
+		result.append(getURIFragment());
+		result.append(", featureName: ");
+		result.append(getFeatureName());
+		result.append(", index: ");
+		result.append(getIndex());
+		result.append(')');
+		return result.toString();
+	}
+
+} // EObjectLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LinkImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LinkImpl.java
new file mode 100644
index 0000000..9912465
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LinkImpl.java
@@ -0,0 +1,331 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILinkListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.IReport;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Link</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.LinkImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LinkImpl#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LinkImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LinkImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LinkImpl#getReports <em>Reports</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LinkImpl extends CDOObjectImpl implements Link {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.LINK;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getDescription() {
+		return (String)eGet(MappingPackage.Literals.LINK__DESCRIPTION, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDescription(String newDescription) {
+		eSet(MappingPackage.Literals.LINK__DESCRIPTION, newDescription);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Location getSource() {
+		return (Location)eGet(MappingPackage.Literals.LINK__SOURCE, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setSource(Location newSource) {
+		eSet(MappingPackage.Literals.LINK__SOURCE, newSource);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public void setSource(ILocation newSource) {
+		eSet(MappingPackage.Literals.LINK__SOURCE, newSource);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecore.impl.BasicEObjectImpl#eInverseRemove(org.eclipse.emf.ecore.InternalEObject,
+	 *      int, org.eclipse.emf.common.notify.NotificationChain)
+	 * @generated NOT
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		final ILocation oldLocation;
+		if (featureID == MappingPackage.LINK__SOURCE) {
+			oldLocation = getSource();
+		} else if (featureID == MappingPackage.LINK__TARGET) {
+			oldLocation = getTarget();
+		} else {
+			oldLocation = null;
+		}
+
+		final NotificationChain result = super.eInverseRemove(otherEnd, featureID, msgs);
+
+		if (oldLocation != null) {
+			final ILocationContainer container = oldLocation.getContainer();
+			if (container != null && oldLocation.getTargetLinks().isEmpty() && oldLocation.getSourceLinks()
+					.isEmpty()) {
+				container.getContents().remove(oldLocation);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Location getTarget() {
+		return (Location)eGet(MappingPackage.Literals.LINK__TARGET, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setTarget(Location newTarget) {
+		eSet(MappingPackage.Literals.LINK__TARGET, newTarget);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public void setTarget(ILocation newTarget) {
+		eSet(MappingPackage.Literals.LINK__TARGET, newTarget);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Serializable getType() {
+		return (Serializable)eGet(MappingPackage.Literals.LINK__TYPE, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setType(Serializable newType) {
+		eSet(MappingPackage.Literals.LINK__TYPE, newType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<IReport> getReports() {
+		return (EList<IReport>)eGet(MappingPackage.Literals.LINK__REPORTS, true);
+	}
+
+	/**
+	 * {@link ILink} adapter.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class LinkAdapter extends AdapterImpl {
+
+		/**
+		 * The {@link ILinkListener} to forward notification to.
+		 */
+		private final ILinkListener listener;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param listener
+		 *            the {@link ILinkListener} to forward notification to
+		 */
+		private LinkAdapter(ILinkListener listener) {
+			this.listener = listener;
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public void notifyChanged(Notification msg) {
+			final List<Adapter> eAdapters = new ArrayList<Adapter>(eAdapters());
+			switch (msg.getFeatureID(Link.class)) {
+				case MappingPackage.LINK__DESCRIPTION:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof LinkAdapter) {
+							((LinkAdapter)adapter).listener.descriptionChanged((String)msg.getOldValue(),
+									(String)msg.getNewValue());
+						}
+					}
+					break;
+				case MappingPackage.LINK__SOURCE:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof LinkAdapter) {
+							((LinkAdapter)adapter).listener.sourceChanged((Location)msg.getOldValue(),
+									(Location)msg.getNewValue());
+						}
+					}
+					break;
+				case MappingPackage.LINK__TARGET:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof LinkAdapter) {
+							((LinkAdapter)adapter).listener.targetChanged((Location)msg.getOldValue(),
+									(Location)msg.getNewValue());
+						}
+					}
+					break;
+				case MappingPackage.LINK__REPORTS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LinkAdapter) {
+									((LinkAdapter)adapter).listener.reportAdded((IReport)msg.getNewValue());
+								}
+							}
+							break;
+						case Notification.ADD_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LinkAdapter) {
+									for (IReport report : (List<IReport>)msg.getNewValue()) {
+										((LinkAdapter)adapter).listener.reportAdded(report);
+									}
+								}
+							}
+							break;
+						case Notification.REMOVE:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LinkAdapter) {
+									((LinkAdapter)adapter).listener.reportRemoved((IReport)msg.getOldValue());
+								}
+							}
+							break;
+						case Notification.REMOVE_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LinkAdapter) {
+									for (IReport report : (List<IReport>)msg.getOldValue()) {
+										((LinkAdapter)adapter).listener.reportRemoved(report);
+									}
+								}
+							}
+					}
+					break;
+			}
+		}
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILink#addListener(org.eclipse.intent.mapping.base.ILinkListener)
+	 * @generated NOT
+	 */
+	public void addListener(ILinkListener listener) {
+		eAdapters().add(new LinkAdapter(listener));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILink#removeListener(org.eclipse.intent.mapping.base.ILinkListener)
+	 * @generated NOT
+	 */
+	public void removeListener(ILinkListener listener) {
+		final Iterator<Adapter> it = eAdapters().iterator();
+		while (it.hasNext()) {
+			final Adapter adapter = it.next();
+			if (adapter instanceof LinkAdapter && ((LinkAdapter)adapter).listener == listener) {
+				it.remove();
+				break;
+			}
+		}
+	}
+
+} // LinkImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LocationImpl.java
new file mode 100644
index 0000000..aeb792c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/LocationImpl.java
@@ -0,0 +1,415 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationListener;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Location</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getScope <em>Scope</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getSourceLinks <em>Source Links</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getTargetLinks <em>Target Links</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getContents <em>Contents</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.LocationImpl#getReferencingScopes <em>Referencing
+ * Scopes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LocationImpl extends CDOObjectImpl implements Location {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ILink> getSourceLinks() {
+		return (EList<ILink>)eGet(MappingPackage.Literals.LOCATION__SOURCE_LINKS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ILink> getTargetLinks() {
+		return (EList<ILink>)eGet(MappingPackage.Literals.LOCATION__TARGET_LINKS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ILocation> getContents() {
+		return (EList<ILocation>)eGet(MappingPackage.Literals.LOCATION_CONTAINER__CONTENTS, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LocationContainer getContainer() {
+		return (LocationContainer)eGet(MappingPackage.Literals.LOCATION__CONTAINER, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContainer(LocationContainer newContainer) {
+		eSet(MappingPackage.Literals.LOCATION__CONTAINER, newContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public void setContainer(ILocationContainer newContainer) {
+		eSet(MappingPackage.Literals.LOCATION__CONTAINER, newContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Serializable getType() {
+		return (Serializable)eGet(MappingPackage.Literals.LOCATION__TYPE, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setType(Serializable newType) {
+		eSet(MappingPackage.Literals.LOCATION__TYPE, newType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean isMarkedAsDeleted() {
+		return (Boolean)eGet(MappingPackage.Literals.LOCATION__MARKED_AS_DELETED, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMarkedAsDeleted(boolean newMarkedAsDeleted) {
+		eSet(MappingPackage.Literals.LOCATION__MARKED_AS_DELETED, newMarkedAsDeleted);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LocationContainer.class) {
+			switch (derivedFeatureID) {
+				case MappingPackage.LOCATION__CONTENTS:
+					return MappingPackage.LOCATION_CONTAINER__CONTENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == LocationContainer.class) {
+			switch (baseFeatureID) {
+				case MappingPackage.LOCATION_CONTAINER__CONTENTS:
+					return MappingPackage.LOCATION__CONTENTS;
+				default:
+					return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * {@link ILocation} adapter.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class LocationAdapter extends AdapterImpl {
+
+		/**
+		 * The {@link ILocationListener} to forward notification to.
+		 */
+		private final ILocationListener listener;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param listener
+		 *            the {@link ILocationListener} to forward notification to
+		 */
+		private LocationAdapter(ILocationListener listener) {
+			this.listener = listener;
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public void notifyChanged(Notification msg) {
+			final List<Adapter> eAdapters = new ArrayList<Adapter>(eAdapters());
+			switch (msg.getFeatureID(Location.class)) {
+				case MappingPackage.LOCATION__SOURCE_LINKS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.sourceLinkAdded((ILink)msg
+											.getNewValue());
+								}
+							}
+							break;
+						case Notification.ADD_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILink link : (List<ILink>)msg.getNewValue()) {
+										((LocationAdapter)adapter).listener.sourceLinkAdded(link);
+									}
+								}
+							}
+							break;
+						case Notification.REMOVE:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.sourceLinkRemoved((ILink)msg
+											.getOldValue());
+								}
+							}
+							break;
+						case Notification.REMOVE_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILink link : (List<ILink>)msg.getOldValue()) {
+										((LocationAdapter)adapter).listener.sourceLinkRemoved(link);
+									}
+								}
+							}
+							break;
+					}
+					break;
+				case MappingPackage.LOCATION__TARGET_LINKS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.targetLinkAdded((ILink)msg
+											.getNewValue());
+								}
+							}
+							break;
+						case Notification.ADD_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILink link : (List<ILink>)msg.getNewValue()) {
+										((LocationAdapter)adapter).listener.targetLinkAdded(link);
+									}
+								}
+							}
+							break;
+						case Notification.REMOVE:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.targetLinkRemoved((ILink)msg
+											.getOldValue());
+								}
+							}
+							break;
+						case Notification.REMOVE_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILink link : (List<ILink>)msg.getOldValue()) {
+										((LocationAdapter)adapter).listener.targetLinkRemoved(link);
+									}
+								}
+							}
+							break;
+					}
+					break;
+				case MappingPackage.LOCATION__CONTENTS:
+					switch (msg.getEventType()) {
+						case Notification.ADD:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.contentsAdded((ILocation)msg
+											.getNewValue());
+								}
+							}
+							break;
+						case Notification.ADD_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILocation location : (List<ILocation>)msg.getNewValue()) {
+										((LocationAdapter)adapter).listener.contentsAdded(location);
+									}
+								}
+							}
+							break;
+						case Notification.REMOVE:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									((LocationAdapter)adapter).listener.contentsRemoved((ILocation)msg
+											.getOldValue());
+								}
+							}
+							break;
+						case Notification.REMOVE_MANY:
+							for (Adapter adapter : eAdapters) {
+								if (adapter instanceof LocationAdapter) {
+									for (ILocation location : (List<ILocation>)msg.getOldValue()) {
+										((LocationAdapter)adapter).listener.contentsRemoved(location);
+									}
+								}
+							}
+							break;
+					}
+					break;
+				case MappingPackage.LOCATION__CONTAINER:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof LocationAdapter) {
+							((LocationAdapter)adapter).listener.containerChanged((ILocationContainer)msg
+									.getOldValue(), (ILocationContainer)msg.getNewValue());
+						}
+					}
+					break;
+				case MappingPackage.LOCATION__MARKED_AS_DELETED:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof LocationAdapter) {
+							((LocationAdapter)adapter).listener.markedAsDeletedChanged((Boolean)msg
+									.getNewValue());
+						}
+					}
+					break;
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocation#addListener(org.eclipse.intent.mapping.base.ILocationListener)
+	 * @generated NOT
+	 */
+	public void addListener(ILocationListener listener) {
+		eAdapters().add(new LocationAdapter(listener));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocation#removeListener(org.eclipse.intent.mapping.base.ILocationListener)
+	 * @generated NOT
+	 */
+	public void removeListener(ILocationListener listener) {
+		final Iterator<Adapter> it = eAdapters().iterator();
+		while (it.hasNext()) {
+			final Adapter adapter = it.next();
+			if (adapter instanceof LocationAdapter && ((LocationAdapter)adapter).listener == listener) {
+				it.remove();
+				break;
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocation#change(java.lang.String)
+	 * @generated NOT
+	 */
+	public void change(String reportDescription) {
+		final List<Adapter> eAdapters = new ArrayList<Adapter>(eAdapters());
+		for (Adapter adapter : eAdapters) {
+			if (adapter instanceof LocationAdapter) {
+				((LocationAdapter)adapter).listener.changed(reportDescription);
+			}
+		}
+	}
+
+} // LocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingFactoryImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingFactoryImpl.java
new file mode 100644
index 0000000..c87c2bb
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingFactoryImpl.java
@@ -0,0 +1,286 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.io.Serializable;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.MappingFactory;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+import org.eclipse.intent.mapping.TextLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class MappingFactoryImpl extends EFactoryImpl implements MappingFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static MappingFactory init() {
+		try {
+			MappingFactory theMappingFactory = (MappingFactory)EPackage.Registry.INSTANCE.getEFactory(
+					MappingPackage.eNS_URI);
+			if (theMappingFactory != null) {
+				return theMappingFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new MappingFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case MappingPackage.LINK:
+				return (EObject)createLink();
+			case MappingPackage.BASE:
+				return (EObject)createBase();
+			case MappingPackage.TEXT_LOCATION:
+				return (EObject)createTextLocation();
+			case MappingPackage.EOBJECT_LOCATION:
+				return (EObject)createEObjectLocation();
+			case MappingPackage.REPORT:
+				return (EObject)createReport();
+			case MappingPackage.COUPLE:
+				return (EObject)createCouple();
+			case MappingPackage.CDO_FOLDER_LOCATION:
+				return (EObject)createCDOFolderLocation();
+			case MappingPackage.CDO_REPOSITORY_LOCATION:
+				return (EObject)createCDORepositoryLocation();
+			case MappingPackage.CDO_BINARY_RESOURCE_LOCATION:
+				return (EObject)createCDOBinaryResourceLocation();
+			case MappingPackage.CDO_TEXT_RESOURCE_LOCATION:
+				return (EObject)createCDOTextResourceLocation();
+			case MappingPackage.CDO_RESOURCE_LOCATION:
+				return (EObject)createCDOResourceLocation();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case MappingPackage.TYPE:
+				return createTypeFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case MappingPackage.TYPE:
+				return convertTypeToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Link createLink() {
+		LinkImpl link = new LinkImpl();
+		return link;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Base createBase() {
+		BaseImpl base = new BaseImpl();
+		return base;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TextLocation createTextLocation() {
+		TextLocationImpl textLocation = new TextLocationImpl();
+		return textLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObjectLocation createEObjectLocation() {
+		EObjectLocationImpl eObjectLocation = new EObjectLocationImpl();
+		return eObjectLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Report createReport() {
+		ReportImpl report = new ReportImpl();
+		return report;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Couple createCouple() {
+		CoupleImpl couple = new CoupleImpl();
+		return couple;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOFolderLocation createCDOFolderLocation() {
+		CDOFolderLocationImpl cdoFolderLocation = new CDOFolderLocationImpl();
+		return cdoFolderLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDORepositoryLocation createCDORepositoryLocation() {
+		CDORepositoryLocationImpl cdoRepositoryLocation = new CDORepositoryLocationImpl();
+		return cdoRepositoryLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOBinaryResourceLocation createCDOBinaryResourceLocation() {
+		CDOBinaryResourceLocationImpl cdoBinaryResourceLocation = new CDOBinaryResourceLocationImpl();
+		return cdoBinaryResourceLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOTextResourceLocation createCDOTextResourceLocation() {
+		CDOTextResourceLocationImpl cdoTextResourceLocation = new CDOTextResourceLocationImpl();
+		return cdoTextResourceLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public CDOResourceLocation createCDOResourceLocation() {
+		CDOResourceLocationImpl cdoResourceLocation = new CDOResourceLocationImpl();
+		return cdoResourceLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Serializable createTypeFromString(EDataType eDataType, String initialValue) {
+		return (Serializable)super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertTypeToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingPackage getMappingPackage() {
+		return (MappingPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static MappingPackage getPackage() {
+		return MappingPackage.eINSTANCE;
+	}
+
+} // MappingFactoryImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingPackageImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingPackageImpl.java
new file mode 100644
index 0000000..ad667ef
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/MappingPackageImpl.java
@@ -0,0 +1,1008 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.io.Serializable;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.CDOFileLocation;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.CDOResourceNodeLocation;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.IEMFBaseElement;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.MappingFactory;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.TextLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class MappingPackageImpl extends EPackageImpl implements MappingPackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass locationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass linkEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass baseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass iemfBaseElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass textLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass textContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass eObjectLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass locationContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass reportEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass coupleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass eObjectContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoResourceNodeLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoFileLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoFolderLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoRepositoryLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoBinaryResourceLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoTextResourceLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass cdoResourceLocationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType typeEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory method {@link #init init()},
+	 * which also performs initialization of the package, or returns the registered package, if one already
+	 * exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.intent.mapping.MappingPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private MappingPackageImpl() {
+		super(eNS_URI, MappingFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it
+	 * depends.
+	 * <p>
+	 * This method is used to initialize {@link MappingPackage#eINSTANCE} when that field is accessed. Clients
+	 * should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static MappingPackage init() {
+		if (isInited)
+			return (MappingPackage)EPackage.Registry.INSTANCE.getEPackage(MappingPackage.eNS_URI);
+
+		// Obtain or create and register package
+		MappingPackageImpl theMappingPackage = (MappingPackageImpl)(EPackage.Registry.INSTANCE.get(
+				eNS_URI) instanceof MappingPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+						: new MappingPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theMappingPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theMappingPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theMappingPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(MappingPackage.eNS_URI, theMappingPackage);
+		return theMappingPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getLocation() {
+		return locationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLocation_SourceLinks() {
+		return (EReference)locationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLocation_TargetLinks() {
+		return (EReference)locationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLocation_Container() {
+		return (EReference)locationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getLocation_Type() {
+		return (EAttribute)locationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getLocation_MarkedAsDeleted() {
+		return (EAttribute)locationEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getLink() {
+		return linkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getLink_Description() {
+		return (EAttribute)linkEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLink_Source() {
+		return (EReference)linkEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLink_Target() {
+		return (EReference)linkEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getLink_Type() {
+		return (EAttribute)linkEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLink_Reports() {
+		return (EReference)linkEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getBase() {
+		return baseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getBase_Name() {
+		return (EAttribute)baseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getBase_Reports() {
+		return (EReference)baseEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getBase_ContainerProviders() {
+		return (EAttribute)baseEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getIEMFBaseElement() {
+		return iemfBaseElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getTextLocation() {
+		return textLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTextLocation_StartOffset() {
+		return (EAttribute)textLocationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTextLocation_EndOffset() {
+		return (EAttribute)textLocationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getTextContainer() {
+		return textContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTextContainer_Text() {
+		return (EAttribute)textContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEObjectLocation() {
+		return eObjectLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEObjectLocation_URIFragment() {
+		return (EAttribute)eObjectLocationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEObjectLocation_SavedURIFragment() {
+		return (EAttribute)eObjectLocationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEObjectLocation_FeatureName() {
+		return (EAttribute)eObjectLocationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEObjectLocation_Index() {
+		return (EAttribute)eObjectLocationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getLocationContainer() {
+		return locationContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getLocationContainer_Contents() {
+		return (EReference)locationContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getReport() {
+		return reportEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getReport_Description() {
+		return (EAttribute)reportEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getReport_Link() {
+		return (EReference)reportEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCouple() {
+		return coupleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCouple_Key() {
+		return (EAttribute)coupleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCouple_Value() {
+		return (EAttribute)coupleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEObjectContainer() {
+		return eObjectContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEObjectContainer_XMIContent() {
+		return (EAttribute)eObjectContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getEObjectContainer_SavedURIFragments() {
+		return (EReference)eObjectContainerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOResourceNodeLocation() {
+		return cdoResourceNodeLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCDOResourceNodeLocation_Path() {
+		return (EAttribute)cdoResourceNodeLocationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOFileLocation() {
+		return cdoFileLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOFolderLocation() {
+		return cdoFolderLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDORepositoryLocation() {
+		return cdoRepositoryLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCDORepositoryLocation_URL() {
+		return (EAttribute)cdoRepositoryLocationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCDORepositoryLocation_UUID() {
+		return (EAttribute)cdoRepositoryLocationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCDORepositoryLocation_Name() {
+		return (EAttribute)cdoRepositoryLocationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getCDORepositoryLocation_BranchID() {
+		return (EAttribute)cdoRepositoryLocationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOBinaryResourceLocation() {
+		return cdoBinaryResourceLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOTextResourceLocation() {
+		return cdoTextResourceLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCDOResourceLocation() {
+		return cdoResourceLocationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getType() {
+		return typeEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingFactory getMappingFactory() {
+		return (MappingFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is guarded to have no affect on any
+	 * invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		locationEClass = createEClass(LOCATION);
+		createEReference(locationEClass, LOCATION__SOURCE_LINKS);
+		createEReference(locationEClass, LOCATION__TARGET_LINKS);
+		createEReference(locationEClass, LOCATION__CONTAINER);
+		createEAttribute(locationEClass, LOCATION__TYPE);
+		createEAttribute(locationEClass, LOCATION__MARKED_AS_DELETED);
+
+		linkEClass = createEClass(LINK);
+		createEAttribute(linkEClass, LINK__DESCRIPTION);
+		createEReference(linkEClass, LINK__SOURCE);
+		createEReference(linkEClass, LINK__TARGET);
+		createEAttribute(linkEClass, LINK__TYPE);
+		createEReference(linkEClass, LINK__REPORTS);
+
+		baseEClass = createEClass(BASE);
+		createEAttribute(baseEClass, BASE__NAME);
+		createEReference(baseEClass, BASE__REPORTS);
+		createEAttribute(baseEClass, BASE__CONTAINER_PROVIDERS);
+
+		iemfBaseElementEClass = createEClass(IEMF_BASE_ELEMENT);
+
+		textLocationEClass = createEClass(TEXT_LOCATION);
+		createEAttribute(textLocationEClass, TEXT_LOCATION__START_OFFSET);
+		createEAttribute(textLocationEClass, TEXT_LOCATION__END_OFFSET);
+
+		textContainerEClass = createEClass(TEXT_CONTAINER);
+		createEAttribute(textContainerEClass, TEXT_CONTAINER__TEXT);
+
+		eObjectLocationEClass = createEClass(EOBJECT_LOCATION);
+		createEAttribute(eObjectLocationEClass, EOBJECT_LOCATION__URI_FRAGMENT);
+		createEAttribute(eObjectLocationEClass, EOBJECT_LOCATION__SAVED_URI_FRAGMENT);
+		createEAttribute(eObjectLocationEClass, EOBJECT_LOCATION__FEATURE_NAME);
+		createEAttribute(eObjectLocationEClass, EOBJECT_LOCATION__INDEX);
+
+		locationContainerEClass = createEClass(LOCATION_CONTAINER);
+		createEReference(locationContainerEClass, LOCATION_CONTAINER__CONTENTS);
+
+		reportEClass = createEClass(REPORT);
+		createEAttribute(reportEClass, REPORT__DESCRIPTION);
+		createEReference(reportEClass, REPORT__LINK);
+
+		coupleEClass = createEClass(COUPLE);
+		createEAttribute(coupleEClass, COUPLE__KEY);
+		createEAttribute(coupleEClass, COUPLE__VALUE);
+
+		eObjectContainerEClass = createEClass(EOBJECT_CONTAINER);
+		createEAttribute(eObjectContainerEClass, EOBJECT_CONTAINER__XMI_CONTENT);
+		createEReference(eObjectContainerEClass, EOBJECT_CONTAINER__SAVED_URI_FRAGMENTS);
+
+		cdoResourceNodeLocationEClass = createEClass(CDO_RESOURCE_NODE_LOCATION);
+		createEAttribute(cdoResourceNodeLocationEClass, CDO_RESOURCE_NODE_LOCATION__PATH);
+
+		cdoFileLocationEClass = createEClass(CDO_FILE_LOCATION);
+
+		cdoFolderLocationEClass = createEClass(CDO_FOLDER_LOCATION);
+
+		cdoRepositoryLocationEClass = createEClass(CDO_REPOSITORY_LOCATION);
+		createEAttribute(cdoRepositoryLocationEClass, CDO_REPOSITORY_LOCATION__URL);
+		createEAttribute(cdoRepositoryLocationEClass, CDO_REPOSITORY_LOCATION__UUID);
+		createEAttribute(cdoRepositoryLocationEClass, CDO_REPOSITORY_LOCATION__NAME);
+		createEAttribute(cdoRepositoryLocationEClass, CDO_REPOSITORY_LOCATION__BRANCH_ID);
+
+		cdoBinaryResourceLocationEClass = createEClass(CDO_BINARY_RESOURCE_LOCATION);
+
+		cdoTextResourceLocationEClass = createEClass(CDO_TEXT_RESOURCE_LOCATION);
+
+		cdoResourceLocationEClass = createEClass(CDO_RESOURCE_LOCATION);
+
+		// Create data types
+		typeEDataType = createEDataType(TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This method is guarded to have no affect
+	 * on any invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		locationEClass.getESuperTypes().add(this.getIEMFBaseElement());
+		locationEClass.getESuperTypes().add(this.getLocationContainer());
+		linkEClass.getESuperTypes().add(this.getIEMFBaseElement());
+		baseEClass.getESuperTypes().add(this.getIEMFBaseElement());
+		baseEClass.getESuperTypes().add(this.getLocationContainer());
+		textLocationEClass.getESuperTypes().add(this.getLocation());
+		textContainerEClass.getESuperTypes().add(this.getLocation());
+		eObjectLocationEClass.getESuperTypes().add(this.getLocation());
+		reportEClass.getESuperTypes().add(this.getIEMFBaseElement());
+		eObjectContainerEClass.getESuperTypes().add(this.getLocation());
+		cdoResourceNodeLocationEClass.getESuperTypes().add(this.getLocation());
+		cdoFileLocationEClass.getESuperTypes().add(this.getCDOResourceNodeLocation());
+		cdoFolderLocationEClass.getESuperTypes().add(this.getCDOResourceNodeLocation());
+		cdoRepositoryLocationEClass.getESuperTypes().add(this.getLocation());
+		cdoBinaryResourceLocationEClass.getESuperTypes().add(this.getCDOFileLocation());
+		cdoTextResourceLocationEClass.getESuperTypes().add(this.getCDOFileLocation());
+		cdoTextResourceLocationEClass.getESuperTypes().add(this.getTextContainer());
+		cdoResourceLocationEClass.getESuperTypes().add(this.getCDOFileLocation());
+		cdoResourceLocationEClass.getESuperTypes().add(this.getEObjectContainer());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(locationEClass, Location.class, "Location", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLocation_SourceLinks(), this.getLink(), this.getLink_Target(), "sourceLinks", null,
+				0, -1, Location.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLocation_TargetLinks(), this.getLink(), this.getLink_Source(), "targetLinks", null,
+				0, -1, Location.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLocation_Container(), this.getLocationContainer(), this
+				.getLocationContainer_Contents(), "container", null, 0, 1, Location.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLocation_Type(), this.getType(), "type", null, 0, 1, Location.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLocation_MarkedAsDeleted(), ecorePackage.getEBoolean(), "markedAsDeleted", "false",
+				1, 1, Location.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(linkEClass, Link.class, "Link", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLink_Description(), ecorePackage.getEString(), "description", null, 1, 1,
+				Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getLink_Source(), this.getLocation(), this.getLocation_TargetLinks(), "source", null,
+				1, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLink_Target(), this.getLocation(), this.getLocation_SourceLinks(), "target", null,
+				1, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLink_Type(), this.getType(), "type", null, 0, 1, Link.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLink_Reports(), this.getReport(), this.getReport_Link(), "reports", null, 0, -1,
+				Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(baseEClass, Base.class, "Base", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBase_Name(), ecorePackage.getEString(), "name", null, 1, 1, Base.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getBase_Reports(), this.getReport(), null, "reports", null, 0, -1, Base.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getBase_ContainerProviders(), ecorePackage.getEString(), "containerProviders", null, 0,
+				-1, Base.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(iemfBaseElementEClass, IEMFBaseElement.class, "IEMFBaseElement", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(textLocationEClass, TextLocation.class, "TextLocation", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTextLocation_StartOffset(), ecorePackage.getEInt(), "startOffset", "-1", 1, 1,
+				TextLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTextLocation_EndOffset(), ecorePackage.getEInt(), "endOffset", "-1", 1, 1,
+				TextLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(textContainerEClass, TextContainer.class, "TextContainer", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTextContainer_Text(), ecorePackage.getEString(), "text", null, 1, 1,
+				TextContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(eObjectLocationEClass, EObjectLocation.class, "EObjectLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEObjectLocation_URIFragment(), ecorePackage.getEString(), "URIFragment", null, 1, 1,
+				EObjectLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEObjectLocation_SavedURIFragment(), ecorePackage.getEString(), "savedURIFragment",
+				null, 1, 1, EObjectLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEObjectLocation_FeatureName(), ecorePackage.getEString(), "featureName", null, 0, 1,
+				EObjectLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEObjectLocation_Index(), ecorePackage.getEInt(), "index", "0", 1, 1,
+				EObjectLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(locationContainerEClass, LocationContainer.class, "LocationContainer", IS_ABSTRACT,
+				IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLocationContainer_Contents(), this.getLocation(), this.getLocation_Container(),
+				"contents", null, 0, -1, LocationContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(reportEClass, Report.class, "Report", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getReport_Description(), ecorePackage.getEString(), "description", null, 1, 1,
+				Report.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getReport_Link(), this.getLink(), this.getLink_Reports(), "link", null, 1, 1,
+				Report.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(coupleEClass, Couple.class, "Couple", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCouple_Key(), ecorePackage.getEString(), "key", null, 1, 1, Couple.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getCouple_Value(), ecorePackage.getEString(), "value", null, 1, 1, Couple.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(eObjectContainerEClass, EObjectContainer.class, "EObjectContainer", IS_ABSTRACT,
+				IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEObjectContainer_XMIContent(), ecorePackage.getEString(), "XMIContent", null, 1, 1,
+				EObjectContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEObjectContainer_SavedURIFragments(), this.getCouple(), null, "savedURIFragments",
+				null, 0, -1, EObjectContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cdoResourceNodeLocationEClass, CDOResourceNodeLocation.class, "CDOResourceNodeLocation",
+				IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCDOResourceNodeLocation_Path(), ecorePackage.getEString(), "path", null, 1, 1,
+				CDOResourceNodeLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cdoFileLocationEClass, CDOFileLocation.class, "CDOFileLocation", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cdoFolderLocationEClass, CDOFolderLocation.class, "CDOFolderLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cdoRepositoryLocationEClass, CDORepositoryLocation.class, "CDORepositoryLocation",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCDORepositoryLocation_URL(), ecorePackage.getEString(), "URL", null, 0, 1,
+				CDORepositoryLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCDORepositoryLocation_UUID(), ecorePackage.getEString(), "UUID", null, 1, 1,
+				CDORepositoryLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCDORepositoryLocation_Name(), ecorePackage.getEString(), "name", null, 1, 1,
+				CDORepositoryLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCDORepositoryLocation_BranchID(), ecorePackage.getEInt(), "branchID", "-1", 1, 1,
+				CDORepositoryLocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cdoBinaryResourceLocationEClass, CDOBinaryResourceLocation.class,
+				"CDOBinaryResourceLocation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cdoTextResourceLocationEClass, CDOTextResourceLocation.class, "CDOTextResourceLocation",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cdoResourceLocationEClass, CDOResourceLocation.class, "CDOResourceLocation", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Initialize data types
+		initEDataType(typeEDataType, Serializable.class, "Type", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // MappingPackageImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/ReportImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/ReportImpl.java
new file mode 100644
index 0000000..4706b28
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/ReportImpl.java
@@ -0,0 +1,191 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.base.IReportListener;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Report</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.ReportImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.ReportImpl#getLink <em>Link</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ReportImpl extends CDOObjectImpl implements Report {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ReportImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.REPORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getDescription() {
+		return (String)eGet(MappingPackage.Literals.REPORT__DESCRIPTION, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDescription(String newDescription) {
+		eSet(MappingPackage.Literals.REPORT__DESCRIPTION, newDescription);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Link getLink() {
+		return (Link)eGet(MappingPackage.Literals.REPORT__LINK, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setLink(Link newLink) {
+		eSet(MappingPackage.Literals.REPORT__LINK, newLink);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public void setLink(ILink newLink) {
+		eSet(MappingPackage.Literals.REPORT__LINK, newLink);
+	}
+
+	/**
+	 * {@link IReport} adapter.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class ReportAdapter extends AdapterImpl {
+
+		/**
+		 * The {@link IReportListener} to forward notification to.
+		 */
+		private final IReportListener listener;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param listener
+		 *            the {@link IReportListener} to forward notification to
+		 */
+		private ReportAdapter(IReportListener listener) {
+			this.listener = listener;
+		}
+
+		@Override
+		public void notifyChanged(Notification msg) {
+			final List<Adapter> eAdapters = new ArrayList<Adapter>(eAdapters());
+			switch (msg.getFeatureID(Report.class)) {
+				case MappingPackage.REPORT__DESCRIPTION:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof ReportAdapter) {
+							((ReportAdapter)adapter).listener.descriptionChanged((String)msg.getOldValue(),
+									(String)msg.getNewValue());
+						}
+					}
+					break;
+				case MappingPackage.REPORT__LINK:
+					for (Adapter adapter : eAdapters) {
+						if (adapter instanceof ReportAdapter) {
+							((ReportAdapter)adapter).listener.linkChanged((ILink)msg.getOldValue(), (ILink)msg
+									.getNewValue());
+						}
+					}
+					break;
+			}
+		}
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IReport#addListener(org.eclipse.intent.mapping.base.IReportListener)
+	 */
+	public void addListener(IReportListener listener) {
+		eAdapters().add(new ReportAdapter(listener));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IReport#removeListener(org.eclipse.intent.mapping.base.IReportListener)
+	 */
+	public void removeListener(IReportListener listener) {
+		final Iterator<Adapter> it = eAdapters().iterator();
+		while (it.hasNext()) {
+			final Adapter adapter = it.next();
+			if (adapter instanceof ReportAdapter && ((ReportAdapter)adapter).listener == listener) {
+				it.remove();
+				break;
+			}
+		}
+	}
+
+} // ReportImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/TextLocationImpl.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/TextLocationImpl.java
new file mode 100644
index 0000000..b4c85f2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/impl/TextLocationImpl.java
@@ -0,0 +1,107 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.TextLocation;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Text Location</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.intent.mapping.impl.TextLocationImpl#getStartOffset <em>Start Offset</em>}</li>
+ * <li>{@link org.eclipse.intent.mapping.impl.TextLocationImpl#getEndOffset <em>End Offset</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TextLocationImpl extends LocationImpl implements TextLocation {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TextLocationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return MappingPackage.Literals.TEXT_LOCATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getStartOffset() {
+		return (Integer)eGet(MappingPackage.Literals.TEXT_LOCATION__START_OFFSET, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setStartOffset(int newStartOffset) {
+		eSet(MappingPackage.Literals.TEXT_LOCATION__START_OFFSET, newStartOffset);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getEndOffset() {
+		return (Integer)eGet(MappingPackage.Literals.TEXT_LOCATION__END_OFFSET, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setEndOffset(int newEndOffset) {
+		eSet(MappingPackage.Literals.TEXT_LOCATION__END_OFFSET, newEndOffset);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (startOffset: ");
+		result.append(getStartOffset());
+		result.append(", endOffset: ");
+		result.append(getEndOffset());
+		result.append(')');
+		return result.toString();
+	}
+
+} // TextLocationImpl
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingAdapterFactory.java
new file mode 100644
index 0000000..ed3c23b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingAdapterFactory.java
@@ -0,0 +1,461 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.CDOFileLocation;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.CDOResourceNodeLocation;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.IEMFBaseElement;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.TextLocation;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides an adapter
+ * <code>createXXX</code> method for each class of the model. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.MappingPackage
+ * @generated
+ */
+public class MappingAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static MappingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = MappingPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object. <!-- begin-user-doc --> This
+	 * implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model. <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected MappingSwitch<Adapter> modelSwitch = new MappingSwitch<Adapter>() {
+		@Override
+		public Adapter caseLocation(Location object) {
+			return createLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseLink(Link object) {
+			return createLinkAdapter();
+		}
+
+		@Override
+		public Adapter caseBase(Base object) {
+			return createBaseAdapter();
+		}
+
+		@Override
+		public Adapter caseIEMFBaseElement(IEMFBaseElement object) {
+			return createIEMFBaseElementAdapter();
+		}
+
+		@Override
+		public Adapter caseTextLocation(TextLocation object) {
+			return createTextLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseTextContainer(TextContainer object) {
+			return createTextContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseEObjectLocation(EObjectLocation object) {
+			return createEObjectLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseLocationContainer(LocationContainer object) {
+			return createLocationContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseReport(Report object) {
+			return createReportAdapter();
+		}
+
+		@Override
+		public Adapter caseCouple(Couple object) {
+			return createCoupleAdapter();
+		}
+
+		@Override
+		public Adapter caseEObjectContainer(EObjectContainer object) {
+			return createEObjectContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOResourceNodeLocation(CDOResourceNodeLocation object) {
+			return createCDOResourceNodeLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOFileLocation(CDOFileLocation object) {
+			return createCDOFileLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOFolderLocation(CDOFolderLocation object) {
+			return createCDOFolderLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDORepositoryLocation(CDORepositoryLocation object) {
+			return createCDORepositoryLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOBinaryResourceLocation(CDOBinaryResourceLocation object) {
+			return createCDOBinaryResourceLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOTextResourceLocation(CDOTextResourceLocation object) {
+			return createCDOTextResourceLocationAdapter();
+		}
+
+		@Override
+		public Adapter caseCDOResourceLocation(CDOResourceLocation object) {
+			return createCDOResourceLocationAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Location
+	 * <em>Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Location
+	 * @generated
+	 */
+	public Adapter createLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Link <em>Link</em>}'.
+	 * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Link
+	 * @generated
+	 */
+	public Adapter createLinkAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Base <em>Base</em>}'.
+	 * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Base
+	 * @generated
+	 */
+	public Adapter createBaseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.IEMFBaseElement
+	 * <em>IEMF Base Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.IEMFBaseElement
+	 * @generated
+	 */
+	public Adapter createIEMFBaseElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.TextLocation <em>Text
+	 * Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can easily
+	 * ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway. <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.TextLocation
+	 * @generated
+	 */
+	public Adapter createTextLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.TextContainer <em>Text
+	 * Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.TextContainer
+	 * @generated
+	 */
+	public Adapter createTextContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.EObjectLocation
+	 * <em>EObject Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.EObjectLocation
+	 * @generated
+	 */
+	public Adapter createEObjectLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class ' {@link org.eclipse.intent.mapping.LocationContainer
+	 * <em>Location Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.LocationContainer
+	 * @generated
+	 */
+	public Adapter createLocationContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Report
+	 * <em>Report</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Report
+	 * @generated
+	 */
+	public Adapter createReportAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.Couple
+	 * <em>Couple</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.Couple
+	 * @generated
+	 */
+	public Adapter createCoupleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.EObjectContainer
+	 * <em>EObject Container</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+	 * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.EObjectContainer
+	 * @generated
+	 */
+	public Adapter createEObjectContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDOResourceNodeLocation
+	 * <em>CDO Resource Node Location</em>}'. <!-- begin-user-doc --> This default implementation returns null
+	 * so that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the
+	 * cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOResourceNodeLocation
+	 * @generated
+	 */
+	public Adapter createCDOResourceNodeLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDOFileLocation <em>CDO
+	 * File Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+	 * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOFileLocation
+	 * @generated
+	 */
+	public Adapter createCDOFileLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDOFolderLocation
+	 * <em>CDO Folder Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOFolderLocation
+	 * @generated
+	 */
+	public Adapter createCDOFolderLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDORepositoryLocation
+	 * <em>CDO Repository Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDORepositoryLocation
+	 * @generated
+	 */
+	public Adapter createCDORepositoryLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.intent.mapping.CDOBinaryResourceLocation <em>CDO Binary Resource Location</em>}'.
+	 * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOBinaryResourceLocation
+	 * @generated
+	 */
+	public Adapter createCDOBinaryResourceLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDOTextResourceLocation
+	 * <em>CDO Text Resource Location</em>}'. <!-- begin-user-doc --> This default implementation returns null
+	 * so that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the
+	 * cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOTextResourceLocation
+	 * @generated
+	 */
+	public Adapter createCDOTextResourceLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.intent.mapping.CDOResourceLocation
+	 * <em>CDO Resource Location</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.intent.mapping.CDOResourceLocation
+	 * @generated
+	 */
+	public Adapter createCDOResourceLocationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This default implementation returns
+	 * null. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // MappingAdapterFactory
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingSwitch.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingSwitch.java
new file mode 100644
index 0000000..d535ea5
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src-gen/org/eclipse/intent/mapping/util/MappingSwitch.java
@@ -0,0 +1,605 @@
+/**
+ *  Copyright (c) 2015 Obeo.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     Obeo - initial API and implementation and/or initial documentation
+ *     ...
+ * 
+ */
+package org.eclipse.intent.mapping.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.CDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.CDOFileLocation;
+import org.eclipse.intent.mapping.CDOFolderLocation;
+import org.eclipse.intent.mapping.CDORepositoryLocation;
+import org.eclipse.intent.mapping.CDOResourceLocation;
+import org.eclipse.intent.mapping.CDOResourceNodeLocation;
+import org.eclipse.intent.mapping.CDOTextResourceLocation;
+import org.eclipse.intent.mapping.Couple;
+import org.eclipse.intent.mapping.EObjectContainer;
+import org.eclipse.intent.mapping.EObjectLocation;
+import org.eclipse.intent.mapping.IEMFBaseElement;
+import org.eclipse.intent.mapping.Link;
+import org.eclipse.intent.mapping.Location;
+import org.eclipse.intent.mapping.LocationContainer;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.Report;
+import org.eclipse.intent.mapping.TextContainer;
+import org.eclipse.intent.mapping.TextLocation;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance hierarchy. It supports the call
+ * {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the
+ * model, starting with the actual class of the object and proceeding up the inheritance hierarchy until a
+ * non-null result is returned, which is the result of the switch. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.intent.mapping.MappingPackage
+ * @generated
+ */
+public class MappingSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static MappingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public MappingSwitch() {
+		if (modelPackage == null) {
+			modelPackage = MappingPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param ePackage
+	 *            the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+	 * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case MappingPackage.LOCATION: {
+				Location location = (Location)theEObject;
+				T result = caseLocation(location);
+				if (result == null)
+					result = caseIEMFBaseElement(location);
+				if (result == null)
+					result = caseLocationContainer(location);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.LINK: {
+				Link link = (Link)theEObject;
+				T result = caseLink(link);
+				if (result == null)
+					result = caseIEMFBaseElement(link);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.BASE: {
+				Base base = (Base)theEObject;
+				T result = caseBase(base);
+				if (result == null)
+					result = caseIEMFBaseElement(base);
+				if (result == null)
+					result = caseLocationContainer(base);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.IEMF_BASE_ELEMENT: {
+				IEMFBaseElement iemfBaseElement = (IEMFBaseElement)theEObject;
+				T result = caseIEMFBaseElement(iemfBaseElement);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.TEXT_LOCATION: {
+				TextLocation textLocation = (TextLocation)theEObject;
+				T result = caseTextLocation(textLocation);
+				if (result == null)
+					result = caseLocation(textLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(textLocation);
+				if (result == null)
+					result = caseLocationContainer(textLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.TEXT_CONTAINER: {
+				TextContainer textContainer = (TextContainer)theEObject;
+				T result = caseTextContainer(textContainer);
+				if (result == null)
+					result = caseLocation(textContainer);
+				if (result == null)
+					result = caseIEMFBaseElement(textContainer);
+				if (result == null)
+					result = caseLocationContainer(textContainer);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.EOBJECT_LOCATION: {
+				EObjectLocation eObjectLocation = (EObjectLocation)theEObject;
+				T result = caseEObjectLocation(eObjectLocation);
+				if (result == null)
+					result = caseLocation(eObjectLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(eObjectLocation);
+				if (result == null)
+					result = caseLocationContainer(eObjectLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.LOCATION_CONTAINER: {
+				LocationContainer locationContainer = (LocationContainer)theEObject;
+				T result = caseLocationContainer(locationContainer);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.REPORT: {
+				Report report = (Report)theEObject;
+				T result = caseReport(report);
+				if (result == null)
+					result = caseIEMFBaseElement(report);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.COUPLE: {
+				Couple couple = (Couple)theEObject;
+				T result = caseCouple(couple);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.EOBJECT_CONTAINER: {
+				EObjectContainer eObjectContainer = (EObjectContainer)theEObject;
+				T result = caseEObjectContainer(eObjectContainer);
+				if (result == null)
+					result = caseLocation(eObjectContainer);
+				if (result == null)
+					result = caseIEMFBaseElement(eObjectContainer);
+				if (result == null)
+					result = caseLocationContainer(eObjectContainer);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_RESOURCE_NODE_LOCATION: {
+				CDOResourceNodeLocation cdoResourceNodeLocation = (CDOResourceNodeLocation)theEObject;
+				T result = caseCDOResourceNodeLocation(cdoResourceNodeLocation);
+				if (result == null)
+					result = caseLocation(cdoResourceNodeLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoResourceNodeLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoResourceNodeLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_FILE_LOCATION: {
+				CDOFileLocation cdoFileLocation = (CDOFileLocation)theEObject;
+				T result = caseCDOFileLocation(cdoFileLocation);
+				if (result == null)
+					result = caseCDOResourceNodeLocation(cdoFileLocation);
+				if (result == null)
+					result = caseLocation(cdoFileLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoFileLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoFileLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_FOLDER_LOCATION: {
+				CDOFolderLocation cdoFolderLocation = (CDOFolderLocation)theEObject;
+				T result = caseCDOFolderLocation(cdoFolderLocation);
+				if (result == null)
+					result = caseCDOResourceNodeLocation(cdoFolderLocation);
+				if (result == null)
+					result = caseLocation(cdoFolderLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoFolderLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoFolderLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_REPOSITORY_LOCATION: {
+				CDORepositoryLocation cdoRepositoryLocation = (CDORepositoryLocation)theEObject;
+				T result = caseCDORepositoryLocation(cdoRepositoryLocation);
+				if (result == null)
+					result = caseLocation(cdoRepositoryLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoRepositoryLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoRepositoryLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_BINARY_RESOURCE_LOCATION: {
+				CDOBinaryResourceLocation cdoBinaryResourceLocation = (CDOBinaryResourceLocation)theEObject;
+				T result = caseCDOBinaryResourceLocation(cdoBinaryResourceLocation);
+				if (result == null)
+					result = caseCDOFileLocation(cdoBinaryResourceLocation);
+				if (result == null)
+					result = caseCDOResourceNodeLocation(cdoBinaryResourceLocation);
+				if (result == null)
+					result = caseLocation(cdoBinaryResourceLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoBinaryResourceLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoBinaryResourceLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_TEXT_RESOURCE_LOCATION: {
+				CDOTextResourceLocation cdoTextResourceLocation = (CDOTextResourceLocation)theEObject;
+				T result = caseCDOTextResourceLocation(cdoTextResourceLocation);
+				if (result == null)
+					result = caseCDOFileLocation(cdoTextResourceLocation);
+				if (result == null)
+					result = caseTextContainer(cdoTextResourceLocation);
+				if (result == null)
+					result = caseCDOResourceNodeLocation(cdoTextResourceLocation);
+				if (result == null)
+					result = caseLocation(cdoTextResourceLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoTextResourceLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoTextResourceLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case MappingPackage.CDO_RESOURCE_LOCATION: {
+				CDOResourceLocation cdoResourceLocation = (CDOResourceLocation)theEObject;
+				T result = caseCDOResourceLocation(cdoResourceLocation);
+				if (result == null)
+					result = caseCDOFileLocation(cdoResourceLocation);
+				if (result == null)
+					result = caseEObjectContainer(cdoResourceLocation);
+				if (result == null)
+					result = caseCDOResourceNodeLocation(cdoResourceLocation);
+				if (result == null)
+					result = caseLocation(cdoResourceLocation);
+				if (result == null)
+					result = caseIEMFBaseElement(cdoResourceLocation);
+				if (result == null)
+					result = caseLocationContainer(cdoResourceLocation);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			default:
+				return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLocation(Location object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Link</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Link</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLink(Link object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Base</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Base</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBase(Base object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>IEMF Base Element</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>IEMF Base Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIEMFBaseElement(IEMFBaseElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTextLocation(TextLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTextContainer(TextContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEObjectLocation(EObjectLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Location Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Location Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLocationContainer(LocationContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Report</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Report</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReport(Report object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Couple</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Couple</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCouple(Couple object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject Container</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEObjectContainer(EObjectContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Resource Node Location</em>'.
+	 * <!-- begin-user-doc --> This implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Resource Node Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOResourceNodeLocation(CDOResourceNodeLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO File Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO File Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOFileLocation(CDOFileLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Folder Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Folder Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOFolderLocation(CDOFolderLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Repository Location</em>'.
+	 * <!-- begin-user-doc --> This implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Repository Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDORepositoryLocation(CDORepositoryLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Binary Resource
+	 * Location</em>'. <!-- begin-user-doc --> This implementation returns null; returning a non-null result
+	 * will terminate the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Binary Resource
+	 *         Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOBinaryResourceLocation(CDOBinaryResourceLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Text Resource Location</em>'.
+	 * <!-- begin-user-doc --> This implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Text Resource Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOTextResourceLocation(CDOTextResourceLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CDO Resource Location</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CDO Resource Location</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCDOResourceLocation(CDOResourceLocation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch, but this
+	 * is the last case anyway. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // MappingSwitch
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/CDOMappingBaseListener.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/CDOMappingBaseListener.java
new file mode 100644
index 0000000..cd5e00e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/CDOMappingBaseListener.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
+import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseRegistry;
+import org.eclipse.intent.mapping.impl.BaseImpl;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+
+/**
+ * A CDO listener that track changes on {@link IBase}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOMappingBaseListener implements IListener {
+
+	/**
+	 * Mapping to keep track of {@link IBaseRegistry#register(IBase) registered} bases.
+	 */
+	Map<CDOID, Map<String, Map<Integer, BaseImpl>>> bases = new HashMap<CDOID, Map<String, Map<Integer, BaseImpl>>>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.net4j.util.event.IListener#notifyEvent(org.eclipse.net4j.util.event.IEvent)
+	 */
+	public void notifyEvent(IEvent event) {
+		if (event instanceof CDOSessionInvalidationEvent) {
+			final CDOSessionInvalidationEvent cdoSessionInvalidationEvent = (CDOSessionInvalidationEvent)event;
+
+			checkAttachedObjects(cdoSessionInvalidationEvent);
+
+			checkDetachedObjects(cdoSessionInvalidationEvent);
+		}
+	}
+
+	/**
+	 * Checks for {@link CDOSessionInvalidationEvent#getNewObjects() attached objects}.
+	 * 
+	 * @param cdoSessionInvalidationEvent
+	 *            the {@link CDOSessionInvalidationEvent}
+	 */
+	protected void checkAttachedObjects(CDOSessionInvalidationEvent cdoSessionInvalidationEvent) {
+		final CDOView view = cdoSessionInvalidationEvent.getLocalTransaction();
+
+		for (CDOIDAndVersion cdoidAndVersion : cdoSessionInvalidationEvent.getNewObjects()) {
+			final CDOObject object = view.getObject(cdoidAndVersion.getID());
+			if (object instanceof BaseImpl) {
+				registerBase(view, (BaseImpl)object);
+			}
+		}
+	}
+
+	/**
+	 * Checks for {@link CDOSessionInvalidationEvent#getDetachedObjects() detached objects}.
+	 * 
+	 * @param cdoSessionInvalidationEvent
+	 *            the {@link CDOSessionInvalidationEvent}
+	 */
+	protected void checkDetachedObjects(final CDOSessionInvalidationEvent cdoSessionInvalidationEvent) {
+		final CDOView view = cdoSessionInvalidationEvent.getSource().openView(cdoSessionInvalidationEvent
+				.getBranch(), cdoSessionInvalidationEvent.getPreviousTimeStamp());
+
+		for (CDOIDAndVersion cdoidAndVersion : cdoSessionInvalidationEvent.getDetachedObjects()) {
+			final CDOObject object = view.getObject(cdoidAndVersion.getID());
+			if (object instanceof BaseImpl) {
+				unregisterBase(view, (BaseImpl)object);
+			}
+		}
+
+		view.close();
+	}
+
+	/**
+	 * {@link IBaseRegistry#register(IBase) Registers} the given {@link BaseImpl}.
+	 * 
+	 * @param view
+	 *            the {@link CDOView}
+	 * @param base
+	 *            the {@link BaseImpl}
+	 */
+	protected void registerBase(CDOView view, BaseImpl base) {
+		MappingUtils.getMappingRegistry().register(base);
+		final CDOID cdoID = base.cdoID();
+		Map<String, Map<Integer, BaseImpl>> repoMap = bases.get(cdoID);
+		if (repoMap == null) {
+			repoMap = new HashMap<String, Map<Integer, BaseImpl>>();
+			bases.put(cdoID, repoMap);
+		}
+		final String uuid = view.getSession().getRepositoryInfo().getUUID();
+		Map<Integer, BaseImpl> branchMap = repoMap.get(uuid);
+		if (branchMap == null) {
+			branchMap = new HashMap<Integer, BaseImpl>();
+			repoMap.put(uuid, branchMap);
+		}
+		branchMap.put(view.getBranch().getID(), base);
+		MappingUtils.getMappingRegistry().register(base);
+	}
+
+	/**
+	 * {@link IBaseRegistry#unregister(IBase) Unregisters} the given {@link BaseImpl}.
+	 * 
+	 * @param view
+	 *            the {@link CDOView}
+	 * @param base
+	 *            the {@link BaseImpl}
+	 */
+	protected void unregisterBase(CDOView view, BaseImpl base) {
+		final CDOID cdoID = base.cdoID();
+		final Map<String, Map<Integer, BaseImpl>> repoMap = bases.get(cdoID);
+		if (repoMap != null) {
+			final String uuid = view.getSession().getRepositoryInfo().getUUID();
+			final Map<Integer, BaseImpl> branchMap = repoMap.get(uuid);
+			if (branchMap != null) {
+				final BaseImpl toRemove = branchMap.remove(view.getBranch().getID());
+				if (toRemove != null) {
+					MappingUtils.getMappingRegistry().unregister(toRemove);
+					removeFromMap(cdoID, repoMap, uuid, branchMap);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Removes empty maps.
+	 * 
+	 * @param cdoID
+	 *            the {@link CDOID}
+	 * @param repoMap
+	 *            the repository map
+	 * @param uuid
+	 *            the UUID of the repository
+	 * @param branchMap
+	 *            the branch map
+	 */
+	protected void removeFromMap(CDOID cdoID, Map<String, Map<Integer, BaseImpl>> repoMap, String uuid,
+			Map<Integer, BaseImpl> branchMap) {
+		if (branchMap.isEmpty()) {
+			repoMap.remove(uuid);
+			if (repoMap.isEmpty()) {
+				bases.remove(cdoID);
+			}
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOBinaryResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOBinaryResourceLocation.java
new file mode 100644
index 0000000..5bc2b26
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOBinaryResourceLocation.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+/**
+ * {@link org.eclipse.emf.cdo.eresource.CDOFileResource CDOFileResource} location.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOBinaryResourceLocation extends ICDOFileLocation {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFileLocation.java
new file mode 100644
index 0000000..45618a5
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFileLocation.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+/**
+ * {@link org.eclipse.emf.cdo.eresource.CDOBinaryResource CDOBinaryResource} location.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOFileLocation extends ICDOResourceNodeLocation {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFolderLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFolderLocation.java
new file mode 100644
index 0000000..480451d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOFolderLocation.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+/**
+ * {@link org.eclipse.emf.cdo.eresource.CDOResourceFolder CDOResourceFolder} location.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOFolderLocation extends ICDOResourceNodeLocation {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDORepositoryLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDORepositoryLocation.java
new file mode 100644
index 0000000..916fccf
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDORepositoryLocation.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * A CDO repository {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDORepositoryLocation extends ILocation {
+
+	/**
+	 * Gets the CDO repository URL.
+	 * 
+	 * @return the CDO repository URL
+	 */
+	String getURL();
+
+	/**
+	 * Sets the CDO repository URL.
+	 * 
+	 * @param url
+	 *            the new CDO repository URL
+	 */
+	void setURL(String url);
+
+	/**
+	 * Gets the CDO repository UUID.
+	 * 
+	 * @return the CDO repository UUID
+	 */
+	String getUUID();
+
+	/**
+	 * Sets the CDO repository UUID.
+	 * 
+	 * @param uuid
+	 *            the new CDO repository UUID
+	 */
+	void setUUID(String uuid);
+
+	/**
+	 * Gets the CDO repository name.
+	 * 
+	 * @return the CDO repository name
+	 */
+	String getName();
+
+	/**
+	 * Sets the CDO repository name.
+	 * 
+	 * @param name
+	 *            the new CDO repository name
+	 */
+	void setName(String name);
+
+	/**
+	 * Gets the banch ID.
+	 * 
+	 * @return the branch ID
+	 */
+	int getBranchID();
+
+	/**
+	 * Sets the branch ID.
+	 * 
+	 * @param id
+	 *            the new branch ID
+	 */
+	void setBranchID(int id);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceLocation.java
new file mode 100644
index 0000000..7c2e7a9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceLocation.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+/**
+ * {@link org.eclipse.emf.cdo.eresource.CDOResource CDOResource} location.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOResourceLocation extends ICDOFileLocation, IEObjectContainer {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceNodeLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceNodeLocation.java
new file mode 100644
index 0000000..7149cb1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOResourceNodeLocation.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * An {@link ILocation} for {@link org.eclipse.emf.cdo.eresource.CDOResourceNode CDOResourceNode}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOResourceNodeLocation extends ILocation {
+
+	/**
+	 * Gets the {@link org.eclipse.emf.cdo.eresource.CDOResourceNode#getPath() path}.
+	 * 
+	 * @return the {@link org.eclipse.emf.cdo.eresource.CDOResourceNode#getPath() path}
+	 */
+	String getPath();
+
+	/**
+	 * Sets the {@link org.eclipse.emf.cdo.eresource.CDOResourceNode#getPath() path}.
+	 * 
+	 * @param path
+	 *            the new path
+	 */
+	void setPath(String path);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOTextResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOTextResourceLocation.java
new file mode 100644
index 0000000..666ee34
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICDOTextResourceLocation.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import org.eclipse.intent.mapping.text.ITextContainer;
+
+/**
+ * {@link org.eclipse.emf.cdo.eresource.CDOTextResource CDOTextResource} location.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICDOTextResourceLocation extends ICDOFileLocation, ITextContainer {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICouple.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICouple.java
new file mode 100644
index 0000000..6f1579d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/ICouple.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import org.eclipse.intent.mapping.base.IBaseElement;
+
+/**
+ * A key and a value.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ICouple extends IBaseElement {
+
+	/**
+	 * Gets the key.
+	 * 
+	 * @return the key
+	 */
+	String getKey();
+
+	/**
+	 * Sets the key.
+	 * 
+	 * @param key
+	 *            the new key
+	 */
+	void setKey(String key);
+
+	/**
+	 * Gets the value.
+	 * 
+	 * @return the value
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value.
+	 * 
+	 * @param value
+	 *            the new value
+	 */
+	void setValue(String value);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectContainer.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectContainer.java
new file mode 100644
index 0000000..7429527
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectContainer.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * {@link org.eclipse.emf.ecore.resource.Resource Resource} container.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IEObjectContainer extends ILocation {
+
+	/**
+	 * Gets the XMI contents.
+	 * 
+	 * @return the XMI contents
+	 */
+	String getXMIContent();
+
+	/**
+	 * Sets the XMI contents.
+	 * 
+	 * @param xmiContent
+	 *            the XMI contents
+	 */
+	void setXMIContent(String xmiContent);
+
+	/**
+	 * The mapping from {@link EObject} {@link URI} fragments to saved {@link URI} fragment.
+	 * 
+	 * @return the mapping from {@link EObject} {@link URI} fragments to saved {@link URI} fragment
+	 */
+	List<ICouple> getSavedURIFragments();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectLocation.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectLocation.java
new file mode 100644
index 0000000..761b053
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/IEObjectLocation.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * An {@link org.eclipse.intent.mapping.base.ILocation ILocation} for {@link org.eclipse.emf.ecore.EObject
+ * EObject}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IEObjectLocation extends ILocation {
+
+	/**
+	 * Gets the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 * relative to the {@link IEObjectLocation#getContainer() container}.
+	 * 
+	 * @return the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 *         relative to the {@link IEObjectLocation#getContainer() container}
+	 */
+	String getURIFragment();
+
+	/**
+	 * Sets the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 * relative to the {@link IEObjectLocation#getContainer() container}.
+	 * 
+	 * @param uriFragment
+	 *            the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 *            relative to the {@link IEObjectLocation#getContainer() container}
+	 */
+	void setURIFragment(String uriFragment);
+
+	/**
+	 * Gets the saved {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 * relative to the saved {@link IEObjectLocation#getContainer() container}.
+	 * 
+	 * @return the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 *         relative to {@link IEObjectLocation#getContainer() container}
+	 */
+	String getSavedURIFragment();
+
+	/**
+	 * Sets the saved {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 * relative to the saved {@link IEObjectLocation#getContainer() container}.
+	 * 
+	 * @param uriFragment
+	 *            the {@link java.net.URI URI} fragment of the {@link org.eclipse.emf.ecore.EObject EObject}
+	 *            relative to the saved {@link IEObjectLocation#getContainer() container}
+	 */
+	void setSavedURIFragment(String uriFragment);
+
+	/**
+	 * Sets the {@link org.eclipse.emf.ecore.EStructuralFeature#getName() feature name}.
+	 * 
+	 * @param featureName
+	 *            the {@link org.eclipse.emf.ecore.EStructuralFeature#getName() feature name} if any,
+	 *            <code>null</code> otherwise
+	 */
+	void setFeatureName(String featureName);
+
+	/**
+	 * Gets the {@link org.eclipse.emf.ecore.EStructuralFeature#getName() feature name}.
+	 * 
+	 * @return the {@link org.eclipse.emf.ecore.EStructuralFeature#getName() feature name} if any,
+	 *         <code>null</code> otherwise
+	 */
+	String getFeatureName();
+
+	/**
+	 * Gets the index in the {@link #getFeatureName() feature}.
+	 * 
+	 * @return the index in the {@link #getFeatureName() feature}
+	 */
+	int getIndex();
+
+	/**
+	 * Sets the index in the {@link #getFeatureName() feature}.
+	 * 
+	 * @param index
+	 *            the index in the {@link #getFeatureName() feature}
+	 */
+	void setIndex(int index);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOContainerProvider.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOContainerProvider.java
new file mode 100644
index 0000000..d2403cb
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOContainerProvider.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.connector;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * {@link EObject} -> {@link CDOResource} -> {@link CDOView}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOContainerProvider implements IContainerProvider {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IContainerProvider#getContainer(java.lang.Object)
+	 */
+	public Object getContainer(Object element) {
+		final Object res;
+
+		if (element instanceof CDOResource) {
+			res = ((CDOResource)element).cdoView();
+		} else if (element instanceof EObject) {
+			final Resource resource = ((EObject)element).eResource();
+			if (resource instanceof CDOResource) {
+				res = resource;
+			} else {
+				res = null;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOResourceNodeConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOResourceNodeConnector.java
new file mode 100644
index 0000000..fbf1dc3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOResourceNodeConnector.java
@@ -0,0 +1,218 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.connector;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import org.eclipse.emf.cdo.eresource.CDOBinaryResource;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
+import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.emf.cdo.eresource.CDOTextResource;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceNodeLocation;
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector.EObjectContainerHelper;
+import org.eclipse.intent.mapping.text.TextConnector.TextContainerHelper;
+
+/**
+ * {@link CDOResourceNode} connector.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOResourceNodeConnector extends AbstractConnector {
+
+	/**
+	 * The buffer size.
+	 */
+	private static final int BUFFZE_SIZE = 8192;
+
+	/**
+	 * The {@link EObjectContainerHelper}.
+	 */
+	private final EObjectContainerHelper eObjectContainerHelper = new EObjectContainerHelper();
+
+	/**
+	 * The {@link TextContainerHelper}.
+	 */
+	private final TextContainerHelper textContainerHelper = new TextContainerHelper();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		final ILocationDescriptor res;
+
+		final Object adapted = adapt(element);
+		if (adapted instanceof CDOResourceNode) {
+			res = new ObjectLocationDescriptor(base, adapted, ((CDOResourceNode)adapted).getPath());
+			// TODO register the descriptor to the CDO repository connector
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	@Override
+	public void dispose(ILocationDescriptor locationDescriptor) {
+		super.dispose(locationDescriptor);
+		// TODO unregister the descriptor from the CDO repository connector
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class, java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		final Class<? extends ILocation> res;
+
+		if (element instanceof CDOResource) {
+			res = ICDOResourceLocation.class;
+		} else if (element instanceof CDOTextResource) {
+			// TODO text file delegates ?
+			res = ICDOTextResourceLocation.class;
+		} else if (element instanceof CDOBinaryResource) {
+			// TODO binary file delegates ?
+			res = ICDOBinaryResourceLocation.class;
+		} else if (element instanceof CDOResourceFolder) {
+			res = ICDOFolderLocation.class;
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		final CDOView cdoview = (CDOView)MappingUtils.getConnectorRegistry().getElement(
+				(ICDORepositoryLocation)location.getContainer());
+
+		return cdoview.getResourceNode(((ICDOResourceNodeLocation)location).getPath());
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		return ((ICDOResourceNodeLocation)location).getPath();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+	 */
+	public Class<? extends ILocation> getType() {
+		return ICDOResourceNodeLocation.class;
+	}
+
+	@Override
+	protected boolean canUpdate(Object element) {
+		return element instanceof CDOResourceNode;
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object element) {
+		final boolean res;
+
+		// TODO we implicitly decide to have a flat structure of location here... we probably don't want to do
+		// that
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)location.getContainer();
+		final CDOResourceNode node = (CDOResourceNode)element;
+		if (node.cdoView().getSession().getRepositoryInfo().getUUID().equals(container.getUUID()) && node
+				.cdoView().getBranch().getID() == container.getBranchID()) {
+			res = ((ICDOResourceNodeLocation)location).getPath().equals(((CDOResourceNode)element).getPath());
+		} else {
+			res = false;
+		}
+
+		return res;
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+		final ICDOResourceNodeLocation toInit = (ICDOResourceNodeLocation)location;
+
+		toInit.setPath(((CDOResourceNode)element).getPath());
+		if (toInit instanceof ICDOResourceLocation) {
+			try {
+				eObjectContainerHelper.updateEObjectContainer(container, (ICDOResourceLocation)toInit,
+						(CDOResource)element);
+				// CHECKSTYLE:OFF
+			} catch (Exception e) {
+				// CHECKSTYLE:ON
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		} else if (toInit instanceof ICDOTextResourceLocation) {
+			try {
+				final CDOTextResource textResource = (CDOTextResource)element;
+				final String text = getContent(textResource.getContents().getContents(), textResource
+						.getEncoding());
+				textContainerHelper.updateTextContainer(container, (ICDOTextResourceLocation)toInit, text);
+				// CHECKSTYLE:OFF
+			} catch (Exception e) {
+				// CHECKSTYLE:ON
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		// TODO binary and text file delegates ?
+	}
+
+	/**
+	 * Gets the content of the given {@link Reader}.
+	 * 
+	 * @param reader
+	 *            the {@link Reader}
+	 * @param encoding
+	 *            the encoding
+	 * @return the content of the given {@link Reader}
+	 * @throws IOException
+	 *             if the {@link Reader} can't be read
+	 */
+	private String getContent(Reader reader, String encoding) throws IOException {
+		final StringBuilder builder = new StringBuilder();
+
+		char[] buffer = new char[BUFFZE_SIZE];
+		while (reader.read(buffer) != -1) {
+			builder.append(buffer);
+		}
+
+		return builder.toString();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOViewConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOViewConnector.java
new file mode 100644
index 0000000..ac1eaf9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/CDOViewConnector.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.connector;
+
+import java.util.Set;
+
+import org.eclipse.emf.cdo.internal.net4j.CDONet4jSessionImpl;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+
+/**
+ * {@link CDOView} connector.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOViewConnector extends AbstractConnector {
+
+	/**
+	 * The {@link MappingCDOListener}.
+	 */
+	private final MappingCDOListener listener = new MappingCDOListener();
+
+	/**
+	 * Adds the given {@link CDOView} to the cache.
+	 * 
+	 * @param view
+	 *            the {@link CDOView} to add
+	 */
+	public void addSessionToCache(CDOView view) {
+		listener.addSessionToCache(view);
+	}
+
+	/**
+	 * Removes the given {@link CDOView} to the cache.
+	 * 
+	 * @param view
+	 *            the {@link CDOView} to remove
+	 */
+	public void removeSessionFromCache(CDOView view) {
+		listener.removeSessionFromCache(view);
+	}
+
+	/**
+	 * Adds the given {@link IBase} to the {@link Set} of {@link IBase} to update.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 */
+	public void addBaseToUpdate(IBase base) {
+		listener.addBaseToUpdate(base);
+	}
+
+	/**
+	 * Removes the given {@link IBase} from the {@link Set} of {@link IBase} to update.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 */
+	public void removeBaseToUpdate(IBase base) {
+		listener.removeBaseToUpdate(base);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		final ILocationDescriptor res;
+
+		final Object adapted = adapt(element);
+		if (adapted instanceof CDOView) {
+			final CDOView cdoView = (CDOView)adapted;
+			res = new ObjectLocationDescriptor(base, adapted, cdoView.getSession().getRepositoryInfo()
+					.getName() + " (" + getURL(cdoView) + ")");
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class, java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		final Class<? extends ILocation> res;
+
+		if (element instanceof CDOView) {
+			res = getType();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		return listener.getElement(location);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		final ICDORepositoryLocation repositoryLocation = (ICDORepositoryLocation)location;
+		return repositoryLocation.getName() + " (" + repositoryLocation.getURL() + ")";
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+	 */
+	public Class<? extends ILocation> getType() {
+		return ICDORepositoryLocation.class;
+	}
+
+	@Override
+	protected boolean canUpdate(Object element) {
+		return element instanceof CDOView;
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object element) {
+		return ((ICDORepositoryLocation)location).getUUID().equals(((CDOView)element).getSession()
+				.getRepositoryInfo().getUUID()) && ((ICDORepositoryLocation)location)
+						.getBranchID() == ((CDOView)element).getBranch().getID();
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+		final ICDORepositoryLocation toInit = (ICDORepositoryLocation)location;
+		final CDOView cdoView = (CDOView)element;
+
+		toInit.setURL(getURL(cdoView));
+		toInit.setUUID(cdoView.getSession().getRepositoryInfo().getUUID());
+		toInit.setName(cdoView.getSession().getRepositoryInfo().getName());
+		toInit.setBranchID(cdoView.getBranch().getID());
+	}
+
+	/**
+	 * Gets the URL for the given {@link CDOView}.
+	 * 
+	 * @param cdoView
+	 *            the {@link CDOView}
+	 * @return the URL for the given {@link CDOView}
+	 */
+	protected String getURL(CDOView cdoView) {
+		final String res;
+
+		if (cdoView.getSession() instanceof CDONet4jSessionImpl) {
+			res = ((CDONet4jSessionImpl)cdoView.getSession()).getConnector().getURL();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/EObjectConnector.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/EObjectConnector.java
new file mode 100644
index 0000000..9c0a547
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/EObjectConnector.java
@@ -0,0 +1,750 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.connector;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.AttributeChange;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.Match;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.compare.scope.DefaultComparisonScope;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectContainer;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+
+/**
+ * {@link EObject} {@link org.eclipse.intent.mapping.connector.IConnector IConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectConnector extends AbstractConnector {
+
+	/**
+	 * Utility helper to
+	 * {@link EObjectContainerHelper#updateEObjectContainer(ILocationContainer, IEObjectContainer, Resource)
+	 * update EObject container}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class EObjectContainerHelper {
+
+		/**
+		 * Updates the given {@link IEObjectContainer} with the given {@link Resource}.
+		 * 
+		 * @param container
+		 *            the {@link ILocationContainer}
+		 * @param eObjectContainer
+		 *            the {@link IEObjectContainer}
+		 * @param newResource
+		 *            the {@link Resource}
+		 * @throws Exception
+		 *             if the XMI serialization failed
+		 */
+		public void updateEObjectContainer(ILocationContainer container, IEObjectContainer eObjectContainer,
+				Resource newResource) throws Exception {
+			if (eObjectContainer.getXMIContent() != null && !eObjectContainer.getXMIContent().isEmpty()) {
+				final XMIResourceImpl oldResource = new XMIResourceImpl(URI.createURI(""));
+				oldResource.load(new ByteArrayInputStream(eObjectContainer.getXMIContent().getBytes(UTF_8)),
+						new HashMap<Object, Object>());
+				final IComparisonScope scope = new DefaultComparisonScope(oldResource, newResource, null);
+				final Comparison comparison = EMFCompare.builder().build().compare(scope);
+				for (ILocation child : new ArrayList<ILocation>(eObjectContainer.getContents())) {
+					if (child instanceof IEObjectLocation && !child.isMarkedAsDeleted()) {
+						final IEObjectLocation location = (IEObjectLocation)child;
+						updateEObjectLocation(oldResource, comparison, location, needSavedURIFragment(
+								newResource));
+					}
+				}
+			}
+
+			eObjectContainer.getSavedURIFragments().clear();
+			if (needSavedURIFragment(newResource)) {
+				updateSavedURIFragment(container, eObjectContainer, newResource);
+			}
+
+			final String newXMIContent = XMLHelperImpl.saveString(new HashMap<Object, Object>(), newResource
+					.getContents(), UTF_8, null);
+			eObjectContainer.setXMIContent(newXMIContent);
+		}
+
+		/**
+		 * Tells if the given {@link Resource} need to use {@link IEObjectLocation#getSavedURIFragment() saved
+		 * URI fragment}.
+		 * 
+		 * @param resource
+		 *            the {@link Resource}
+		 * @return <code>true</code> if the given {@link Resource} need to use
+		 *         {@link IEObjectLocation#getSavedURIFragment() saved URI fragment}, <code>false</code>
+		 *         otherwise
+		 */
+		protected boolean needSavedURIFragment(Resource resource) {
+			// !(resource instanceof XMIResource);
+			// TODO make an accurate guess...
+			return true;
+		}
+
+		/**
+		 * Updates the given {@link IEObjectLocation}.
+		 * 
+		 * @param oldResource
+		 *            the old {@link Resource}
+		 * @param comparison
+		 *            the {@link Comparison}
+		 * @param eObjectlocation
+		 *            the {@link IEObjectLocation}
+		 * @param useSaveURIFragment
+		 *            tells if we should use {@link IEObjectLocation#getSavedURIFragment()}
+		 * @throws Exception
+		 *             if {@link org.eclipse.intent.mapping.Report Report} can't be created
+		 */
+		protected void updateEObjectLocation(Resource oldResource, Comparison comparison,
+				IEObjectLocation eObjectlocation, boolean useSaveURIFragment) throws Exception {
+			final EObject oldObject;
+			if (useSaveURIFragment) {
+				oldObject = oldResource.getEObject(eObjectlocation.getSavedURIFragment());
+			} else {
+				oldObject = oldResource.getEObject(eObjectlocation.getURIFragment());
+			}
+			final Match match = comparison.getMatch(oldObject);
+
+			if (match.getRight() != null) {
+				final String newURIFragment = match.getRight().eResource().getURIFragment(match.getRight());
+				if (!match.getDifferences().isEmpty()) {
+					final EObject newObject = match.getRight();
+					if (eObjectlocation.getFeatureName() == null) {
+						MappingUtils.markAsChanged(eObjectlocation, getMatchMessage(oldObject, newObject,
+								match));
+					} else {
+						updateLoccationSetting(comparison, eObjectlocation, oldObject, newObject, match);
+					}
+				}
+				eObjectlocation.setURIFragment(newURIFragment);
+			} else {
+				MappingUtils.markAsDeletedOrDelete(eObjectlocation, String.format(
+						"%s at %s has been deleted.", getValueString(oldObject), eObjectlocation
+								.getURIFragment()));
+			}
+		}
+
+		/**
+		 * Gets a human readable messages for the given {@link Match}.
+		 * 
+		 * @param oldObject
+		 *            the old {@link EObject}
+		 * @param newObject
+		 *            the new {@link EObject}
+		 * @param match
+		 *            the {@link Match}
+		 * @return a human readable messages for the given {@link Match}
+		 */
+		protected String getMatchMessage(EObject oldObject, EObject newObject, Match match) {
+			final StringBuilder res = new StringBuilder();
+
+			for (Diff diff : match.getDifferences()) {
+				if (diff instanceof AttributeChange) {
+					res.append("Attribure ");
+					final EAttribute attribute = ((AttributeChange)diff).getAttribute();
+					res.append(attribute.getName());
+					res.append(" was ");
+					res.append(getValueString(oldObject.eGet(attribute)));
+					res.append(" changed to ");
+					res.append(getValueString(newObject.eGet(attribute)));
+				} else if (diff instanceof ReferenceChange) {
+					res.append("Reference ");
+					final EReference reference = ((ReferenceChange)diff).getReference();
+					res.append(reference.getName());
+					res.append(" was ");
+					res.append(getValueString(oldObject.eGet(reference)));
+					res.append(" changed to ");
+					res.append(getValueString(newObject.eGet(reference)));
+				}
+				res.append(".\n");
+			}
+
+			return res.substring(0, res.length() - 1);
+		}
+
+		/**
+		 * Updates the given {@link IEObjectLocation} for a {@link LocationSetting}.
+		 * 
+		 * @param comparison
+		 *            the {@link Comparison}
+		 * @param eObjectlocation
+		 *            the {@link IEObjectLocation} to update
+		 * @param oldObject
+		 *            the old holding {@link EObject}
+		 * @param newObject
+		 *            the new holding {@link EObject}
+		 * @param match
+		 *            the {@link Match}
+		 * @throws IllegalAccessException
+		 *             if the class or its nullary constructor is not accessible.
+		 * @throws InstantiationException
+		 *             if this Class represents an abstract class, an interface, an array class, a primitive
+		 *             type, or void; or if the class has no nullary constructor; or if the instantiation
+		 *             fails for some other reason.
+		 * @throws ClassNotFoundException
+		 *             if the {@link Class} can't be found
+		 */
+		protected void updateLoccationSetting(Comparison comparison, IEObjectLocation eObjectlocation,
+				final EObject oldObject, EObject newObject, final Match match) throws InstantiationException,
+				IllegalAccessException, ClassNotFoundException {
+			final EStructuralFeature feature = oldObject.eClass().getEStructuralFeature(eObjectlocation
+					.getFeatureName());
+			final boolean hasDiffForFeature = hasDiffForFeature(match, feature);
+			if (hasDiffForFeature) {
+				final Object oldValue;
+				final Object newValue;
+				if (feature.isMany()) {
+					oldValue = ((List<?>)oldObject.eGet(feature)).get(eObjectlocation.getIndex());
+					newValue = getNewValueInManySetting(comparison, oldValue);
+					final int newIndex = ((List<?>)newObject.eGet(feature)).indexOf(newValue);
+					eObjectlocation.setIndex(newIndex);
+				} else {
+					oldValue = oldObject.eGet(feature);
+					newValue = newObject.eGet(feature);
+				}
+				if (eObjectlocation.getIndex() == -1) {
+					MappingUtils.markAsDeletedOrDelete(eObjectlocation, String.format(
+							"%s (%s) value %s has been removed from feature %s.", getLabel(oldObject),
+							eObjectlocation.getURIFragment(), getValueString(oldValue), eObjectlocation
+									.getFeatureName()));
+				} else if (!oldValue.equals(newValue)) {
+					MappingUtils.markAsChanged(eObjectlocation, String.format(
+							"%s (%s) feature %s value %s has been changed to %s.", getLabel(oldObject),
+							eObjectlocation.getURIFragment(), eObjectlocation.getFeatureName(),
+							getValueString(oldValue), getValueString(newValue)));
+				}
+			} else {
+				// there is a diff for the holding EObject but not the located setting
+				// nothing to do here
+			}
+		}
+
+		/**
+		 * Gets the string representation of the given value.
+		 * 
+		 * @param value
+		 *            the value
+		 * @return the string representation of the given value
+		 */
+		protected String getValueString(Object value) {
+			final String res;
+
+			if (value instanceof EObject) {
+				res = getLabel((EObject)value);
+			} else if (value == null) {
+				res = "null";
+			} else {
+				res = value.toString();
+			}
+
+			return res;
+		}
+
+		/**
+		 * Gets the new value for a multi-valuated setting.
+		 * 
+		 * @param comparison
+		 *            the {@link Comparison}
+		 * @param oldValue
+		 *            the old value
+		 * @return the new value for a multi-valuated setting
+		 */
+		protected Object getNewValueInManySetting(Comparison comparison, final Object oldValue) {
+			final Object newValue;
+			if (oldValue instanceof EObject) {
+				final Match valueMatch = comparison.getMatch((EObject)oldValue);
+				if (valueMatch != null) {
+					newValue = valueMatch.getRight();
+				} else {
+					newValue = oldValue;
+				}
+			} else {
+				newValue = oldValue;
+			}
+			return newValue;
+		}
+
+		/**
+		 * Tells if there is a difference in the given {@link Match} for the given {@link EStructuralFeature}.
+		 * 
+		 * @param match
+		 *            the {@link Match}
+		 * @param feature
+		 *            the {@link EStructuralFeature}
+		 * @return <code>true</code> if there is a difference in the given {@link Match} for the given
+		 *         {@link EStructuralFeature}, <code>false</code> otherwise
+		 */
+		protected boolean hasDiffForFeature(Match match, EStructuralFeature feature) {
+			boolean res = false;
+
+			for (Diff diff : match.getDifferences()) {
+				if (diff instanceof AttributeChange) {
+					if (((AttributeChange)diff).getAttribute() == feature) {
+						res = true;
+						break;
+					}
+				} else if (diff instanceof ReferenceChange) {
+					if (((ReferenceChange)diff).getReference() == feature) {
+						res = true;
+						break;
+					}
+				}
+			}
+
+			return res;
+		}
+
+	}
+
+	/**
+	 * Locate a specific {@link Setting}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class LocationSetting implements Setting {
+
+		/**
+		 * The {@link EObject}.
+		 */
+		private final EObject eObject;
+
+		/**
+		 * The {@link EStructuralFeature}.
+		 */
+		private final EStructuralFeature feature;
+
+		/**
+		 * The index in the {@link LocationSetting#getEStructuralFeature() feature}.
+		 */
+		private final int index;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param eObject
+		 *            the {@link EObject}
+		 * @param feature
+		 *            the {@link EStructuralFeature}
+		 * @param index
+		 *            the index in the {@link LocationSetting#getEStructuralFeature() feature}
+		 */
+		private LocationSetting(EObject eObject, EStructuralFeature feature, int index) {
+			this.eObject = eObject;
+			this.feature = feature;
+			this.index = index;
+		}
+
+		/**
+		 * Unsupported operation.
+		 */
+		public void unset() {
+			throw new UnsupportedOperationException();
+		}
+
+		/**
+		 * Unsupported operation.
+		 * 
+		 * @param newValue
+		 *            the new value
+		 */
+		public void set(Object newValue) {
+			throw new UnsupportedOperationException();
+		}
+
+		/**
+		 * Unsupported operation.
+		 * 
+		 * @return <code>true</code> if is setn <code>false</code> otherwise
+		 */
+		public boolean isSet() {
+			throw new UnsupportedOperationException();
+		}
+
+		/**
+		 * Gets the {@link EStructuralFeature} containing the value.
+		 * 
+		 * @return the {@link EStructuralFeature} containing the value
+		 */
+		public EStructuralFeature getEStructuralFeature() {
+			return feature;
+		}
+
+		/**
+		 * Gets the containing {@link EObject}.
+		 * 
+		 * @return the containing {@link EObject}
+		 */
+		public EObject getEObject() {
+			return eObject;
+		}
+
+		/**
+		 * Gets the value.
+		 * 
+		 * @param resolve
+		 *            whether to resolve
+		 * @return the value
+		 */
+		@SuppressWarnings("unchecked")
+		public Object get(boolean resolve) {
+			final Object res;
+
+			final Object value = eObject.eGet(feature, resolve);
+			if (feature.isMany()) {
+				res = ((List<Object>)value).get(index);
+			} else {
+				res = value;
+			}
+
+			return res;
+		}
+	}
+
+	/**
+	 * UTF-8 charset.
+	 */
+	private static final String UTF_8 = "UTF-8";
+
+	/**
+	 * The factory used to retrieve providers.
+	 */
+	private static final AdapterFactory FACTORY = new ComposedAdapterFactory(
+			ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class, java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		final Class<? extends ILocation> res;
+
+		if (IEObjectContainer.class.isAssignableFrom(containerType) && (element instanceof EObject
+				|| element instanceof Setting)) {
+			res = getType();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+		final IEObjectLocation toInit = (IEObjectLocation)location;
+
+		final EObject eObject;
+		final String featureName;
+		final int index;
+		if (element instanceof Setting) {
+			final Setting setting = (Setting)element;
+			eObject = setting.getEObject();
+			final EStructuralFeature feature = ((Setting)element).getEStructuralFeature();
+			featureName = feature.getName();
+			if (feature.isMany()) {
+				index = ((List<?>)eObject.eGet(feature, true)).indexOf(setting.get(true));
+			} else {
+				index = 0;
+			}
+		} else {
+			eObject = getEObject((IEObjectContainer)container, (EObject)element);
+			featureName = null;
+			index = 0;
+		}
+
+		final String uriFragment = eObject.eResource().getURIFragment(eObject);
+		toInit.setURIFragment(uriFragment);
+		toInit.setFeatureName(featureName);
+		toInit.setSavedURIFragment(getSavedURIFragment((IEObjectContainer)container, uriFragment));
+		toInit.setIndex(index);
+	}
+
+	/**
+	 * Gets the saved {@link URI} fragment for the given {@link IEObjectContainer} and {@link URI} fragment.
+	 * 
+	 * @param container
+	 *            the {@link IEObjectContainer}
+	 * @param uriFragment
+	 *            the {@link URI} fragment
+	 * @return the saved {@link URI} fragment for the given {@link IEObjectContainer} and {@link URI} fragment
+	 *         if any, <code>null</code> otherwise
+	 */
+	private String getSavedURIFragment(IEObjectContainer container, String uriFragment) {
+		String res = null;
+
+		for (ICouple couple : container.getSavedURIFragments()) {
+			if (couple.getKey().contentEquals(uriFragment)) {
+				res = couple.getValue();
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the instance of the given {@link EObject} in the given {@link IEObjectContainer}.
+	 * 
+	 * @param container
+	 *            the {@link IEObjectContainer}
+	 * @param eObject
+	 *            the original {@link EObject}
+	 * @return the instance of the given {@link EObject} in the given {@link IEObjectContainer} if any, the
+	 *         <code>null</code> otherwise
+	 */
+	private EObject getEObject(IEObjectContainer container, EObject eObject) {
+		final EObject res;
+
+		final Resource resource = (Resource)MappingUtils.getConnectorRegistry().getElement(container);
+		final String uriFragment = eObject.eResource().getURIFragment(eObject);
+		res = resource.getEObject(uriFragment);
+
+		return res;
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object element) {
+		final boolean res;
+
+		final IEObjectLocation eObjectLocation = (IEObjectLocation)location;
+		if (eObjectLocation.getFeatureName() != null) {
+			if (element instanceof Setting) {
+				final Setting setting = (Setting)element;
+				final String uriFragment = setting.getEObject().eResource().getURIFragment(setting
+						.getEObject());
+				final boolean correctIndex;
+				if (setting.getEStructuralFeature().isMany()) {
+					correctIndex = eObjectLocation.getIndex() == ((List<?>)setting.getEObject().eGet(setting
+							.getEStructuralFeature())).indexOf(setting.get(true));
+				} else {
+					correctIndex = true;
+				}
+				res = uriFragment != null && uriFragment.equals(eObjectLocation.getURIFragment())
+						&& eObjectLocation.getFeatureName().equals(setting.getEStructuralFeature().getName())
+						&& correctIndex;
+			} else {
+				res = false;
+			}
+		} else {
+			if (element instanceof EObject) {
+				final EObject eObject = (EObject)element;
+				final String uriFragment = ((EObject)element).eResource().getURIFragment(eObject);
+				res = uriFragment != null && uriFragment.equals(eObjectLocation.getURIFragment());
+			} else {
+				res = false;
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * Updates {@link IEObjectLocation#getSavedURIFragment() saved URI fragment}.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}
+	 * @param eObjectContainer
+	 *            the {@link IEObjectContainer}
+	 * @param newResource
+	 *            the new {@link Resource}
+	 * @throws Exception
+	 *             if the XMI serialization failed or elements couldn't be created
+	 */
+	private static void updateSavedURIFragment(ILocationContainer container,
+			IEObjectContainer eObjectContainer, Resource newResource) throws Exception {
+		final IBase base = MappingUtils.getBase(container);
+
+		final Copier copier = new Copier();
+		final Collection<EObject> copiedContents = copier.copyAll(newResource.getContents());
+		copier.copyReferences();
+		final XMIResourceImpl newXMIResource = new XMIResourceImpl();
+		newXMIResource.getContents().addAll(copiedContents);
+
+		for (Entry<EObject, EObject> entry : copier.entrySet()) {
+			final EObject newEObject = entry.getKey();
+			final EObject savedEObject = entry.getValue();
+			final ICouple couple = base.getFactory().createElement(ICouple.class);
+			couple.setKey(newResource.getURIFragment(newEObject));
+			couple.setValue(newXMIResource.getURIFragment(savedEObject));
+			eObjectContainer.getSavedURIFragments().add(couple);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		final String res;
+
+		final Object element = getElement(location);
+		if (element instanceof Setting) {
+			final Setting setting = (Setting)element;
+			res = getName(setting.getEObject(), setting.getEStructuralFeature(), ((IEObjectLocation)location)
+					.getIndex());
+		} else if (element instanceof EObject) {
+			res = getName((EObject)element, null, 0);
+		} else {
+			// the located element has been deleted...
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the name for the given {@link EObject} and {@link EStructuralFeature}.
+	 * 
+	 * @param eObj
+	 *            the {@link EObject}
+	 * @param feature
+	 *            the {@link EStructuralFeature} can be <code>null</code>
+	 * @param index
+	 *            the index in the feature
+	 * @return the name for the given {@link EObject} and {@link EStructuralFeature}
+	 */
+	private String getName(EObject eObj, EStructuralFeature feature, int index) {
+		final StringBuilder res = new StringBuilder();
+
+		res.append(getLabel(eObj));
+		if (feature != null) {
+			res.append(" ");
+			res.append(feature.getEContainingClass().getName());
+			res.append(".");
+			res.append(feature.getName());
+			res.append("[");
+			res.append(index);
+			res.append("]");
+		}
+
+		return res.toString();
+	}
+
+	/**
+	 * Gets the label of the given {@link EObject}.
+	 * 
+	 * @param eObj
+	 *            the {@link EObject}
+	 * @return the label of the given {@link EObject}
+	 */
+	private static String getLabel(EObject eObj) {
+		final String res;
+		final IItemLabelProvider itemProvider = (IItemLabelProvider)FACTORY.adapt(eObj,
+				IItemLabelProvider.class);
+
+		if (itemProvider == null) {
+			res = eObj.toString();
+		} else {
+			res = itemProvider.getText(eObj);
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		final ILocationDescriptor res;
+
+		final Object adapted = adapt(element);
+		if (adapted instanceof EObject) {
+			final EObject eObj = (EObject)adapted;
+			res = new ObjectLocationDescriptor(base, adapted, getName(eObj, null, 0));
+		} else if (adapted instanceof Setting) {
+			final EObject eObj = ((Setting)adapted).getEObject();
+			final EStructuralFeature feature = ((Setting)adapted).getEStructuralFeature();
+			res = new ObjectLocationDescriptor(base, adapted, getName(eObj, feature, 0));
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	@Override
+	protected boolean canUpdate(Object element) {
+		return element instanceof EObject || element instanceof Setting;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		final Object res;
+
+		final IEObjectLocation eObjLocation = (IEObjectLocation)location;
+		if (location.getContainer() != null) {
+			final Resource resource = (Resource)MappingUtils.getConnectorRegistry().getElement(
+					(ILocation)location.getContainer());
+			final EObject eObject = resource.getEObject(eObjLocation.getURIFragment());
+			if (eObjLocation.getFeatureName() != null) {
+				final EStructuralFeature feature = eObject.eClass().getEStructuralFeature(eObjLocation
+						.getFeatureName());
+				final int index = eObjLocation.getIndex();
+				res = new LocationSetting(eObject, feature, index);
+			} else {
+				res = eObject;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType()
+	 */
+	public Class<? extends ILocation> getType() {
+		return IEObjectLocation.class;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/MappingCDOListener.java b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/MappingCDOListener.java
new file mode 100644
index 0000000..e24cfea
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.emf/src/org/eclipse/intent/mapping/emf/connector/MappingCDOListener.java
@@ -0,0 +1,305 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.connector;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
+import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
+import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
+import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+
+/**
+ * Listen to changes and update locations accordingly.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingCDOListener implements IListener {
+
+	/**
+	 * The {@link CDOView} cache.
+	 */
+	private final Map<String, Map<Integer, CDOView>> viewCache = new HashMap<String, Map<Integer, CDOView>>();
+
+	/**
+	 * The {@link Set} of {@link IBase} to update.
+	 */
+	private final Set<IBase> bases = new LinkedHashSet<IBase>();
+
+	/**
+	 * Adds the given {@link CDOView} to the cache.
+	 * 
+	 * @param view
+	 *            the {@link CDOView} to add
+	 */
+	public void addSessionToCache(CDOView view) {
+		Map<Integer, CDOView> map = viewCache.get(view.getSession().getRepositoryInfo().getUUID());
+		if (map == null) {
+			map = new HashMap<Integer, CDOView>();
+			viewCache.put(view.getSession().getRepositoryInfo().getUUID(), map);
+		}
+		map.put(view.getBranch().getID(), view);
+
+		view.getSession().addListener(this);
+	}
+
+	/**
+	 * Removes the given {@link CDOView} to the cache.
+	 * 
+	 * @param view
+	 *            the {@link CDOView} to remove
+	 */
+	public void removeSessionFromCache(CDOView view) {
+		view.getSession().removeListener(this);
+
+		Map<Integer, CDOView> map = viewCache.get(view.getSession().getRepositoryInfo().getUUID());
+		if (map != null) {
+			if (map.remove(view.getBranch().getID()) != null && map.isEmpty()) {
+				viewCache.remove(view.getSession().getRepositoryInfo().getUUID());
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		final CDOView res;
+
+		final Map<Integer, CDOView> map = viewCache.get(((ICDORepositoryLocation)location).getUUID());
+		if (map != null) {
+			res = map.get(((ICDORepositoryLocation)location).getBranchID());
+		} else {
+			res = null;
+		}
+
+		// TODO if not in cache open a session/view...
+
+		return res;
+	}
+
+	/**
+	 * Adds the given {@link IBase} to the {@link Set} of {@link IBase} to update.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 */
+	public void addBaseToUpdate(IBase base) {
+		bases.add(base);
+	}
+
+	/**
+	 * Removes the given {@link IBase} from the {@link Set} of {@link IBase} to update.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 */
+	public void removeBaseToUpdate(IBase base) {
+		bases.add(base);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.net4j.util.event.IListener#notifyEvent(org.eclipse.net4j.util.event.IEvent)
+	 */
+	public void notifyEvent(IEvent event) {
+		if (event instanceof CDOSessionInvalidationEvent) {
+			final CDOSessionInvalidationEvent cdoSessionInvalidationEvent = (CDOSessionInvalidationEvent)event;
+
+			checkDetachedObjects(cdoSessionInvalidationEvent);
+
+			checkChangedObjects(cdoSessionInvalidationEvent);
+		}
+	}
+
+	/**
+	 * Checks for {@link CDOSessionInvalidationEvent#getDetachedObjects() detached objects}.
+	 * 
+	 * @param cdoSessionInvalidationEvent
+	 *            the {@link CDOSessionInvalidationEvent}
+	 */
+	protected void checkDetachedObjects(final CDOSessionInvalidationEvent cdoSessionInvalidationEvent) {
+		final CDOView view = cdoSessionInvalidationEvent.getSource().openView(cdoSessionInvalidationEvent
+				.getBranch(), cdoSessionInvalidationEvent.getPreviousTimeStamp());
+
+		for (CDOIDAndVersion cdoidAndVersion : cdoSessionInvalidationEvent.getDetachedObjects()) {
+			final CDOObject object = view.getObject(cdoidAndVersion.getID());
+			if (object instanceof CDOResourceNode) {
+				final CDOResourceNode node = (CDOResourceNode)object;
+				for (IBase base : bases) {
+					final ILocation repositoryLocation = MappingUtils.getConnectorRegistry().getLocation(base,
+							view);
+					if (repositoryLocation != null) {
+						deleteResourceNode(repositoryLocation, node);
+					}
+				}
+			} else {
+				// TODO other deletions/resource change
+			}
+		}
+
+		view.close();
+	}
+
+	/**
+	 * Deletes the given {@link CDOResourceNode} from the given {@link ILocationContainer}.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}
+	 * @param node
+	 *            the {@link CDOResourceNode}
+	 */
+	protected void deleteResourceNode(final ILocationContainer container, final CDOResourceNode node) {
+		final ILocation resourceNodeLocation = MappingUtils.getConnectorRegistry().getLocation(container,
+				node);
+		if (resourceNodeLocation != null) {
+			try {
+				MappingUtils.markAsDeletedOrDelete(resourceNodeLocation, node.getPath()
+						+ " has been deleted.");
+			} catch (InstantiationException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (IllegalAccessException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (ClassNotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * Checks for {@link CDOSessionInvalidationEvent#getChangedObjects() changed objects}.
+	 * 
+	 * @param cdoSessionInvalidationEvent
+	 *            the {@link CDOSessionInvalidationEvent}
+	 */
+	protected void checkChangedObjects(final CDOSessionInvalidationEvent cdoSessionInvalidationEvent) {
+		final CDOView oldView = cdoSessionInvalidationEvent.getSource().openView(cdoSessionInvalidationEvent
+				.getBranch(), cdoSessionInvalidationEvent.getPreviousTimeStamp());
+		final CDOView newView = cdoSessionInvalidationEvent.getLocalTransaction();
+
+		for (IBase base : bases) {
+			final Map<CDOView, Set<Object>> changedElements = new HashMap<CDOView, Set<Object>>();
+			for (CDORevisionKey cdoRevisionKey : cdoSessionInvalidationEvent.getChangedObjects()) {
+				final ILocation repositoryLocation = MappingUtils.getConnectorRegistry().getLocation(base,
+						oldView);
+				if (repositoryLocation != null) {
+					if (cdoRevisionKey instanceof CDORevisionDelta) {
+						final CDORevisionDelta delta = (CDORevisionDelta)cdoRevisionKey;
+						final CDOObject newObject = newView.getObject(delta.getID());
+						Set<Object> set = changedElements.get(newView);
+						if (set == null) {
+							set = new HashSet<Object>();
+							changedElements.put(newView, set);
+						}
+						set.add(newObject.eResource());
+						final CDOFeatureDelta renameDelta = delta.getFeatureDelta(EresourcePackage.eINSTANCE
+								.getCDOResourceNode_Name());
+						final CDOFeatureDelta binaryContentDelta = delta.getFeatureDelta(
+								EresourcePackage.eINSTANCE.getCDOBinaryResource_Contents());
+						final CDOFeatureDelta textContentDelta = delta.getFeatureDelta(
+								EresourcePackage.eINSTANCE.getCDOTextResource_Contents());
+						if (renameDelta != null) {
+							final CDOResourceNode object = (CDOResourceNode)oldView.getObject(delta.getID());
+							final CDOResourceNode oldNode = (CDOResourceNode)object;
+							renameResourceNode(newView, repositoryLocation, oldNode,
+									(CDOResourceNode)newObject);
+						} else if (binaryContentDelta != null || textContentDelta != null) {
+							set.add(newObject);
+						}
+					}
+				}
+			}
+			resourceContentChanged(base, changedElements);
+		}
+		oldView.close();
+
+	}
+
+	/**
+	 * Renames the given {@link CDOResourceNode} and its contents if any.
+	 * 
+	 * @param newView
+	 *            the {@link CDOView} before changes
+	 * @param repositoryLocation
+	 *            the repository location
+	 * @param oldNode
+	 *            the {@link CDOResourceNode} before changes
+	 * @param newNode
+	 *            the {@link CDOResourceNode} after changes
+	 */
+	private void renameResourceNode(CDOView newView, ILocation repositoryLocation, CDOResourceNode oldNode,
+			CDOResourceNode newNode) {
+		final ILocation location = MappingUtils.getConnectorRegistry().getLocation(repositoryLocation,
+				oldNode);
+		if (location != null) {
+			MappingUtils.getConnectorRegistry().updateLocation(location, newNode);
+		}
+		if (oldNode instanceof CDOResourceFolder) {
+			for (CDOResourceNode oldChild : ((CDOResourceFolder)oldNode).getNodes()) {
+				final CDOResourceNode newChild = (CDOResourceNode)newView.getObject(oldChild.cdoID());
+				if (newChild != null) {
+					renameResourceNode(newView, repositoryLocation, oldChild, newChild);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Updates changed {@link CDOResource}.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 * @param changedElements
+	 *            the {@link Set} of changed elements per {@link CDOView}
+	 */
+	private void resourceContentChanged(IBase base, Map<CDOView, Set<Object>> changedElements) {
+		for (Entry<CDOView, Set<Object>> entry : changedElements.entrySet()) {
+			final ILocation repositoryLocation = MappingUtils.getConnectorRegistry().getLocation(base, entry
+					.getKey());
+			if (repositoryLocation != null) {
+				for (Object element : entry.getValue()) {
+					final ILocation location = MappingUtils.getConnectorRegistry().getLocation(
+							repositoryLocation, element);
+					if (location != null) {
+						MappingUtils.getConnectorRegistry().updateLocation(location, element);
+					}
+				}
+			}
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.checkstyle
new file mode 100644
index 0000000..b3e8ea9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.classpath b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.project b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.project
new file mode 100644
index 0000000..0b3fddf
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.ide.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f7e57f8
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e5d2296
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.eclipse.intent.mapping.ide.ui;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.intent.mapping,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.editors,
+ org.eclipse.jface.text
+Export-Package: org.eclipse.intent.mapping.ide.ui,
+ org.eclipse.intent.mapping.ide.ui.adapter,
+ org.eclipse.intent.mapping.ide.ui.command,
+ org.eclipse.intent.mapping.ide.ui.marker,
+ org.eclipse.intent.mapping.ide.ui.view
+Bundle-ActivationPolicy: lazy
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/build.properties b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/plugin.xml
new file mode 100644
index 0000000..00f4228
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/plugin.xml
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.views">
+      <category
+            id="org.eclipse.intent.mapping.ide.ui.mapping"
+            name="Mapping">
+      </category>
+      <view
+            category="org.eclipse.intent.mapping.ide.ui.mapping"
+            class="org.eclipse.intent.mapping.ide.ui.view.MappingView"
+            id="org.eclipse.intent.mapping.ide.ui.view.MappingView"
+            name="Mapping">
+      </view>
+      <view
+            category="org.eclipse.intent.mapping.ide.ui.mapping"
+            class="org.eclipse.intent.mapping.ide.ui.view.SynchronizationPaletteView"
+            id="org.eclipse.intent.mapping.ide.ui.view.SynchronizationPaletteView"
+            name="Synchronization Palette">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="java.lang.Object"
+            class="org.eclipse.intent.mapping.ide.ui.adapter.ObjectToLocationAdapterFactory">
+         <adapter
+               type="org.eclipse.intent.mapping.base.ILocation">
+         </adapter>
+         <adapter
+               type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+         </adapter>
+      </factory>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+         <menu
+               id="org.eclipse.intent.mapping.ide.ui.menu"
+               label="Synchronize"
+               tooltip="Locations and Links menu">
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.linkAsSource"
+                  label="Link location as master source"
+                  style="push"
+                  tooltip="Links the current location as master source with activated locations from the synchronization palette">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <adapt
+                              type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           </instanceof>
+                        </adapt>
+                     </iterate>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.linkAsTarget"
+                  label="Link location as slave target"
+                  style="push"
+                  tooltip="Links the current location as slave target with activated locations from the synchronization palette">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <adapt
+                              type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           </instanceof>
+                        </adapt>
+                     </iterate>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.addToSynchronizationPalette"
+                  label="Add location to synchronization palette"
+                  style="push"
+                  tooltip="Adds the selected location to synchronization palette">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <adapt
+                              type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           </instanceof>
+                        </adapt>
+                     </iterate>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.removeFromSynchronizationPalette"
+                  label="Remove location from  synchronization palette"
+                  style="push"
+                  tooltip="Removes the selected location from the synchronization palette">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <adapt
+                              type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILocationDescriptor">
+                           </instanceof>
+                        </adapt>
+                     </iterate>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.delete"
+                  label="Delete"
+                  style="push"
+                  tooltip="Deletes the selection">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <or>
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILocation">
+                           </instanceof>
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILink">
+                           </instanceof>
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.IReport">
+                           </instanceof>
+                        </or>
+                     </iterate>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.describe"
+                  label="Describe"
+                  style="push"
+                  tooltip="Describe the selected Link or Report">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <or>
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.ILink">
+                           </instanceof>
+                           <instanceof
+                                 value="org.eclipse.intent.mapping.base.IReport">
+                           </instanceof>
+                        </or>
+                     </iterate>
+                     <count
+                           value="1">
+                     </count>
+                  </with>
+               </visibleWhen>
+            </command>
+            <command
+                  commandId="org.eclipse.intent.mapping.ide.ui.addReport"
+                  label="Add Report"
+                  style="push"
+                  tooltip="Add a Report to the selected Link">
+               <visibleWhen
+                     checkEnabled="false">
+                  <with
+                        variable="selection">
+                     <iterate
+                           ifEmpty="false"
+                           operator="and">
+                        <instanceof
+                              value="org.eclipse.intent.mapping.base.ILink">
+                        </instanceof>
+                     </iterate>
+                     <count
+                           value="1">
+                     </count>
+                  </with>
+               </visibleWhen>
+            </command>
+         </menu>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.AddToSynchronizationPaletteHandler"
+            commandId="org.eclipse.intent.mapping.ide.ui.addToSynchronizationPalette">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.RemoveFromSynchronizationPaletteHandler"
+            commandId="org.eclipse.intent.mapping.ide.ui.removeFromSynchronizationPalette">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.LinkAsSource"
+            commandId="org.eclipse.intent.mapping.ide.ui.linkAsSource">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.LinkAsTarget"
+            commandId="org.eclipse.intent.mapping.ide.ui.linkAsTarget">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.Delete"
+            commandId="org.eclipse.intent.mapping.ide.ui.delete">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.Describe"
+            commandId="org.eclipse.intent.mapping.ide.ui.describe">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.ide.ui.command.AddReport"
+            commandId="org.eclipse.intent.mapping.ide.ui.addReport">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Adds the selected location to synchronization palette"
+            id="org.eclipse.intent.mapping.ide.ui.addToSynchronizationPalette"
+            name="Add Location to synchronization palette">
+      </command>
+      <command
+            description="Removes the selected location from the synchronization palette"
+            id="org.eclipse.intent.mapping.ide.ui.removeFromSynchronizationPalette"
+            name="Remove Location from  synchronization palette">
+      </command>
+      <command
+            description="Links the selected location as master source with activated locations from the synchronization palette"
+            id="org.eclipse.intent.mapping.ide.ui.linkAsSource"
+            name="Link as master source">
+      </command>
+      <command
+            description="Links the selected location as slave target with activated locations from the synchronization palette"
+            id="org.eclipse.intent.mapping.ide.ui.linkAsTarget"
+            name="Link as slave target">
+      </command>
+      <command
+            description="Deletes the selection"
+            id="org.eclipse.intent.mapping.ide.ui.delete"
+            name="Delete">
+      </command>
+      <command
+            description="Describe the selected Link or Report"
+            id="org.eclipse.intent.mapping.ide.ui.describe"
+            name="Describe">
+      </command>
+      <command
+            description="Add a Report to selected Link"
+            id="org.eclipse.intent.mapping.ide.ui.addReport"
+            name="Add Report">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            id="org.eclipse.intent.mapping.ide.ui.mapping"
+            name="Mapping">
+      </category>
+   </extension>
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/pom.xml
new file mode 100644
index 0000000..352e875
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.ide.ui</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping IDE UI</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/Activator.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/Activator.java
new file mode 100644
index 0000000..69645b3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/Activator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Activator extends Plugin {
+
+	/** The plug-in ID. */
+	public static final String PLUGIN_ID = "org.eclipse.intent.mapping.ide.ui";
+
+	/** This plug-in's shared instance. */
+	private static Activator plugin;
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+		plugin = null;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/UiIdeMappingUtils.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/UiIdeMappingUtils.java
new file mode 100644
index 0000000..1012d2b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/UiIdeMappingUtils.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui;
+
+import java.io.File;
+import java.net.URI;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IURIEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.editors.text.ILocationProvider;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * UI Ide mapping utilities.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class UiIdeMappingUtils {
+
+	/**
+	 * Constructor.
+	 */
+	private UiIdeMappingUtils() {
+		// nothing to do here
+	}
+
+	/**
+	 * Shows the given {@link ILocation} in an editor.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to show
+	 */
+	public static void showLocation(ILocation location) {
+		if (!location.isMarkedAsDeleted()) {
+			final IMarker marker = IdeMappingUtils.getMarker(location);
+			if (marker != null) {
+				showMarker(marker);
+			} else {
+				final IMarker createdMarker = IdeMappingUtils.getOrCreateMarker(location);
+				if (createdMarker != null) {
+					showMarker(createdMarker);
+				}
+				IdeMappingUtils.deleteMarker(location);
+			}
+		}
+	}
+
+	/**
+	 * Shows the given {@link IMarker}.
+	 * 
+	 * @param marker
+	 *            the {@link IMarker} to show
+	 */
+	private static void showMarker(final IMarker marker) {
+		final IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getActivePage();
+		try {
+			IDE.openEditor(activePage, marker, true);
+		} catch (PartInitException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+					"unable to open location marker: ", e));
+		}
+	}
+
+	/**
+	 * Gets the {@link IFile} from the given {@link IEditorInput}.
+	 * 
+	 * @param editorInput
+	 *            the {@link IEditorInput}
+	 * @return the {@link IFile} from the given {@link IEditorInput} if any, <code>null</code> otherwise
+	 */
+	public static IFile getFile(final IEditorInput editorInput) {
+		final IFile file;
+		if (editorInput instanceof IFileEditorInput) {
+			file = ((IFileEditorInput)editorInput).getFile();
+		} else {
+			final IPath path = getPath(editorInput);
+			if (path != null) {
+				file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
+			} else {
+				file = IdeMappingUtils.adapt(editorInput, IFile.class);
+			}
+		}
+		return file;
+	}
+
+	/**
+	 * Gets the {@link IPath} from the given {@link IEditorInput}.
+	 * 
+	 * @param editorInput
+	 *            the {@link IEditorInput}
+	 * @return the {@link IPath} from the given {@link IEditorInput} if any, <code>null</code> otherwise
+	 */
+	public static IPath getPath(final IEditorInput editorInput) {
+		final IPath path;
+		if (editorInput instanceof ILocationProvider) {
+			path = ((ILocationProvider)editorInput).getPath(editorInput);
+		} else if (editorInput instanceof IURIEditorInput) {
+			final URI uri = ((IURIEditorInput)editorInput).getURI();
+			if (uri != null) {
+				final File osFile = URIUtil.toFile(uri);
+				if (osFile != null) {
+					path = Path.fromOSString(osFile.getAbsolutePath());
+				} else {
+					path = null;
+				}
+			} else {
+				path = null;
+			}
+		} else {
+			path = null;
+		}
+		return path;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/adapter/ObjectToLocationAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/adapter/ObjectToLocationAdapterFactory.java
new file mode 100644
index 0000000..51f68a7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/adapter/ObjectToLocationAdapterFactory.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.adapter;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.base.LocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.adapter.MarkerToLocationDescriptorAdapterFactory;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.intent.mapping.ide.ui.UiIdeMappingUtils;
+import org.eclipse.intent.mapping.text.TextRegion;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Adapts {@link Object} to {@link ILocation} and {@link ILocationDescriptor}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ObjectToLocationAdapterFactory extends MarkerToLocationDescriptorAdapterFactory {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		final Object res;
+
+		final Object superRes = super.getAdapter(adaptableObject, adapterType);
+		if (superRes != null) {
+			res = superRes;
+		} else {
+			if (adaptableObject instanceof IStructuredSelection) {
+				final Object firstElement = ((IStructuredSelection)adaptableObject).getFirstElement();
+				if (firstElement instanceof ILocation) {
+					res = (ILocation)firstElement;
+				} else {
+					res = selectionToLocationDescriptor((IStructuredSelection)adaptableObject);
+				}
+			} else if (adaptableObject instanceof ITextSelection) {
+				res = textSelectionToLocationDescriptor((ITextSelection)adaptableObject);
+			} else {
+				res = objectToLocationDescriptor(adaptableObject);
+			}
+		}
+
+		return adapt(res, adapterType);
+	}
+
+	/**
+	 * Adapts {@link ILocationDescriptor} to {@link ILocation} and vise versa.
+	 * 
+	 * @param object
+	 *            {@link ILocation} or {@link ILocationDescriptor}
+	 * @param adapterType
+	 *            the type of adapter to look up
+	 * @return {@link ILocation} or {@link ILocationDescriptor}
+	 */
+	private Object adapt(Object object, Class<?> adapterType) {
+		final Object res;
+
+		if (ILocation.class == adapterType) {
+			if (object instanceof ILocation) {
+				res = object;
+			} else {
+				if (object instanceof ILocationDescriptor && ((ILocationDescriptor)object).exists()) {
+					res = ((ILocationDescriptor)object).getLocation();
+				} else {
+					res = null;
+				}
+			}
+		} else if (ILocationDescriptor.class == adapterType) {
+			if (object instanceof ILocation) {
+				res = new LocationDescriptor((ILocation)object);
+			} else if (object instanceof ILocationDescriptor) {
+				res = object;
+			} else {
+				res = null;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Adapts {@link IStructuredSelection} to {@link ILocationDescriptor}.
+	 * 
+	 * @param selection
+	 *            the {@link IStructuredSelection}
+	 * @return the {@link ILocationDescriptor}
+	 */
+	private ILocationDescriptor selectionToLocationDescriptor(IStructuredSelection selection) {
+		final ILocationDescriptor res;
+
+		final Object firstElement = selection.getFirstElement();
+		res = objectToLocationDescriptor(firstElement);
+
+		return res;
+	}
+
+	/**
+	 * Adapts the given element to {@link ILocationDescriptor}.
+	 * 
+	 * @param element
+	 *            the element
+	 * @return the {@link ILocationDescriptor}
+	 */
+	private ILocationDescriptor objectToLocationDescriptor(final Object element) {
+		final ILocationDescriptor res;
+
+		final IBase currentBase = IdeMappingUtils.getCurrentBase();
+		if (currentBase != null) {
+			res = MappingUtils.getConnectorRegistry().getLocationDescriptor(currentBase, element);
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Adapts {@link ITextSelection} {@link ILocationDescriptor}.
+	 * 
+	 * @param selection
+	 *            the {@link ITextSelection}
+	 * @return the {@link ILocationDescriptor}
+	 */
+	private ILocationDescriptor textSelectionToLocationDescriptor(ITextSelection selection) {
+		ILocationDescriptor res;
+
+		final IWorkbenchPart activePart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+				.getActivePart();
+		if (activePart instanceof IEditorPart) {
+			final IEditorInput input = ((IEditorPart)activePart).getEditorInput();
+			final IFile file = UiIdeMappingUtils.getFile(input);
+			try {
+				final String content = MappingUtils.getContent((int)file.getLocation().toFile().length(), file
+						.getContents());
+				final int start = selection.getOffset();
+				final Integer end = start + selection.getLength();
+				if (start > -1 && end < content.length()) {
+					// TODO find a way to provide more dynamic container
+					final TextRegion region = new TextRegion(file, content.substring(start, end), start, end);
+					res = IdeMappingUtils.adapt(region, ILocationDescriptor.class);
+				} else {
+					res = null;
+				}
+			} catch (IOException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+						"can't read content " + file.getLocation().toString(), e));
+				res = null;
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+						"can't read content " + file.getLocation().toString(), e));
+				res = null;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class<?>[] getAdapterList() {
+		return new Class[] {ILocation.class, ILocationDescriptor.class };
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AbstractLocationHandler.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AbstractLocationHandler.java
new file mode 100644
index 0000000..82fe527
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AbstractLocationHandler.java
@@ -0,0 +1,215 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Abstract implementation of handler for {@link ILocationDescriptor}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractLocationHandler extends AbstractHandler {
+
+	/**
+	 * Unable to create {@link ILink} message.
+	 */
+	protected static final String UNABLE_TO_CREATE_LINK = "unable to create link";
+
+	/**
+	 * Unable to create source {@link ILocation} message.
+	 */
+	protected static final String UNABLE_TO_CREATE_SOURCE_LOCATION = "unable to create source location";
+
+	/**
+	 * Unable to create target {@link ILocation} message.
+	 */
+	protected static final String UNABLE_TO_CREATE_TARGET_LOCATION = "unable to create target location";
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+
+		final List<ILocationDescriptor> locationDescriptors = new ArrayList<ILocationDescriptor>();
+		if (selection instanceof IStructuredSelection) {
+
+			for (Object selected : ((IStructuredSelection)selection).toList()) {
+				final Object element = getElementFromSelectedObject(selected);
+				final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(element,
+						ILocationDescriptor.class);
+				if (locationDescriptor != null) {
+					locationDescriptors.add(locationDescriptor);
+				}
+			}
+
+		} else {
+			final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(selection,
+					ILocationDescriptor.class);
+			if (locationDescriptor != null) {
+				locationDescriptors.add(locationDescriptor);
+			}
+		}
+
+		for (ILocationDescriptor locationDescriptor : locationDescriptors) {
+			handleLocationDescriptor(locationDescriptor);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Gets the element to adapt to {@link ILocationDescriptor} from the given selected {@link Object}.
+	 * 
+	 * @param selected
+	 *            the selected {@link Object}
+	 * @return the element to adapt to {@link ILocationDescriptor} from the given selected {@link Object}
+	 */
+	protected Object getElementFromSelectedObject(Object selected) {
+		return selected;
+	}
+
+	@Override
+	public void setEnabled(Object evaluationContext) {
+		super.setEnabled(evaluationContext);
+		boolean enable;
+
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+		if (selection instanceof IStructuredSelection) {
+			enable = false;
+			for (Object selected : ((IStructuredSelection)selection).toList()) {
+				final Object element = getElementFromSelectedObject(selected);
+				final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(element,
+						ILocationDescriptor.class);
+				if (locationDescriptor != null) {
+					if (canHandleLocation(locationDescriptor)) {
+						enable = true;
+						break;
+					}
+				}
+			}
+		} else if (selection != null) {
+			final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(selection,
+					ILocationDescriptor.class);
+			enable = locationDescriptor != null && canHandleLocation(locationDescriptor);
+		} else {
+			enable = false;
+		}
+
+		setBaseEnabled(enable);
+	}
+
+	/**
+	 * Creates the {@link ILocation} from {@link ILocationDescriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor}
+	 * @param errorMessage
+	 *            the error message
+	 * @return the created {@link ILocation} if no error occurred, <code>null</code> otherwise
+	 */
+	protected ILocation createLocation(ILocationDescriptor locationDescriptor, String errorMessage) {
+		ILocation res;
+
+		try {
+			res = locationDescriptor.getOrCreate();
+		} catch (InstantiationException eLocation) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, errorMessage,
+					eLocation));
+			res = null;
+		} catch (IllegalAccessException eLocation) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, errorMessage,
+					eLocation));
+			res = null;
+		} catch (ClassNotFoundException eLocation) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, errorMessage,
+					eLocation));
+			res = null;
+		}
+		return res;
+	}
+
+	/**
+	 * Creates the {@link ILink}.
+	 * 
+	 * @param source
+	 *            the {@link ILink#getSource() source} {@link ILocation}
+	 * @param target
+	 *            the {@link ILink#getTarget() target} {@link ILocation}
+	 * @return the created {@link ILink} if any, <code>null</code> otherwise
+	 */
+	protected ILink createLink(final ILocation source, ILocation target) {
+		ILink res;
+
+		try {
+			if (MappingUtils.canCreateLink(source, target)) {
+				res = MappingUtils.createLink(source, target);
+			} else {
+				res = null;
+			}
+		} catch (InstantiationException eLink) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+					UNABLE_TO_CREATE_LINK, eLink));
+			res = null;
+		} catch (IllegalAccessException eLink) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+					UNABLE_TO_CREATE_LINK, eLink));
+			res = null;
+		} catch (ClassNotFoundException eLink) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+					UNABLE_TO_CREATE_LINK, eLink));
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Handles the given {@link ILocationDescriptor} by applying needed operation.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to handle
+	 */
+	protected abstract void handleLocationDescriptor(ILocationDescriptor locationDescriptor);
+
+	/**
+	 * Tells if the given {@link ILocationDescriptor} can be handled.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to check
+	 * @return <code>true</code> if the given {@link ILocationDescriptor} can be handled, <code>false</code>
+	 *         otherwise
+	 */
+	protected abstract boolean canHandleLocation(ILocationDescriptor locationDescriptor);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddReport.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddReport.java
new file mode 100644
index 0000000..844791c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddReport.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Add an {@link org.eclipse.intent.mapping.base.IReport IReport} to the selected {@link ILink}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class AddReport extends AbstractHandler {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+
+		if (selection instanceof IStructuredSelection) {
+			final Object element = ((IStructuredSelection)selection).getFirstElement();
+			if (element instanceof ILink) {
+				final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+				MultiLineTextDialog dialog = new MultiLineTextDialog(shell, "");
+				if (dialog.open() == Window.OK) {
+					try {
+						MappingUtils.createReport((ILink)element, dialog.getText());
+					} catch (InstantiationException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+								.getMessage(), e));
+					} catch (IllegalAccessException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+								.getMessage(), e));
+					} catch (ClassNotFoundException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+								.getMessage(), e));
+					}
+				}
+			}
+		}
+
+		return null;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddToSynchronizationPaletteHandler.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddToSynchronizationPaletteHandler.java
new file mode 100644
index 0000000..1d6d797
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/AddToSynchronizationPaletteHandler.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Adds selected {@link ILocationDescriptor} to the {@link IdeMappingUtils#getSynchronizationPalette()
+ * synchronization palette}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class AddToSynchronizationPaletteHandler extends AbstractLocationHandler {
+
+	@Override
+	protected void handleLocationDescriptor(ILocationDescriptor locationDescriptor) {
+		IdeMappingUtils.addLocationToPalette(locationDescriptor);
+	}
+
+	@Override
+	protected boolean canHandleLocation(ILocationDescriptor locationDescriptor) {
+		return !IdeMappingUtils.getSynchronizationPalette().contains(locationDescriptor);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Delete.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Delete.java
new file mode 100644
index 0000000..bd2bc83
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Delete.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Deletes the selected {@link ILink}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Delete extends AbstractHandler {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+
+		if (selection instanceof IStructuredSelection) {
+			deleteReports(((IStructuredSelection)selection).toList());
+			deleteLinks(((IStructuredSelection)selection).toList());
+			deleteLocations(((IStructuredSelection)selection).toList());
+		}
+
+		return null;
+	}
+
+	@Override
+	public void setEnabled(Object evaluationContext) {
+		super.setEnabled(evaluationContext);
+		boolean enable = false;
+
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+
+		if (selection instanceof IStructuredSelection) {
+			for (Object selected : ((IStructuredSelection)selection).toList()) {
+				if (selected instanceof IReport) {
+					enable = true;
+					break;
+				}
+			}
+			if (!enable) {
+				for (Object selected : ((IStructuredSelection)selection).toList()) {
+					if (selected instanceof ILink && MappingUtils.canDeleteLink((ILink)selected)) {
+						enable = true;
+						break;
+					}
+				}
+			}
+			if (!enable) {
+				for (Object selected : ((IStructuredSelection)selection).toList()) {
+					if (selected instanceof ILocation && MappingUtils.canDeleteLocation(
+							(ILocation)selected)) {
+						enable = true;
+						break;
+					}
+				}
+			}
+		}
+
+		setBaseEnabled(enable);
+	}
+
+	/**
+	 * Deletes selected {@link IReport}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteReports(List<?> selection) {
+		final List<IReport> reportsToDelete = new ArrayList<IReport>();
+		for (Object data : selection) {
+			if (data instanceof IReport) {
+				reportsToDelete.add((IReport)data);
+			}
+		}
+
+		for (IReport report : reportsToDelete) {
+			MappingUtils.deleteReport(report);
+		}
+	}
+
+	/**
+	 * Deletes selected {@link ILink}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteLinks(List<?> selection) {
+		final List<ILink> linksToDelete = new ArrayList<ILink>();
+		for (Object data : selection) {
+			if (data instanceof ILink && MappingUtils.canDeleteLink((ILink)data)) {
+				linksToDelete.add((ILink)data);
+			}
+		}
+
+		for (ILink link : linksToDelete) {
+			MappingUtils.deleteLink(link);
+		}
+	}
+
+	/**
+	 * Deletes selected {@link ILocation}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteLocations(List<?> selection) {
+		final List<ILocation> locationsToDelete = new ArrayList<ILocation>();
+
+		for (Object data : selection) {
+			if (data instanceof ILocation) {
+				locationsToDelete.add((ILocation)data);
+			}
+		}
+
+		for (ILocation location : locationsToDelete) {
+			MappingUtils.deleteLocation(location);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Describe.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Describe.java
new file mode 100644
index 0000000..a677472
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/Describe.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Describe the selected {@link ILink} or {@link IReport}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Describe extends AbstractHandler {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection();
+
+		if (selection instanceof IStructuredSelection) {
+			final Object element = ((IStructuredSelection)selection).getFirstElement();
+			if (element instanceof ILink) {
+				final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+				MultiLineTextDialog dialog = new MultiLineTextDialog(shell, ((ILink)element)
+						.getDescription());
+				if (dialog.open() == Window.OK) {
+					((ILink)element).setDescription(dialog.getText());
+				}
+			} else if (element instanceof IReport) {
+				final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+				MultiLineTextDialog dialog = new MultiLineTextDialog(shell, ((IReport)element)
+						.getDescription());
+				if (dialog.open() == Window.OK) {
+					((IReport)element).setDescription(dialog.getText());
+				}
+			}
+		}
+
+		return null;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsSource.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsSource.java
new file mode 100644
index 0000000..31692a6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsSource.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Links the selection as {@link org.eclipse.intent.mapping.base.ILink#getSource() source} of the active
+ * synchronization palette.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LinkAsSource extends AbstractLocationHandler {
+
+	@Override
+	protected void handleLocationDescriptor(ILocationDescriptor sourceDescriptor) {
+		final ILocation source = createLocation(sourceDescriptor, UNABLE_TO_CREATE_SOURCE_LOCATION);
+		sourceDescriptor.dispose();
+		if (source != null) {
+			for (ILocationDescriptor targetDescriptor : IdeMappingUtils.getSynchronizationPalette()) {
+				if (IdeMappingUtils.isActive(targetDescriptor)) {
+					final ILocation target = createLocation(targetDescriptor,
+							UNABLE_TO_CREATE_TARGET_LOCATION);
+					if (!source.equals(target) && MappingUtils.getLink(source, target) == null) {
+						createLink(source, target);
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	protected boolean canHandleLocation(ILocationDescriptor sourceDescriptor) {
+		boolean res = false;
+
+		if (sourceDescriptor.exists()) {
+			for (ILocationDescriptor targetDescriptor : IdeMappingUtils.getSynchronizationPalette()) {
+				if (IdeMappingUtils.isActive(targetDescriptor)) {
+					if (MappingUtils.canCreateLink(sourceDescriptor, targetDescriptor)) {
+						res = true;
+						break;
+					}
+				}
+			}
+		} else {
+			res = IdeMappingUtils.asActiveLocationDescriptor();
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsTarget.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsTarget.java
new file mode 100644
index 0000000..f48808f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/LinkAsTarget.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Links the selection as {@link org.eclipse.intent.mapping.base.ILink#getTarget() target} of the active
+ * synchronization palette.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LinkAsTarget extends AbstractLocationHandler {
+
+	@Override
+	protected void handleLocationDescriptor(ILocationDescriptor targetDescriptor) {
+		final ILocation target = createLocation(targetDescriptor, UNABLE_TO_CREATE_TARGET_LOCATION);
+		targetDescriptor.dispose();
+		if (target != null) {
+			for (ILocationDescriptor sourceDescriptor : IdeMappingUtils.getSynchronizationPalette()) {
+				if (IdeMappingUtils.isActive(sourceDescriptor)) {
+					final ILocation source = createLocation(sourceDescriptor,
+							UNABLE_TO_CREATE_SOURCE_LOCATION);
+					if (!source.equals(target) && MappingUtils.getLink(source, target) == null) {
+						createLink(source, target);
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	protected boolean canHandleLocation(ILocationDescriptor targetDescriptor) {
+		boolean res = false;
+
+		if (targetDescriptor.exists()) {
+			for (ILocationDescriptor sourceDescriptor : IdeMappingUtils.getSynchronizationPalette()) {
+				if (IdeMappingUtils.isActive(sourceDescriptor)) {
+					if (MappingUtils.canCreateLink(sourceDescriptor, targetDescriptor)) {
+						res = true;
+						break;
+					}
+				}
+			}
+		} else {
+			res = IdeMappingUtils.asActiveLocationDescriptor();
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/MultiLineTextDialog.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/MultiLineTextDialog.java
new file mode 100644
index 0000000..d643e7f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/MultiLineTextDialog.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * A multi line text {@link Dialog}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MultiLineTextDialog extends Dialog {
+
+	/**
+	 * Initial {@link Dialog} size.
+	 */
+	private static final int Y = 300;
+
+	/**
+	 * Initial {@link Dialog} size.
+	 */
+	private static final int X = 450;
+
+	/**
+	 * The initial text.
+	 */
+	private String text;
+
+	/**
+	 * Create the dialog.
+	 * 
+	 * @param parentShell
+	 *            the parent {@link Shell}
+	 * @param initialText
+	 *            the initial text
+	 */
+	public MultiLineTextDialog(Shell parentShell, String initialText) {
+		super(parentShell);
+		this.text = initialText;
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 * 
+	 * @param parent
+	 */
+	@Override
+	protected Control createDialogArea(Composite parent) {
+		Composite container = (Composite)super.createDialogArea(parent);
+		container.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		final Text textText = new Text(container, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL
+				| SWT.MULTI);
+		textText.setText(text);
+		textText.addDisposeListener(new DisposeListener() {
+
+			public void widgetDisposed(DisposeEvent e) {
+				text = textText.getText();
+			}
+		});
+
+		return container;
+	}
+
+	/**
+	 * Create contents of the button bar.
+	 * 
+	 * @param parent
+	 */
+	@Override
+	protected void createButtonsForButtonBar(Composite parent) {
+		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+	}
+
+	/**
+	 * Return the initial size of the dialog.
+	 */
+	@Override
+	protected Point getInitialSize() {
+		return new Point(X, Y);
+	}
+
+	/**
+	 * Gets the {@link Dialog} text.
+	 * 
+	 * @return the {@link Dialog} text
+	 */
+	public String getText() {
+		return text;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/RemoveFromSynchronizationPaletteHandler.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/RemoveFromSynchronizationPaletteHandler.java
new file mode 100644
index 0000000..3c63910
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/command/RemoveFromSynchronizationPaletteHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.command;
+
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * Removes selected {@link ILocationDescriptor} from the {@link IdeMappingUtils#getSynchronizationPalette()
+ * synchronization palette}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class RemoveFromSynchronizationPaletteHandler extends AbstractLocationHandler {
+
+	@Override
+	protected void handleLocationDescriptor(ILocationDescriptor locationDescriptor) {
+		IdeMappingUtils.removeLocationFromPalette(locationDescriptor);
+		locationDescriptor.dispose();
+	}
+
+	@Override
+	protected boolean canHandleLocation(ILocationDescriptor locationDescriptor) {
+		return IdeMappingUtils.getSynchronizationPalette().contains(locationDescriptor);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/marker/TextLocationMarkerUpdater.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/marker/TextLocationMarkerUpdater.java
new file mode 100644
index 0000000..0f60d3f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/marker/TextLocationMarkerUpdater.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.marker;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.ide.ILocationMarker;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.Position;
+import org.eclipse.ui.texteditor.IMarkerUpdater;
+
+/**
+ * Updates {@link ITextLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextLocationMarkerUpdater implements IMarkerUpdater {
+
+	// TODO can't be used since we don't know which ITextLocation will be updated and which will not.
+
+	/**
+	 * The ID of this updater.
+	 */
+	public static final String ID = "org.eclipse.intent.mapping.ide.ui.marker.textLocationMarkerUpdater";
+
+	/**
+	 * Updated attributes.
+	 */
+	private static final String[] ATTRIBUTES = {ILocationMarker.LOCATION_ATTRIBUTE, };
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.ui.texteditor.IMarkerUpdater#getMarkerType()
+	 */
+	public String getMarkerType() {
+		return ILocationMarker.TEXT_LOCATION_ID;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.ui.texteditor.IMarkerUpdater#getAttribute()
+	 */
+	public String[] getAttribute() {
+		return ATTRIBUTES;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.ui.texteditor.IMarkerUpdater#updateMarker(org.eclipse.core.resources.IMarker,
+	 *      org.eclipse.jface.text.IDocument, org.eclipse.jface.text.Position)
+	 */
+	public boolean updateMarker(IMarker marker, IDocument document, Position position) {
+		final boolean res;
+
+		if (position != null) {
+			res = updateLocation(marker, position);
+		} else {
+			res = true;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Updates the {@link ITextLocation} corresponding to the given {@link IMarker} witht he given
+	 * {@link Position}.
+	 * 
+	 * @param marker
+	 *            the {@link IMarker} to update
+	 * @param position
+	 *            the new {@link Position}
+	 * @return <code>false</code> if the {@link IMarker} should be deleted, <code>true</code> otherwise
+	 */
+	private boolean updateLocation(IMarker marker, Position position) {
+		boolean res;
+
+		try {
+			final ITextLocation location = (ITextLocation)marker.getAttribute(
+					ILocationMarker.LOCATION_ATTRIBUTE);
+			if (position.isDeleted()) {
+				// TODO mark location as deleted
+				res = false;
+			} else {
+				final int locationStart = location.getStartOffset();
+				final int locationEnd = location.getEndOffset();
+
+				if (locationStart != -1 && locationEnd != -1) {
+					int offset = position.getOffset();
+					if (locationStart != offset) {
+						location.setStartOffset(offset);
+					}
+					offset += position.getLength();
+					if (locationEnd != offset) {
+						location.setEndOffset(offset);
+					}
+				}
+				// TODO if the length is 0 then mark location as deleted and remove the marker ?
+				res = true;
+			}
+		} catch (CoreException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+			res = true;
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/AbstractLocationContentProvider.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/AbstractLocationContentProvider.java
new file mode 100644
index 0000000..dc4717d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/AbstractLocationContentProvider.java
@@ -0,0 +1,399 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILinkListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Abstract {@link ILocation} {@link ITreeContentProvider}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractLocationContentProvider implements ITreeContentProvider {
+
+	/**
+	 * The {@link ILinkListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class LinkListener extends ILinkListener.Stub {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener.Stub#sourceChanged(org.eclipse.intent.mapping.base.ILocation,
+		 *      org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void sourceChanged(ILocation oldSource, ILocation newSource) {
+			update();
+			refresh();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener.Stub#targetChanged(org.eclipse.intent.mapping.base.ILocation,
+		 *      org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void targetChanged(ILocation oldTarget, ILocation newTarget) {
+			update();
+			refresh();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener.Stub#reportAdded(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportAdded(org.eclipse.intent.mapping.base.IReport report) {
+			if (showReport) {
+				update();
+				refresh();
+			}
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener.Stub#reportRemoved(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportRemoved(org.eclipse.intent.mapping.base.IReport report) {
+			if (showReport) {
+				update();
+				refresh();
+			}
+		}
+
+	}
+
+	/**
+	 * Empty {@link Object} array.
+	 */
+	private static final Object[] EMPTY = new Object[0];
+
+	/**
+	 * The {@link List} of root {@link ILocation}.
+	 */
+	protected final List<ILocation> roots = new ArrayList<ILocation>();
+
+	/**
+	 * the tree of {@link ILocation}.
+	 */
+	protected final Map<ILocation, List<ILocation>> locationForest = new HashMap<ILocation, List<ILocation>>();
+
+	/**
+	 * The current {@link Viewer}.
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * The current input.
+	 */
+	protected Object currentInput;
+
+	/**
+	 * The {@link ILinkListener}.
+	 */
+	protected final ILinkListener linkListener = new LinkListener();
+
+	/**
+	 * The {@link Set} of listened {@link ILink}.
+	 */
+	protected Set<ILink> listenedLinks = new HashSet<ILink>();
+
+	/**
+	 * Should we show {@link org.eclipse.intent.mapping.base.IReport IReport}. Default to <code>false</code>.
+	 */
+	protected boolean showReport;
+
+	/**
+	 * The {@link ILocationListener}.
+	 */
+	protected ILocationListener locationListener = new ILocationListener.Stub() {
+
+		@Override
+		public void containerChanged(ILocationContainer oldContainer, ILocationContainer newContainer) {
+			update();
+			refresh();
+		}
+
+		@Override
+		public void markedAsDeletedChanged(boolean newValue) {
+			update();
+			refresh();
+		}
+
+		public void changed(String reportDescription) {
+			update();
+			refresh();
+		}
+
+	};
+
+	/**
+	 * The {@link Set} of listened {@link ILocation}.
+	 */
+	protected Set<ILocation> listenedLocations = new HashSet<ILocation>();
+
+	/**
+	 * Refresh the {@link Viewer}.
+	 */
+	private void refresh() {
+		if (!currentViewer.getControl().isDisposed()) {
+			if (Display.getDefault().getThread() == Thread.currentThread()) {
+				currentViewer.refresh();
+			} else {
+				Display.getDefault().asyncExec(new Runnable() {
+
+					public void run() {
+						currentViewer.refresh();
+					}
+				});
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+	 */
+	public void dispose() {
+		clearLocations();
+		clearLinks();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+	 *      java.lang.Object, java.lang.Object)
+	 */
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		update(viewer, newInput);
+	}
+
+	/**
+	 * Update the content with the given {@link Viewer} and {@link Object input}.
+	 * 
+	 * @param viewer
+	 *            the {@link Viewer}
+	 * @param input
+	 *            the {@link Object input}
+	 */
+	private void update(Viewer viewer, Object input) {
+		this.currentViewer = viewer;
+		this.currentInput = input;
+		update();
+	}
+
+	/**
+	 * Update the content.
+	 */
+	protected void update() {
+		clearLocations();
+		clearLinks();
+
+		final List<ILocation> locationLeaves = new ArrayList<ILocation>();
+		final List<ILink> links = new ArrayList<ILink>();
+
+		setLeavesAndLinks(currentInput, locationLeaves, links);
+
+		installLinkListeners(links);
+
+		roots.addAll(setLocationForest(currentViewer, locationLeaves));
+	}
+
+	/**
+	 * Sets {@link ILocation} leaves and {@link ILink}.
+	 * 
+	 * @param input
+	 *            the current input
+	 * @param locationLeaves
+	 *            the {@link List} of {@link ILocation} leaves to set
+	 * @param links
+	 *            the {@link List} of {@link ILink} to set
+	 */
+	protected abstract void setLeavesAndLinks(Object input, List<ILocation> locationLeaves,
+			List<ILink> links);
+
+	/**
+	 * Installs {@link ILinkListener} on the given {@link ILink}.
+	 * 
+	 * @param links
+	 *            the {@link List} of {@link ILink}
+	 */
+	private void installLinkListeners(final List<ILink> links) {
+		for (ILink link : links) {
+			listenedLinks.add(link);
+			link.addListener(linkListener);
+		}
+	}
+
+	/**
+	 * Clears the {@link ILocation} and removes {@link ILocationListener}.
+	 */
+	private void clearLocations() {
+		Set<ILocation> currentLocations = new HashSet<ILocation>(roots);
+
+		while (!currentLocations.isEmpty()) {
+			Set<ILocation> nextLocations = new HashSet<ILocation>();
+			for (ILocation current : currentLocations) {
+				listenedLocations.remove(current);
+				current.removeListener(locationListener);
+				nextLocations.addAll(locationForest.get(current));
+			}
+			currentLocations = nextLocations;
+		}
+
+		roots.clear();
+		locationForest.clear();
+	}
+
+	/**
+	 * Clears the {@link ILinkListener}.
+	 */
+	private void clearLinks() {
+		for (ILink link : listenedLinks) {
+			link.removeListener(linkListener);
+		}
+		listenedLinks.clear();
+	}
+
+	/**
+	 * Sets the {@link ILocation} forest.
+	 * 
+	 * @param viewer
+	 *            the {@link Viewer}.
+	 * @param locationLeaves
+	 *            the {@link List} of {@link ILocation} leaves.
+	 * @return the {@link List} of {@link ILocation} roots.
+	 */
+	private List<ILocation> setLocationForest(Viewer viewer, List<ILocation> locationLeaves) {
+		final List<ILocation> res = new ArrayList<ILocation>();
+
+		Set<ILocation> currentLocations = new LinkedHashSet<ILocation>(locationLeaves);
+		for (ILocation leaf : locationLeaves) {
+			locationForest.put(leaf, new ArrayList<ILocation>());
+		}
+		while (!currentLocations.isEmpty()) {
+			final Set<ILocation> nextLocations = new LinkedHashSet<ILocation>();
+			for (ILocation current : currentLocations) {
+				if (current != null) {
+					if (!listenedLocations.contains(current)) {
+						listenedLocations.add(current);
+						current.addListener(locationListener);
+					}
+					if (current.getContainer() instanceof ILocation) {
+						final ILocation container = (ILocation)current.getContainer();
+						List<ILocation> children = locationForest.get(container);
+						if (children == null) {
+							children = new ArrayList<ILocation>();
+							locationForest.put(container, children);
+						}
+						children.add(current);
+						nextLocations.add(container);
+					} else {
+						res.add(current);
+					}
+				}
+
+			}
+			currentLocations = nextLocations;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
+	 */
+	public Object[] getElements(Object inputElement) {
+		final List<Object> res = new ArrayList<Object>(roots.size());
+
+		for (ILocation location : roots) {
+			if (inputElement == location) {
+				final Object[] children = getChildren(inputElement);
+				for (int i = 0; i < children.length; i++) {
+					res.add(i, children[i]);
+				}
+			} else {
+				res.add(location);
+			}
+		}
+
+		return res.toArray();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+	 */
+	public Object[] getChildren(Object parentElement) {
+		final Object[] res;
+
+		final List<ILocation> children = locationForest.get(parentElement);
+		if (children != null) {
+			res = children.toArray();
+		} else {
+			res = EMPTY;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+	 */
+	public Object getParent(Object element) {
+		final ILocation res;
+
+		final ILocationContainer container = ((ILocation)element).getContainer();
+		if (container instanceof ILocation) {
+			res = (ILocation)container;
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+	 */
+	public boolean hasChildren(Object element) {
+		return !locationForest.get(element).isEmpty();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ContainerProviderSelectionDialog.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ContainerProviderSelectionDialog.java
new file mode 100644
index 0000000..852f1d4
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ContainerProviderSelectionDialog.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ICheckStateProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * A {@link IContainerProvider} selection dialog.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ContainerProviderSelectionDialog extends Dialog {
+
+	/**
+	 * The Y size.
+	 */
+	private static final int Y = 300;
+
+	/**
+	 * The X size.
+	 */
+	private static final int X = 900;
+
+	/**
+	 * The {@link IBase} to edit.
+	 */
+	protected final IBase base;
+
+	/**
+	 * Selected {@link List} of {@link IContainerProvider} names.
+	 */
+	protected final List<String> selected = new ArrayList<String>();
+
+	/**
+	 * Create the dialog.
+	 * 
+	 * @param parentShell
+	 *            the parent {@link Shell}
+	 * @param base
+	 *            the {@link IBase} to edit
+	 */
+	public ContainerProviderSelectionDialog(Shell parentShell, IBase base) {
+		super(parentShell);
+		this.base = base;
+		selected.addAll(base.getContainerProviders());
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 * 
+	 * @param parent
+	 */
+	@Override
+	protected Control createDialogArea(Composite parent) {
+		final Composite container = (Composite)super.createDialogArea(parent);
+
+		CheckboxTableViewer tableViewer = new CheckboxTableViewer(new Table(container, SWT.BORDER
+				| SWT.V_SCROLL | SWT.CHECK));
+		tableViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+		tableViewer.setLabelProvider(new LabelProvider());
+		tableViewer.setContentProvider(new IStructuredContentProvider() {
+
+			@SuppressWarnings("unchecked")
+			public Object[] getElements(Object inputElement) {
+				return ((java.util.List<Object>)inputElement).toArray();
+			}
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+			 */
+			public void dispose() {
+				// nothing to do here
+			}
+
+			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+				// nothing to do here
+			}
+
+		});
+		tableViewer.setCheckStateProvider(new ICheckStateProvider() {
+
+			public boolean isGrayed(Object element) {
+				return false;
+			}
+
+			public boolean isChecked(Object element) {
+				return selected.contains(element);
+			}
+		});
+		tableViewer.addCheckStateListener(new ICheckStateListener() {
+
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				if (event.getChecked()) {
+					selected.add((String)event.getElement());
+				} else {
+					selected.remove((String)event.getElement());
+				}
+			}
+		});
+		tableViewer.setInput(getContainerProviderNames());
+
+		return container;
+	}
+
+	/**
+	 * Gets the {@link java.util.List List} of possible {@link IContainerProvider} names.
+	 * 
+	 * @return the {@link java.util.List List} of possible {@link IContainerProvider} names
+	 */
+	protected java.util.List<String> getContainerProviderNames() {
+		final java.util.List<String> res;
+
+		final Set<String> providerNames = new HashSet<String>();
+		providerNames.addAll(base.getContainerProviders());
+		providerNames.addAll(MappingUtils.getContainerProviderFactory().getProviderNames());
+
+		res = new ArrayList<String>(providerNames);
+		Collections.sort(res);
+
+		return res;
+	}
+
+	/**
+	 * Create contents of the button bar.
+	 * 
+	 * @param parent
+	 */
+	@Override
+	protected void createButtonsForButtonBar(Composite parent) {
+		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+	}
+
+	/**
+	 * Return the initial size of the dialog.
+	 */
+	@Override
+	protected Point getInitialSize() {
+		return new Point(X, Y);
+	}
+
+	@Override
+	protected void okPressed() {
+		super.okPressed();
+		base.getContainerProviders().clear();
+		base.getContainerProviders().addAll(selected);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/FilteredCheckboxTree.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/FilteredCheckboxTree.java
new file mode 100644
index 0000000..4942de6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/FilteredCheckboxTree.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+/**
+ * A tree that filter and has check boxes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FilteredCheckboxTree extends FilteredTree {
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param parent
+	 *            the parent <code>Composite</code>
+	 * @param treeStyle
+	 *            the style bits for the <code>Tree</code>
+	 * @param filter
+	 *            the filter to be used
+	 * @param useNewLook
+	 *            <code>true</code> if the new 3.5 look should be used
+	 */
+	public FilteredCheckboxTree(Composite parent, int treeStyle, PatternFilter filter, boolean useNewLook) {
+		super(parent, treeStyle, filter, useNewLook);
+	}
+
+	/**
+	 * Custom tree viewer subclass that clears the caches in patternFilter on any change to the tree. See bug
+	 * 187200.
+	 * 
+	 * @since 3.3
+	 */
+	class NotifyingTreeViewer extends CheckboxTreeViewer {
+
+		/**
+		 * Clear cache {@link Method}.
+		 */
+		private final Method clearCaches;
+
+		/**
+		 * A notifying tree with check boxes.
+		 * 
+		 * @param parent
+		 *            the parent control
+		 * @param style
+		 *            the SWT style bits
+		 */
+		NotifyingTreeViewer(Composite parent, int style) {
+			super(parent, style);
+			Method method = null;
+			try {
+				method = PatternFilter.class.getDeclaredMethod("clearCaches");
+				method.setAccessible(true);
+			} catch (NoSuchMethodException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (SecurityException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+			clearCaches = method;
+		}
+
+		/**
+		 * Clear the cache.
+		 */
+		private void clearCache() {
+			try {
+				clearCaches.invoke(getPatternFilter());
+			} catch (IllegalAccessException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (IllegalArgumentException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (InvocationTargetException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+		}
+
+		@Override
+		public void add(Object parentElementOrTreePath, Object childElement) {
+			clearCache();
+			super.add(parentElementOrTreePath, childElement);
+		}
+
+		@Override
+		public void add(Object parentElementOrTreePath, Object[] childElements) {
+			clearCache();
+			super.add(parentElementOrTreePath, childElements);
+		}
+
+		@Override
+		protected void inputChanged(Object input, Object oldInput) {
+			clearCache();
+			super.inputChanged(input, oldInput);
+		}
+
+		@Override
+		public void insert(Object parentElementOrTreePath, Object element, int position) {
+			clearCache();
+			super.insert(parentElementOrTreePath, element, position);
+		}
+
+		@Override
+		public void refresh() {
+			clearCache();
+			super.refresh();
+		}
+
+		@Override
+		public void refresh(boolean updateLabels) {
+			clearCache();
+			super.refresh(updateLabels);
+		}
+
+		@Override
+		public void refresh(Object element) {
+			clearCache();
+			super.refresh(element);
+		}
+
+		@Override
+		public void refresh(Object element, boolean updateLabels) {
+			clearCache();
+			super.refresh(element, updateLabels);
+		}
+
+		@Override
+		public void remove(Object elementsOrTreePaths) {
+			clearCache();
+			super.remove(elementsOrTreePaths);
+		}
+
+		@Override
+		public void remove(Object parent, Object[] elements) {
+			clearCache();
+			super.remove(parent, elements);
+		}
+
+		@Override
+		public void remove(Object[] elementsOrTreePaths) {
+			clearCache();
+			super.remove(elementsOrTreePaths);
+		}
+
+		@Override
+		public void replace(Object parentElementOrTreePath, int index, Object element) {
+			clearCache();
+			super.replace(parentElementOrTreePath, index, element);
+		}
+
+		@Override
+		public void setChildCount(Object elementOrTreePath, int count) {
+			clearCache();
+			super.setChildCount(elementOrTreePath, count);
+		}
+
+		@Override
+		public void setContentProvider(IContentProvider provider) {
+			clearCache();
+			super.setContentProvider(provider);
+		}
+
+		@Override
+		public void setHasChildren(Object elementOrTreePath, boolean hasChildren) {
+			clearCache();
+			super.setHasChildren(elementOrTreePath, hasChildren);
+		}
+
+	}
+
+	@Override
+	protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
+		return new NotifyingTreeViewer(parent, style);
+	}
+
+	@Override
+	public CheckboxTreeViewer getViewer() {
+		return (CheckboxTreeViewer)super.getViewer();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/LinkedLocationContentProvider.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/LinkedLocationContentProvider.java
new file mode 100644
index 0000000..31453c9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/LinkedLocationContentProvider.java
@@ -0,0 +1,318 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationListener.Stub;
+
+/**
+ * Provide {@link ILink linked} {@link ILocation} for a given {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LinkedLocationContentProvider extends AbstractLocationContentProvider {
+
+	/**
+	 * Recursively listen to {@link ILocation#getContents() content} changes.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class ContentLocationListener extends Stub {
+
+		/**
+		 * Link listener for content listener. It basically attach to an {@link ILink} when its
+		 * {@link ILink#getSource() source} or {@link ILink#getTarget() target} is not setted yet.
+		 *
+		 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+		 */
+		private final class LinkListener extends org.eclipse.intent.mapping.base.ILinkListener.Stub {
+
+			/**
+			 * The link we are attached to.
+			 */
+			private final ILink link;
+
+			/**
+			 * Constructor.
+			 * 
+			 * @param link
+			 *            the {@link ILink} to attach to.
+			 */
+			LinkListener(ILink link) {
+				this.link = link;
+			}
+
+			@Override
+			public void sourceChanged(ILocation oldSource, ILocation newSource) {
+				update();
+				currentViewer.refresh();
+				link.removeListener(this);
+			}
+
+			@Override
+			public void targetChanged(ILocation oldTarget, ILocation newTarget) {
+				update();
+				currentViewer.refresh();
+				link.removeListener(this);
+			}
+		}
+
+		@Override
+		public void contentsAdded(ILocation location) {
+			update();
+			currentViewer.refresh();
+			addListener(location);
+		}
+
+		@Override
+		public void contentsRemoved(ILocation location) {
+			removeListener(location);
+		}
+
+		@Override
+		public void sourceLinkAdded(ILink link) {
+			if (direction == SOURCE) {
+				if (link.getSource() == null) {
+					link.addListener(new LinkListener(link));
+				} else {
+					update();
+					currentViewer.refresh();
+				}
+			}
+		}
+
+		@Override
+		public void targetLinkAdded(ILink link) {
+			if (direction == TARGET) {
+				if (link.getTarget() == null) {
+					link.addListener(new LinkListener(link));
+				} else {
+					update();
+					currentViewer.refresh();
+				}
+			}
+		}
+
+		/**
+		 * Recursively add itself to the content of the given {@link ILocation}.
+		 * 
+		 * @param location
+		 *            the {@link ILocation} to listen
+		 */
+		private void addListener(ILocation location) {
+			if (!listeners.containsKey(location)) {
+				location.addListener(this);
+				listeners.put(location, this);
+				for (ILocation child : location.getContents()) {
+					addListener(child);
+				}
+			}
+		}
+
+		/**
+		 * Recursively remove itself from the content of the given {@link ILocation}.
+		 * 
+		 * @param location
+		 *            the {@link ILocation} to listen
+		 */
+		private void removeListener(ILocation location) {
+			location.removeListener(this);
+			listeners.remove(location);
+			for (ILocation child : location.getContents()) {
+				removeListener(child);
+			}
+		}
+	}
+
+	/**
+	 * {@link ILocation#getSourceLinks() source} direction.
+	 */
+	public static final int SOURCE = 0;
+
+	/**
+	 * {@link ILocation#getTargetLinks() target} direction.
+	 */
+	public static final int TARGET = 1;
+
+	/**
+	 * The direction either {@link #SOURCE source} or {@link #TARGET target}.
+	 */
+	private final int direction;
+
+	/**
+	 * Tells if the input location should be walked recursively for {@link ILink}.
+	 */
+	private final boolean recursive;
+
+	/**
+	 * Tells if we should provide {@link ILink}.
+	 */
+	private final boolean provideLinks;
+
+	/**
+	 * Mapping from an {@link ILocation} and its {@link ContentLocationListener}.
+	 */
+	private final Map<ILocation, ContentLocationListener> listeners = new HashMap<ILocation, ContentLocationListener>();
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param provideLinks
+	 *            tells if we should provide {@link ILink}
+	 * @param direction
+	 *            the direction either {@link #SOURCE source} or {@link #TARGET target}
+	 * @param recursive
+	 *            tells if the input location should be walked recursively for {@link ILink}
+	 */
+	public LinkedLocationContentProvider(boolean provideLinks, int direction, boolean recursive) {
+		this.provideLinks = provideLinks;
+		this.direction = direction;
+		this.recursive = recursive;
+	}
+
+	@Override
+	protected void setLeavesAndLinks(Object input, List<ILocation> locationLeaves, List<ILink> links) {
+		if (input instanceof ILocation) {
+			final ILocation location = (ILocation)input;
+			if (direction == SOURCE) {
+				for (ILink link : location.getSourceLinks()) {
+					links.add(link);
+					locationLeaves.add(link.getSource());
+				}
+			} else if (direction == TARGET) {
+				for (ILink link : location.getTargetLinks()) {
+					links.add(link);
+					locationLeaves.add(link.getTarget());
+				}
+			}
+			if (recursive) {
+				final ContentLocationListener listener = new ContentLocationListener();
+				location.addListener(listener);
+				listeners.put((ILocation)input, listener);
+				for (ILocation child : location.getContents()) {
+					setLeavesAndLinks(child, locationLeaves, links);
+				}
+			}
+		}
+	}
+
+	@Override
+	public boolean hasChildren(Object element) {
+		final boolean res;
+
+		if (provideLinks) {
+			if (element instanceof ILocation) {
+				res = !getchildLinks((ILocation)element).isEmpty() || super.hasChildren(element);
+			} else {
+				res = false;
+			}
+		} else {
+			res = super.hasChildren(element);
+		}
+
+		return res;
+	}
+
+	@Override
+	public Object[] getChildren(Object parentElement) {
+		final Object[] res;
+
+		final Object[] childLocations = super.getChildren(parentElement);
+		if (provideLinks && parentElement instanceof ILocation) {
+			final List<ILink> childlinks = getchildLinks((ILocation)parentElement);
+			res = concat(childLocations, childlinks.toArray());
+		} else {
+			res = childLocations;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets child {@link ILink} for the given parent {@link ILocation}.
+	 * 
+	 * @param parentlocation
+	 *            the parent {@link ILocation}
+	 * @return child {@link ILink} for the given parent {@link ILocation}
+	 */
+	private List<ILink> getchildLinks(ILocation parentlocation) {
+		final List<ILink> links = new ArrayList<ILink>();
+		final List<ILink> linksToCheck;
+		if (direction == SOURCE) {
+			linksToCheck = parentlocation.getTargetLinks();
+		} else if (direction == TARGET) {
+			linksToCheck = parentlocation.getSourceLinks();
+		} else {
+			throw new IllegalStateException("should not happend");
+		}
+		for (ILink link : linksToCheck) {
+			if (listenedLinks.contains(link)) {
+				links.add(link);
+			}
+		}
+		return links;
+	}
+
+	/**
+	 * Concatenates two given arrays of {@link Object}.
+	 * 
+	 * @param first
+	 *            the first array
+	 * @param second
+	 *            the second array
+	 * @return a new array composed of the two given arrays
+	 */
+	private Object[] concat(Object[] first, Object[] second) {
+		final Object[] result = Arrays.copyOf(first, first.length + second.length);
+
+		System.arraycopy(second, 0, result, first.length, second.length);
+
+		return result;
+	}
+
+	@Override
+	public Object getParent(Object element) {
+		final Object res;
+
+		if (provideLinks && element instanceof ILink) {
+			if (direction == SOURCE) {
+				res = ((ILink)element).getTarget();
+			} else if (direction == TARGET) {
+				res = ((ILink)element).getSource();
+			} else {
+				throw new IllegalStateException("should not happend");
+			}
+		} else {
+			res = super.getParent(element);
+		}
+
+		return res;
+	}
+
+	@Override
+	protected void update() {
+		for (Entry<ILocation, ContentLocationListener> entry : listeners.entrySet()) {
+			entry.getKey().removeListener(entry.getValue());
+		}
+		listeners.clear();
+		super.update();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingBaseRegistryContentProvider.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingBaseRegistryContentProvider.java
new file mode 100644
index 0000000..3165038
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingBaseRegistryContentProvider.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseRegistry;
+import org.eclipse.intent.mapping.base.IBaseRegistryListener;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * {@link IBaseRegistry} content provider.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingBaseRegistryContentProvider implements IStructuredContentProvider {
+
+	/**
+	 * Workaround for null in JFace combo box...
+	 */
+	public static final Object NO_VALUE = new Object();
+
+	// Force the start of org.eclipse.intent.mapping.ide
+	// TODO we should find a better way to do that
+	{
+		IdeMappingUtils.getFileConectorDelegateRegistry();
+	}
+
+	/**
+	 * An {@link IBaseRegistryListener} that update a {@link Viewer}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class RegisteryListener implements IBaseRegistryListener {
+
+		/**
+		 * The {@link Viewer} to update.
+		 */
+		private final Viewer viewer;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param viewer
+		 *            the {@link Viewer} to update
+		 */
+		RegisteryListener(Viewer viewer) {
+			this.viewer = viewer;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseRegistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseRegistred(IBase base) {
+			refresh();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseUnregistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseUnregistred(IBase base) {
+			refresh();
+		}
+
+		/**
+		 * Refresh the {@link Viewer}.
+		 */
+		private void refresh() {
+			if (!viewer.getControl().isDisposed()) {
+				if (Display.getDefault().getThread() == Thread.currentThread()) {
+					viewer.refresh();
+				} else {
+					Display.getDefault().asyncExec(new Runnable() {
+
+						public void run() {
+							viewer.refresh();
+						}
+					});
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * {@link Viewer} to {@link RegisteryListener} mapping.
+	 */
+	private final Map<Viewer, RegisteryListener> listeners = new HashMap<Viewer, RegisteryListener>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+	 */
+	public void dispose() {
+		assert listeners.isEmpty();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+	 *      java.lang.Object, java.lang.Object)
+	 */
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		if (oldInput instanceof IBaseRegistry) {
+			((IBaseRegistry)oldInput).removeListener(listeners.remove(viewer));
+		}
+		if (newInput instanceof IBaseRegistry) {
+			final RegisteryListener listener = new RegisteryListener(viewer);
+			listeners.put(viewer, listener);
+			((IBaseRegistry)newInput).addListener(listener);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+	 */
+	public Object[] getElements(Object inputElement) {
+		final Object[] res;
+
+		if (inputElement instanceof IBaseRegistry) {
+			res = new Object[((IBaseRegistry)inputElement).getBases().size() + 1];
+			int index = 0;
+			res[index++] = NO_VALUE;
+			for (IBase base : ((IBaseRegistry)inputElement).getBases()) {
+				res[index++] = base;
+			}
+		} else {
+			res = new Object[0];
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingKeyUpListener.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingKeyUpListener.java
new file mode 100644
index 0000000..e56ab4d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingKeyUpListener.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+
+/**
+ * Mapping key up listener for {@link Tree}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+final class MappingKeyUpListener implements Listener {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+	 */
+	public void handleEvent(Event event) {
+		if (event.keyCode == SWT.DEL) {
+			deleteReports(((Tree)event.widget).getSelection());
+			deleteLinks(((Tree)event.widget).getSelection());
+			deleteLocations(((Tree)event.widget).getSelection());
+		}
+	}
+
+	/**
+	 * Deletes selected {@link IReport}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteReports(TreeItem[] selection) {
+		final List<IReport> reportsToDelete = new ArrayList<IReport>();
+		for (TreeItem item : selection) {
+			final Object data = item.getData();
+			if (data instanceof IReport) {
+				reportsToDelete.add((IReport)data);
+			}
+		}
+
+		for (IReport report : reportsToDelete) {
+			MappingUtils.deleteReport(report);
+		}
+	}
+
+	/**
+	 * Deletes selected {@link ILink}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteLinks(TreeItem[] selection) {
+		final List<ILink> linksToDelete = new ArrayList<ILink>();
+		for (TreeItem item : selection) {
+			final Object data = item.getData();
+			if (data instanceof ILink && MappingUtils.canDeleteLink((ILink)data)) {
+				linksToDelete.add((ILink)data);
+			}
+		}
+
+		for (ILink link : linksToDelete) {
+			MappingUtils.deleteLink(link);
+		}
+	}
+
+	/**
+	 * Deletes selected {@link ILocation}.
+	 * 
+	 * @param selection
+	 *            the selection
+	 */
+	private void deleteLocations(TreeItem[] selection) {
+		final List<ILocation> locationsToDelete = new ArrayList<ILocation>();
+
+		for (TreeItem item : selection) {
+			final Object data = item.getData();
+			if (data instanceof ILocation && MappingUtils.canDeleteLocation((ILocation)data)) {
+				locationsToDelete.add((ILocation)data);
+			}
+		}
+
+		for (ILocation location : locationsToDelete) {
+			MappingUtils.deleteLocation(location);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingLabelProvider.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingLabelProvider.java
new file mode 100644
index 0000000..389a853
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingLabelProvider.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.jface.viewers.BaseLabelProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Mapping {@link ILabelProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingLabelProvider extends BaseLabelProvider implements ILabelProvider, IStyledLabelProvider {
+
+	/**
+	 * {@link ILocation#getSourceLinks() source} column.
+	 */
+	public static final int SOURCE = 0;
+
+	/**
+	 * {@link ILocation#getTargetLinks() target} column.
+	 */
+	public static final int TARGET = 1;
+
+	/**
+	 * The column either {@link #SOURCE} or {@link #TARGET}.
+	 */
+	private final int column;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param column
+	 *            the column either {@link #SOURCE} or {@link #TARGET}
+	 */
+	public MappingLabelProvider(int column) {
+		this.column = column;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+	 */
+	public Image getImage(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+	 */
+	public String getText(Object element) {
+		final String res;
+
+		if (element == MappingBaseRegistryContentProvider.NO_VALUE) {
+			res = "";
+		} else if (column == SOURCE) {
+			if (element instanceof ILocation) {
+				res = MappingUtils.getConnectorRegistry().getName((ILocation)element);
+			} else if (element instanceof ILocationDescriptor) {
+				res = ((ILocationDescriptor)element).getName();
+			} else if (element instanceof ILink) {
+				res = MappingUtils.getConnectorRegistry().getName(((ILink)element).getSource());
+			} else if (element instanceof IReport) {
+				res = ((IReport)element).getDescription();
+			} else if (element instanceof IBase) {
+				res = ((IBase)element).getName();
+			} else {
+				throw new IllegalStateException("should not happend");
+			}
+		} else if (column == TARGET) {
+			if (element instanceof ILink) {
+				res = MappingUtils.getConnectorRegistry().getName(((ILink)element).getTarget());
+			} else {
+				res = "";
+			}
+		} else {
+			throw new IllegalStateException("should not happend");
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object)
+	 */
+	public StyledString getStyledText(Object element) {
+		final String text = getText(element);
+		final StyledString res;
+
+		if (text == null) {
+			res = new StyledString();
+		} else {
+			res = new StyledString(text);
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingView.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingView.java
new file mode 100644
index 0000000..a728576
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/MappingView.java
@@ -0,0 +1,1108 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.base.ILocationListener;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.ide.ILocationMarker;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.intent.mapping.ide.ui.UiIdeMappingUtils;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IPageListener;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWindowListener;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * Mapping {@link ViewPart}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingView extends ViewPart {
+
+	/**
+	 * Selection changed Listener for {@link IBase} combo.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class BaseComboSelectionChangedListener implements ISelectionChangedListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+		 */
+		public void selectionChanged(SelectionChangedEvent event) {
+			final IBase oldBase = IdeMappingUtils.getCurrentBase();
+			final Object selected = ((IStructuredSelection)event.getSelection()).getFirstElement();
+			final IBase newBase;
+			if (selected == MappingBaseRegistryContentProvider.NO_VALUE) {
+				newBase = null;
+			} else {
+				newBase = (IBase)selected;
+			}
+			if (oldBase != null) {
+				for (ILocation child : oldBase.getContents()) {
+					deleteLocation(child);
+				}
+				try {
+					oldBase.save();
+				} catch (IOException e) {
+					if (Activator.getDefault() != null) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+								"unable to save base " + oldBase.getName(), e));
+					}
+				}
+			}
+			IdeMappingUtils.setCurrentBase(newBase);
+			if (newBase != null) {
+				for (ILocation child : newBase.getContents()) {
+					addLocation(child);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Adds and removes location markers according to edited locations and changes in {@link IBase}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class MarkerBaseListener extends ILocationListener.Stub implements IBaseListener, ILocationListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#contentsAdded(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsAdded(ILocation location) {
+			location.addListener(this);
+			if (isOpenedInEditor(location)) {
+				IdeMappingUtils.getOrCreateMarker(location);
+			}
+		}
+
+		/**
+		 * Tells if the given {@link ILocation} is opened in an editor.
+		 * 
+		 * @param location
+		 *            the {@link ILocation} to check
+		 * @return <code>true</code> if the given {@link ILocation} is opened in an editor, <code>false</code>
+		 *         otherwise
+		 */
+		private boolean isOpenedInEditor(ILocation location) {
+			final boolean res;
+
+			// we assume all opened location are directly contained by the base
+			if (location.getContainer() instanceof ILocation) {
+				res = isOpenedInEditor((ILocation)location.getContainer());
+			} else {
+				res = editedLocations.contains(location);
+			}
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#contentsRemoved(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsRemoved(ILocation location) {
+			location.removeListener(this);
+			IdeMappingUtils.deleteMarker(location);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#nameChanged(java.lang.String, java.lang.String)
+		 */
+		public void nameChanged(String oldName, String newName) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportAdded(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportAdded(IReport report) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportRemoved(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportRemoved(IReport report) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderAdded(java.lang.String)
+		 */
+		public void containerProviderAdded(String provider) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderRemoved(java.lang.String)
+		 */
+		public void containerProviderRemoved(String provider) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Listen to {@link org.eclipse.ui.IEditorPart IEditorPart}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class EditorPartListener implements IWindowListener, IPageListener, IPartListener2 {
+
+		/**
+		 * Unable to create location mesage.
+		 */
+		private static final String UNABLE_TO_CREATE_LOCATION = "unable to create location";
+
+		/**
+		 * The array of {@link Viewer}.
+		 */
+		private final Viewer[] viewers;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param viewers
+		 *            the array of {@link Viewer}
+		 */
+		EditorPartListener(Viewer... viewers) {
+			this.viewers = viewers;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IWindowListener#windowActivated(org.eclipse.ui.IWorkbenchWindow)
+		 */
+		public void windowActivated(IWorkbenchWindow window) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IWindowListener#windowDeactivated(org.eclipse.ui.IWorkbenchWindow)
+		 */
+		public void windowDeactivated(IWorkbenchWindow window) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IWindowListener#windowClosed(org.eclipse.ui.IWorkbenchWindow)
+		 */
+		public void windowClosed(IWorkbenchWindow window) {
+			window.removePageListener(this);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IWindowListener#windowOpened(org.eclipse.ui.IWorkbenchWindow)
+		 */
+		public void windowOpened(IWorkbenchWindow window) {
+			window.addPageListener(this);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPageListener#pageActivated(org.eclipse.ui.IWorkbenchPage)
+		 */
+		public void pageActivated(IWorkbenchPage page) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPageListener#pageClosed(org.eclipse.ui.IWorkbenchPage)
+		 */
+		public void pageClosed(IWorkbenchPage page) {
+			page.removePartListener(this);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPageListener#pageOpened(org.eclipse.ui.IWorkbenchPage)
+		 */
+		public void pageOpened(IWorkbenchPage page) {
+			page.addPartListener(this);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partActivated(IWorkbenchPartReference partRef) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partBroughtToTop(IWorkbenchPartReference partRef) {
+			final IWorkbenchPart part = partRef.getPart(false);
+			if (part instanceof IEditorPart) {
+				setInput((IEditorPart)part);
+			}
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partClosed(IWorkbenchPartReference partRef) {
+			final IWorkbenchPart part = partRef.getPart(false);
+			if (part instanceof IEditorPart) {
+				final IBase currentBase = IdeMappingUtils.getCurrentBase();
+				createLocationMarker(currentBase, (IEditorPart)part);
+			}
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partDeactivated(IWorkbenchPartReference partRef) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partOpened(IWorkbenchPartReference partRef) {
+			final IWorkbenchPart part = partRef.getPart(false);
+			if (part instanceof IEditorPart) {
+				setInput((IEditorPart)part);
+				final IBase currentBase = IdeMappingUtils.getCurrentBase();
+				createLocationMarker(currentBase, (IEditorPart)part);
+			}
+		}
+
+		/**
+		 * Sets input according to the given {@link IEditorPart}.
+		 * 
+		 * @param editorPart
+		 *            the {@link IEditorPart}
+		 */
+		public void setInput(final IEditorPart editorPart) {
+			if (editorPart == null) {
+				for (Viewer viewer : viewers) {
+					viewer.setInput(null);
+				}
+			} else {
+				final IEditorInput input = editorPart.getEditorInput();
+				final IFile file = UiIdeMappingUtils.getFile(input);
+				final IBase base = IdeMappingUtils.getCurrentBase();
+				if (base != null) {
+					try {
+						// TODO get the location and add a listener to be notified when the location is
+						// created
+						final ILocation location = MappingUtils.getConnectorRegistry().getOrCreateLocation(
+								base, file);
+						for (Viewer viewer : viewers) {
+							viewer.setInput(location);
+						}
+					} catch (InstantiationException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+								UNABLE_TO_CREATE_LOCATION, e));
+					} catch (IllegalAccessException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+								UNABLE_TO_CREATE_LOCATION, e));
+					} catch (ClassNotFoundException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+								UNABLE_TO_CREATE_LOCATION, e));
+					}
+				}
+			}
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partHidden(IWorkbenchPartReference partRef) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partVisible(IWorkbenchPartReference partRef) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference)
+		 */
+		public void partInputChanged(IWorkbenchPartReference partRef) {
+			final IWorkbenchPart part = partRef.getPart(false);
+			if (part instanceof IEditorPart) {
+				setInput((IEditorPart)part);
+				final IBase currentBase = IdeMappingUtils.getCurrentBase();
+				createLocationMarker(currentBase, (IEditorPart)part);
+			}
+		}
+
+	}
+
+	/**
+	 * The view ID.
+	 */
+	public static final String ID = "org.eclipse.intent.mapping.ide.ui.view.MappingView"; //$NON-NLS-1$
+
+	/**
+	 * Default width.
+	 */
+	private static final int WIDTH = 300;
+
+	/**
+	 * Source column label.
+	 */
+	private static final String SOURCE_LABEL = "Master source";
+
+	/**
+	 * Target column label.
+	 */
+	private static final String TARGET_LABEL = "Slave target";
+
+	/**
+	 * The {@link SelectionProviderIntermediate} delegating to {@link org.eclipse.jface.viewers.Viewer Viewer}
+	 * .
+	 */
+	private final SelectionProviderIntermediate selectionProvider = new SelectionProviderIntermediate();
+
+	/**
+	 * The {@link ISelectionListener} updating selection tree viewer input.
+	 */
+	private ISelectionListener selectionListener;
+
+	/**
+	 * The {@link EditorPartListener}.
+	 */
+	private EditorPartListener editorPartListener;
+
+	/**
+	 * The {@link List} of edited {@link ILocation}.
+	 */
+	private final List<ILocation> editedLocations = new ArrayList<ILocation>();
+
+	/**
+	 * The listener maintaining the {@link ILocation} to {@link org.eclipse.core.resources.IMarker IMarker}
+	 * mapping.
+	 */
+	private final MarkerBaseListener markerBaseListener = new MarkerBaseListener();
+
+	/**
+	 * The {@link MenuManager}.
+	 */
+	private final MenuManager menuManager = new MenuManager();
+
+	/**
+	 * {@link List} of created {@link Menu}.
+	 */
+	private final List<Menu> menus = new ArrayList<Menu>();
+
+	/**
+	 * Constructor.
+	 */
+	public MappingView() {
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+
+		Composite composite = new Composite(parent, SWT.NONE);
+		composite.setLayout(new GridLayout(1, false));
+
+		Composite headerComposite = new Composite(composite, SWT.NONE);
+		headerComposite.setLayout(new GridLayout(3, false));
+		headerComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
+
+		final ComboViewer mappingBaseCombo = addMappingBaseCombo(headerComposite);
+
+		TabFolder bodyTabFolder = new TabFolder(composite, SWT.NONE);
+		bodyTabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+
+		addSelectionTabItem(bodyTabFolder, mappingBaseCombo);
+		addDocumentTabItem(bodyTabFolder, mappingBaseCombo);
+		addReportTabItem(bodyTabFolder, mappingBaseCombo);
+
+		final Button containerProviderButton = new Button(headerComposite, SWT.NONE);
+		containerProviderButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
+		containerProviderButton.setText("Select Container Providers");
+		containerProviderButton.setEnabled(IdeMappingUtils.getCurrentBase() != null);
+		mappingBaseCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				containerProviderButton.setEnabled(IdeMappingUtils.getCurrentBase() != null);
+			}
+		});
+		containerProviderButton.addListener(SWT.Selection, new Listener() {
+
+			public void handleEvent(Event event) {
+				final ContainerProviderSelectionDialog dialog = new ContainerProviderSelectionDialog(getSite()
+						.getShell(), IdeMappingUtils.getCurrentBase());
+				dialog.open();
+			}
+
+		});
+
+		getSite().setSelectionProvider(selectionProvider);
+
+		createActions();
+		initializeToolBar();
+
+		getSite().registerContextMenu(menuManager, selectionProvider);
+	}
+
+	/**
+	 * Add the mapping base {@link ComboViewer} to the given header {@link Composite}.
+	 * 
+	 * @param headerComposite
+	 *            the header {@link Composite}
+	 * @return the mapping base {@link ComboViewer}
+	 */
+	private ComboViewer addMappingBaseCombo(Composite headerComposite) {
+
+		final Label selectMappingBaseLabel = new Label(headerComposite, SWT.NONE);
+		selectMappingBaseLabel.setToolTipText("Select a mapping base.");
+		selectMappingBaseLabel.setText("Mapping base:");
+		final ComboViewer mappingCombo = new ComboViewer(headerComposite, SWT.READ_ONLY);
+		Combo combo = mappingCombo.getCombo();
+		combo.setToolTipText("Select the mapping base to use.");
+		mappingCombo.setContentProvider(new MappingBaseRegistryContentProvider());
+		mappingCombo.setLabelProvider(new MappingLabelProvider(MappingLabelProvider.SOURCE));
+		mappingCombo.setComparator(new ViewerComparator());
+		mappingCombo.setInput(MappingUtils.getMappingRegistry());
+		mappingCombo.addSelectionChangedListener(new BaseComboSelectionChangedListener());
+
+		return mappingCombo;
+	}
+
+	/**
+	 * Adds the selection {@link TabItem} to the given body {@link TabFolder}.
+	 * 
+	 * @param bodyTabFolder
+	 *            the body {@link TabFolder}
+	 * @param mappingBaseCombo
+	 *            the mapping base {@link ComboViewer}
+	 */
+	private void addSelectionTabItem(TabFolder bodyTabFolder, ComboViewer mappingBaseCombo) {
+		TabItem selectionTabItem = new TabItem(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setText("Selection");
+
+		Composite treeComposite = new Composite(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setControl(treeComposite);
+		treeComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		SashForm sashForm = new SashForm(treeComposite, SWT.NONE);
+
+		final Composite referencingComposite = new Composite(sashForm, SWT.NONE);
+		referencingComposite.setLayout(new GridLayout(1, false));
+
+		final Label referencingLabel = new Label(referencingComposite, SWT.CENTER);
+		referencingLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+		referencingLabel.setToolTipText("Locations referencing the current selection via a Link.");
+		referencingLabel.setText("Referencing Locations");
+
+		final FilteredTree referencingTree = new FilteredTree(referencingComposite, SWT.MULTI | SWT.BORDER,
+				new PatternFilter(), false);
+		referencingTree.getViewer().getTree().addListener(SWT.KeyDown, new MappingKeyUpListener());
+		referencingTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencingTree.getViewer().getTree()));
+		referencingTree.getViewer().setContentProvider(new LinkedLocationContentProvider(false,
+				LinkedLocationContentProvider.SOURCE, false));
+		referencingTree.getViewer().setLabelProvider(new MappingLabelProvider(MappingLabelProvider.SOURCE));
+		referencingTree.getViewer().getControl().addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(null);
+			}
+
+			public void focusGained(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(referencingTree.getViewer());
+			}
+		});
+		Menu menu = menuManager.createContextMenu(referencingTree.getViewer().getControl());
+		menus.add(menu);
+		referencingTree.getViewer().getControl().setMenu(menu);
+
+		final Composite referencedComposite = new Composite(sashForm, SWT.NONE);
+		referencedComposite.setLayout(new GridLayout(1, false));
+
+		final Label referencedLabel = new Label(referencedComposite, SWT.CENTER);
+		referencedLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+		referencedLabel.setToolTipText("Locations referenced by the current selection via a Link.");
+		referencedLabel.setText("Referenced Locations");
+
+		final FilteredTree referencedTree = new FilteredTree(referencedComposite, SWT.MULTI | SWT.BORDER,
+				new PatternFilter(), false);
+		referencedTree.getViewer().getTree().addListener(SWT.KeyUp, new MappingKeyUpListener());
+		referencedTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencedTree.getViewer().getTree()));
+		referencedTree.getViewer().setContentProvider(new LinkedLocationContentProvider(false,
+				LinkedLocationContentProvider.TARGET, false));
+		referencedTree.getViewer().setLabelProvider(new MappingLabelProvider(MappingLabelProvider.SOURCE));
+		referencedTree.getViewer().getControl().addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(null);
+			}
+
+			public void focusGained(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(referencedTree.getViewer());
+			}
+		});
+		menu = menuManager.createContextMenu(referencedTree.getViewer().getControl());
+		menus.add(menu);
+		referencedTree.getViewer().getControl().setMenu(menu);
+
+		mappingBaseCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				final IBase base;
+				final Object selected = ((IStructuredSelection)event.getSelection()).getFirstElement();
+				if (selected == MappingBaseRegistryContentProvider.NO_VALUE) {
+					base = null;
+				} else {
+					base = (IBase)selected;
+				}
+				final ILocation location = (ILocation)referencedTree.getViewer().getInput();
+				if (location != null && areSameBase(MappingUtils.getBase(location), base)) {
+					referencingTree.getViewer().setInput(null);
+					referencedTree.getViewer().setInput(null);
+				}
+			}
+		});
+
+		selectionListener = new ISelectionListener() {
+
+			public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+				final IBase currentBase = IdeMappingUtils.getCurrentBase();
+				if (part != MappingView.this && currentBase != null) {
+					final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(selection,
+							ILocationDescriptor.class);
+					if (locationDescriptor != null && locationDescriptor.exists()) {
+						final ILocation location = locationDescriptor.getLocation();
+						if (location != null && areSameBase(currentBase, MappingUtils.getBase(location))) {
+							referencingTree.getViewer().setInput(location);
+							referencedTree.getViewer().setInput(location);
+						}
+					}
+				}
+			}
+		};
+
+		referencingTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencingTree.getViewer().getTree()));
+		referencedTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencedTree.getViewer().getTree()));
+
+		getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(selectionListener);
+
+		sashForm.setWeights(new int[] {1, 1 });
+	}
+
+	/**
+	 * Adds the document {@link TabItem} to the given body {@link TabFolder}.
+	 * 
+	 * @param bodyTabFolder
+	 *            the body {@link TabFolder}
+	 * @param mappingBaseCombo
+	 *            the mapping base {@link ComboViewer}
+	 */
+	private void addDocumentTabItem(TabFolder bodyTabFolder, ComboViewer mappingBaseCombo) {
+		TabItem selectionTabItem = new TabItem(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setText("Document");
+
+		Composite treeComposite = new Composite(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setControl(treeComposite);
+		treeComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		SashForm sashForm = new SashForm(treeComposite, SWT.NONE);
+
+		final Composite referencingComposite = new Composite(sashForm, SWT.NONE);
+		referencingComposite.setLayout(new GridLayout(1, false));
+
+		final Label referencingLabel = new Label(referencingComposite, SWT.CENTER);
+		referencingLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+		referencingLabel.setToolTipText("Links from other documents to the current document.");
+		referencingLabel.setText("Incoming Links");
+
+		final FilteredTree referencingTree = new FilteredTree(referencingComposite, SWT.MULTI | SWT.BORDER,
+				new PatternFilter(), false);
+		referencingTree.getViewer().getTree().addListener(SWT.KeyDown, new MappingKeyUpListener());
+		referencingTree.getViewer().setContentProvider(new LinkedLocationContentProvider(true,
+				LinkedLocationContentProvider.SOURCE, true));
+		referencingTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencingTree.getViewer().getTree()));
+
+		referencingTree.getViewer().getTree().setHeaderVisible(true);
+		TreeViewerColumn referencingTreeSourceColumn = new TreeViewerColumn(referencingTree.getViewer(),
+				SWT.NONE);
+		referencingTreeSourceColumn.getColumn().setData(LinkedLocationContentProvider.SOURCE);
+		referencingTreeSourceColumn.getColumn().setResizable(true);
+		referencingTreeSourceColumn.getColumn().setText(SOURCE_LABEL);
+		referencingTreeSourceColumn.getColumn().setWidth(WIDTH);
+		referencingTreeSourceColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(
+				new MappingLabelProvider(MappingLabelProvider.SOURCE)));
+
+		TreeViewerColumn referencingTreeTargetColumn = new TreeViewerColumn(referencingTree.getViewer(),
+				SWT.NONE);
+		referencingTreeTargetColumn.getColumn().setData(LinkedLocationContentProvider.TARGET);
+		referencingTreeTargetColumn.getColumn().setResizable(true);
+		referencingTreeTargetColumn.getColumn().setText(TARGET_LABEL);
+		referencingTreeTargetColumn.getColumn().setWidth(WIDTH);
+		referencingTreeTargetColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(
+				new MappingLabelProvider(MappingLabelProvider.TARGET)));
+
+		referencingTree.getViewer().getControl().addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(null);
+			}
+
+			public void focusGained(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(referencingTree.getViewer());
+			}
+		});
+		Menu menu = menuManager.createContextMenu(referencingTree.getViewer().getControl());
+		menus.add(menu);
+		referencingTree.getViewer().getControl().setMenu(menu);
+
+		final Composite referencedComposite = new Composite(sashForm, SWT.NONE);
+		referencedComposite.setLayout(new GridLayout(1, false));
+
+		final Label referencedLabel = new Label(referencedComposite, SWT.CENTER);
+		referencedLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+		referencedLabel.setToolTipText("Links from the current document to other documents.");
+		referencedLabel.setText("Outgoing Links");
+
+		final FilteredTree referencedTree = new FilteredTree(referencedComposite, SWT.MULTI | SWT.BORDER,
+				new PatternFilter(), false);
+		referencedTree.getViewer().getTree().addListener(SWT.KeyUp, new MappingKeyUpListener());
+		referencedTree.getViewer().setContentProvider(new LinkedLocationContentProvider(true,
+				LinkedLocationContentProvider.TARGET, true));
+		referencedTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(referencedTree.getViewer().getTree()));
+
+		referencedTree.getViewer().getTree().setHeaderVisible(true);
+		TreeViewerColumn referencedTreeSourceColumn = new TreeViewerColumn(referencedTree.getViewer(),
+				SWT.NONE);
+		referencedTreeSourceColumn.getColumn().setResizable(true);
+		referencedTreeSourceColumn.getColumn().setText(SOURCE_LABEL);
+		referencedTreeSourceColumn.getColumn().setWidth(WIDTH);
+		referencedTreeSourceColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(
+				new MappingLabelProvider(MappingLabelProvider.SOURCE)));
+
+		TreeViewerColumn referencedTreeTargetColumn = new TreeViewerColumn(referencedTree.getViewer(),
+				SWT.NONE);
+		referencedTreeTargetColumn.getColumn().setResizable(true);
+		referencedTreeTargetColumn.getColumn().setText(TARGET_LABEL);
+		referencedTreeTargetColumn.getColumn().setWidth(WIDTH);
+		referencedTreeTargetColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(
+				new MappingLabelProvider(MappingLabelProvider.TARGET)));
+
+		referencedTree.getViewer().getControl().addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(null);
+			}
+
+			public void focusGained(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(referencedTree.getViewer());
+			}
+		});
+		menu = menuManager.createContextMenu(referencedTree.getViewer().getControl());
+		menus.add(menu);
+		referencedTree.getViewer().getControl().setMenu(menu);
+
+		mappingBaseCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				final Object selected = ((IStructuredSelection)event.getSelection()).getFirstElement();
+				if (selected == MappingBaseRegistryContentProvider.NO_VALUE) {
+					editorPartListener.setInput(null);
+				} else {
+					final IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+							.getActivePage().getActiveEditor();
+					if (activeEditor != null && editorPartListener != null) {
+						editorPartListener.setInput(activeEditor);
+					}
+				}
+			}
+		});
+
+		editorPartListener = new EditorPartListener(referencingTree.getViewer(), referencedTree.getViewer());
+		for (
+
+		IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
+			for (IWorkbenchPage page : window.getPages()) {
+				final IEditorPart activeEditor = page.getActiveEditor();
+				if (activeEditor != null) {
+					editorPartListener.setInput(activeEditor);
+				}
+				page.addPartListener(editorPartListener);
+			}
+			window.addPageListener(editorPartListener);
+		}
+		PlatformUI.getWorkbench().addWindowListener(editorPartListener);
+
+		sashForm.setWeights(new int[] {1, 1 });
+	}
+
+	/**
+	 * Adds the report {@link TabItem} to the given body {@link TabFolder}.
+	 * 
+	 * @param bodyTabFolder
+	 *            the body {@link TabFolder}
+	 * @param mappingBaseCombo
+	 *            the mapping base {@link ComboViewer}
+	 */
+	private void addReportTabItem(TabFolder bodyTabFolder, ComboViewer mappingBaseCombo) {
+		TabItem selectionTabItem = new TabItem(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setText("Report");
+
+		Composite treeComposite = new Composite(bodyTabFolder, SWT.NONE);
+		selectionTabItem.setControl(treeComposite);
+		treeComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		final FilteredTree reportTree = new FilteredTree(treeComposite, SWT.MULTI | SWT.BORDER,
+				new PatternFilter(), false);
+		reportTree.getViewer().getTree().addListener(SWT.KeyDown, new MappingKeyUpListener());
+		reportTree.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(reportTree.getViewer().getTree()));
+		reportTree.getViewer().setContentProvider(new SynchronizationLocationContentProvider());
+
+		reportTree.getViewer().getTree().setHeaderVisible(true);
+		TreeViewerColumn linkTreeSourceColumn = new TreeViewerColumn(reportTree.getViewer(), SWT.NONE);
+		linkTreeSourceColumn.getColumn().setResizable(true);
+		linkTreeSourceColumn.getColumn().setText(SOURCE_LABEL);
+		linkTreeSourceColumn.getColumn().setWidth(WIDTH);
+		linkTreeSourceColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new MappingLabelProvider(
+				MappingLabelProvider.SOURCE)));
+
+		TreeViewerColumn linkTreeTargetColumn = new TreeViewerColumn(reportTree.getViewer(), SWT.NONE);
+		linkTreeTargetColumn.getColumn().setResizable(true);
+		linkTreeTargetColumn.getColumn().setText(TARGET_LABEL);
+		linkTreeTargetColumn.getColumn().setWidth(WIDTH);
+		linkTreeTargetColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new MappingLabelProvider(
+				MappingLabelProvider.TARGET)));
+
+		reportTree.getViewer().getControl().addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(null);
+			}
+
+			public void focusGained(FocusEvent e) {
+				selectionProvider.setSelectionProviderDelegate(reportTree.getViewer());
+			}
+		});
+		final Menu menu = menuManager.createContextMenu(reportTree.getViewer().getControl());
+		menus.add(menu);
+		reportTree.getViewer().getControl().setMenu(menu);
+
+		mappingBaseCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			public void selectionChanged(SelectionChangedEvent event) {
+				final IBase base;
+				final Object selected = ((IStructuredSelection)event.getSelection()).getFirstElement();
+				if (selected == MappingBaseRegistryContentProvider.NO_VALUE) {
+					base = null;
+				} else {
+					base = (IBase)selected;
+				}
+				reportTree.getViewer().setInput(base);
+			}
+		});
+
+	}
+
+	/**
+	 * Create the actions.
+	 */
+	private void createActions() {
+		// Create the actions
+	}
+
+	/**
+	 * Initialize the toolbar.
+	 */
+	private void initializeToolBar() {
+		IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+	}
+
+	@Override
+	public void setFocus() {
+		// Set the focus
+	}
+
+	@Override
+	public void dispose() {
+		super.dispose();
+		if (selectionListener != null) {
+			getSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(selectionListener);
+			selectionListener = null;
+		}
+
+		for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
+			for (IWorkbenchPage page : window.getPages()) {
+				page.removePartListener(editorPartListener);
+			}
+			window.removePageListener(editorPartListener);
+		}
+		PlatformUI.getWorkbench().removeWindowListener(editorPartListener);
+
+		final IBase oldBase = IdeMappingUtils.getCurrentBase();
+		if (oldBase != null) {
+			try {
+				oldBase.save();
+			} catch (IOException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+						"unable to save base " + oldBase.getName(), e));
+			}
+		}
+		IdeMappingUtils.setCurrentBase(null);
+		for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
+			for (IWorkbenchPage page : window.getPages()) {
+				for (IEditorReference editorRef : page.getEditorReferences()) {
+					final IEditorPart editorPart = editorRef.getEditor(false);
+					if (editorPart != null) {
+						clearLocationMarker(oldBase, editorPart);
+					}
+				}
+			}
+		}
+
+		getSite().setSelectionProvider(null);
+
+		for (Menu menu : menus) {
+			menu.dispose();
+		}
+		menuManager.dispose();
+	}
+
+	/**
+	 * Tells if the two given {@link IBase} are the same.
+	 * 
+	 * @param firstBase
+	 *            the first {@link IBase}
+	 * @param secondBase
+	 *            the second {@link IBase}
+	 * @return <code>true</code> if the two given {@link IBase} are the same, <code>false</code> otherwise
+	 */
+	private boolean areSameBase(IBase firstBase, IBase secondBase) {
+		// TODO change this when we work on same instances of IBase
+		final boolean res;
+
+		if (firstBase == null) {
+			if (secondBase == null) {
+				res = true;
+			} else {
+				res = false;
+			}
+		} else {
+			if (secondBase == null) {
+				res = false;
+			} else {
+				res = firstBase.getName().equals(secondBase.getName());
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * Clears all location markers for the given {@link IEditorPart}.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 * @param part
+	 *            the {@link IEditorPart}
+	 */
+	private void clearLocationMarker(IBase base, IEditorPart part) {
+		final IEditorInput editorInput = part.getEditorInput();
+
+		if (editorInput != null) {
+			final IFile file = UiIdeMappingUtils.getFile(editorInput);
+			if (file != null && base != null) {
+				try {
+					file.deleteMarkers(ILocationMarker.LOCATION_ID, true, IResource.DEPTH_INFINITE);
+				} catch (CoreException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+							"unable to clear all location markers for " + file.getFullPath().toString(), e));
+				}
+				final ILocation fileLocation = MappingUtils.getConnectorRegistry().getLocation(base, file);
+				if (fileLocation != null) {
+					editedLocations.remove(fileLocation);
+					removeLocation(fileLocation);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Removes {@link ILocation} to {@link org.eclipse.core.resources.IMarker IMarker} mapping recursively.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to remove from the mapping
+	 */
+	private void removeLocation(ILocation location) {
+		IdeMappingUtils.removeMarker(location);
+		location.removeListener(markerBaseListener);
+		for (ILocation child : location.getContents()) {
+			removeLocation(child);
+		}
+	}
+
+	/**
+	 * Removes {@link ILocation} to {@link org.eclipse.core.resources.IMarker IMarker} mapping recursively and
+	 * {@link org.eclipse.core.resources.IMarker#delete() deletes} the
+	 * {@link org.eclipse.core.resources.IMarker IMarker}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to remove from the mapping
+	 */
+	private void deleteLocation(ILocation location) {
+		IdeMappingUtils.deleteMarker(location);
+		location.removeListener(markerBaseListener);
+		for (ILocation child : location.getContents()) {
+			removeLocation(child);
+		}
+	}
+
+	/**
+	 * Creates markers for the given {@link ILocation} and its {@link ILocation#getContents() contained}
+	 * {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 */
+	private void addLocation(ILocation location) {
+		IdeMappingUtils.getOrCreateMarker(location);
+		location.addListener(markerBaseListener);
+		for (ILocation child : location.getContents()) {
+			addLocation(child);
+		}
+	}
+
+	/**
+	 * Creates all location markers for the given {@link IEditorPart}.
+	 * 
+	 * @param base
+	 *            the IBase
+	 * @param part
+	 *            the {@link IEditorPart}
+	 */
+	private void createLocationMarker(IBase base, IEditorPart part) {
+		final IEditorInput editorInput = part.getEditorInput();
+
+		if (editorInput != null) {
+			final IFile file = UiIdeMappingUtils.getFile(editorInput);
+			if (file != null && base != null) {
+				final ILocation fileLocation = MappingUtils.getConnectorRegistry().getLocation(base, file);
+				if (fileLocation != null) {
+					editedLocations.add(fileLocation);
+					addLocation(fileLocation);
+				}
+			}
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SelectionProviderIntermediate.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SelectionProviderIntermediate.java
new file mode 100644
index 0000000..d76acc7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SelectionProviderIntermediate.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.jface.viewers.IPostSelectionProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+
+/**
+ * An {@link IPostSelectionProvider} dynamically delegating to an other {@link ISelectionProvider}. From the
+ * example of Marc R. Hoffmann.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class SelectionProviderIntermediate implements IPostSelectionProvider {
+
+	/**
+	 * The list of {@link ISelectionChangedListener} for selection.
+	 */
+	@SuppressWarnings("rawtypes")
+	private final ListenerList selectionListeners = new ListenerList();
+
+	/**
+	 * The list of {@link ISelectionChangedListener} for post selection.
+	 */
+	@SuppressWarnings("rawtypes")
+	private final ListenerList postSelectionListeners = new ListenerList();
+
+	/**
+	 * The current {@link IPostSelectionProvider}.
+	 */
+	private ISelectionProvider delegate;
+
+	/**
+	 * {@link ISelectionChangedListener} for selection.
+	 */
+	private ISelectionChangedListener selectionListener = new ISelectionChangedListener() {
+		public void selectionChanged(SelectionChangedEvent event) {
+			if (event.getSelectionProvider() == delegate) {
+				fireSelectionChanged(event.getSelection());
+			}
+		}
+	};
+
+	/**
+	 * {@link ISelectionChangedListener} for post selection.
+	 */
+	private ISelectionChangedListener postSelectionListener = new ISelectionChangedListener() {
+		public void selectionChanged(SelectionChangedEvent event) {
+			if (event.getSelectionProvider() == delegate) {
+				firePostSelectionChanged(event.getSelection());
+			}
+		}
+	};
+
+	/**
+	 * Sets a new selection provider to delegate to. Selection listeners registered with the previous delegate
+	 * are removed before.
+	 * 
+	 * @param newDelegate
+	 *            new selection provider
+	 */
+	public void setSelectionProviderDelegate(ISelectionProvider newDelegate) {
+		if (delegate != newDelegate) {
+			if (delegate != null) {
+				delegate.removeSelectionChangedListener(selectionListener);
+				if (delegate instanceof IPostSelectionProvider) {
+					((IPostSelectionProvider)delegate).removePostSelectionChangedListener(
+							postSelectionListener);
+				}
+			}
+			delegate = newDelegate;
+			if (newDelegate != null) {
+				newDelegate.addSelectionChangedListener(selectionListener);
+				if (newDelegate instanceof IPostSelectionProvider) {
+					((IPostSelectionProvider)newDelegate).addPostSelectionChangedListener(
+							postSelectionListener);
+				}
+				fireSelectionChanged(newDelegate.getSelection());
+				firePostSelectionChanged(newDelegate.getSelection());
+			}
+		}
+	}
+
+	/**
+	 * Fires {@link ISelection} change.
+	 * 
+	 * @param selection
+	 *            the {@link ISelection}
+	 */
+	protected void fireSelectionChanged(ISelection selection) {
+		fireSelectionChanged(selectionListeners, selection);
+	}
+
+	/**
+	 * Fires {@link ISelection} post change.
+	 * 
+	 * @param selection
+	 *            the {@link ISelection}
+	 */
+	protected void firePostSelectionChanged(ISelection selection) {
+		fireSelectionChanged(postSelectionListeners, selection);
+	}
+
+	/**
+	 * Fires the {@link ISelection} change to the given list of {@link ISelectionChangedListener}.
+	 * 
+	 * @param list
+	 *            the list of {@link ISelectionChangedListener}
+	 * @param selection
+	 *            the {@link ISelection}
+	 */
+	private void fireSelectionChanged(@SuppressWarnings("rawtypes") ListenerList list, ISelection selection) {
+		SelectionChangedEvent event = new SelectionChangedEvent(delegate, selection);
+		Object[] listeners = list.getListeners();
+		for (int i = 0; i < listeners.length; i++) {
+			ISelectionChangedListener listener = (ISelectionChangedListener)listeners[i];
+			listener.selectionChanged(event);
+		}
+	}
+
+	// IPostSelectionProvider Implementation
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+	 */
+	@SuppressWarnings("unchecked")
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionListeners.add(listener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionListeners.remove(listener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IPostSelectionProvider#addPostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+	 */
+	@SuppressWarnings("unchecked")
+	public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
+		postSelectionListeners.add(listener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.IPostSelectionProvider#removePostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+	 */
+	public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
+		postSelectionListeners.remove(listener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
+	 */
+	public ISelection getSelection() {
+		final ISelection res;
+
+		if (delegate == null) {
+			res = null;
+		} else {
+			res = delegate.getSelection();
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
+	 */
+	public void setSelection(ISelection selection) {
+		if (delegate != null) {
+			delegate.setSelection(selection);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ShowLocationDoubleClickListener.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ShowLocationDoubleClickListener.java
new file mode 100644
index 0000000..aab2e9f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/ShowLocationDoubleClickListener.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.ide.ui.UiIdeMappingUtils;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+
+/**
+ * {@link Listener} that open {@link ILocation}, {@link ILink}, and {@link IReport}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ShowLocationDoubleClickListener implements Listener {
+
+	/**
+	 * the {@link Tree} to listen to.
+	 */
+	private final Tree tree;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param tree
+	 *            the {@link Tree} to listen to
+	 */
+	public ShowLocationDoubleClickListener(Tree tree) {
+		this.tree = tree;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+	 */
+	public void handleEvent(Event event) {
+		Point pt = new Point(event.x, event.y);
+		TreeItem item = tree.getItem(pt);
+		if (item != null) {
+			final Object selected = item.getData();
+			if (selected instanceof ILocation) {
+				UiIdeMappingUtils.showLocation((ILocation)selected);
+			} else if (selected instanceof ILink) {
+				showLink(pt, item, (ILink)selected);
+			} else if (selected instanceof IReport) {
+				UiIdeMappingUtils.showLocation(((IReport)selected).getLink().getSource());
+			}
+		}
+	}
+
+	/**
+	 * Shows the given {@link ILink} {@link ILink#getSource() source} or {@link ILink#getTarget() target}
+	 * according to the double click position.
+	 * 
+	 * @param point
+	 *            the {@link Point}
+	 * @param item
+	 *            the {@link TreeItem}
+	 * @param link
+	 *            the {@link ILink}
+	 */
+	private void showLink(Point point, TreeItem item, ILink link) {
+		for (int i = 0; i < tree.getColumnCount(); i++) {
+			Rectangle rect = item.getBounds(i);
+			if (rect.contains(point)) {
+				if (i == 0) {
+					UiIdeMappingUtils.showLocation(link.getSource());
+				} else {
+					UiIdeMappingUtils.showLocation(link.getTarget());
+				}
+				break;
+			}
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationLocationContentProvider.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationLocationContentProvider.java
new file mode 100644
index 0000000..3f25a81
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationLocationContentProvider.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseListener;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.base.IReportListener;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Provide {@link ILink linked} {@link ILocation} for a given {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class SynchronizationLocationContentProvider extends AbstractLocationContentProvider {
+
+	/**
+	 * Refresh the current viewer when the {@link IReport} change.
+	 */
+	private final IReportListener reportListener = new IReportListener.Stub() {
+
+		public void descriptionChanged(String oldDescription, String newDescription) {
+			update();
+			refresh();
+		}
+
+		public void linkChanged(ILink oldLink, ILink newLink) {
+			update();
+			refresh();
+		}
+	};
+
+	/**
+	 * Refresh the current viewer when the current {@link IBase} {@link IBase#getReports() reports} change.
+	 */
+	private final IBaseListener baseListener = new IBaseListener.Stub() {
+
+		public void reportAdded(IReport report) {
+			update();
+			refresh();
+			report.addListener(reportListener);
+		}
+
+		public void reportRemoved(IReport report) {
+			update();
+			refresh();
+			report.removeListener(reportListener);
+		}
+	};
+
+	/**
+	 * Constructor.
+	 */
+	public SynchronizationLocationContentProvider() {
+		super();
+		showReport = true;
+	}
+
+	/**
+	 * Refresh the {@link Viewer}.
+	 */
+	private void refresh() {
+		if (!currentViewer.getControl().isDisposed()) {
+			if (Display.getDefault().getThread() == Thread.currentThread()) {
+				currentViewer.refresh();
+			} else {
+				Display.getDefault().asyncExec(new Runnable() {
+
+					public void run() {
+						currentViewer.refresh();
+					}
+				});
+			}
+		}
+	}
+
+	@Override
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		if (oldInput instanceof IBase) {
+			((IBase)oldInput).removeListener(baseListener);
+			for (IReport report : ((IBase)oldInput).getReports()) {
+				report.removeListener(reportListener);
+			}
+		}
+		if (newInput instanceof IBase) {
+			((IBase)newInput).addListener(baseListener);
+			for (IReport report : ((IBase)newInput).getReports()) {
+				report.addListener(reportListener);
+			}
+		}
+		super.inputChanged(viewer, oldInput, newInput);
+	}
+
+	@Override
+	protected void setLeavesAndLinks(Object input, List<ILocation> locationLeaves, List<ILink> links) {
+		if (input instanceof IBase) {
+			for (IReport report : ((IBase)input).getReports()) {
+				links.add(report.getLink());
+				locationLeaves.add(report.getLink().getSource());
+			}
+		}
+	}
+
+	@Override
+	public boolean hasChildren(Object element) {
+		final boolean res;
+
+		if (element instanceof ILocation) {
+			res = !((ILocation)element).getTargetLinks().isEmpty() || super.hasChildren(element);
+		} else if (element instanceof ILink) {
+			res = !((ILink)element).getReports().isEmpty();
+		} else {
+			res = false;
+		}
+
+		return res;
+	}
+
+	@Override
+	public Object[] getChildren(Object parentElement) {
+		final Object[] res;
+
+		if (parentElement instanceof ILocation) {
+			final Object[] childLocations = super.getChildren(parentElement);
+			res = concat(childLocations, ((ILocation)parentElement).getTargetLinks().toArray());
+		} else if (parentElement instanceof ILink) {
+			res = ((ILink)parentElement).getReports().toArray();
+		} else {
+			res = new Object[0];
+		}
+
+		return res;
+	}
+
+	/**
+	 * Concatenates two given arrays of {@link Object}.
+	 * 
+	 * @param first
+	 *            the first array
+	 * @param second
+	 *            the second array
+	 * @return a new array composed of the two given arrays
+	 */
+	private Object[] concat(Object[] first, Object[] second) {
+		final Object[] result = Arrays.copyOf(first, first.length + second.length);
+
+		System.arraycopy(second, 0, result, first.length, second.length);
+
+		return result;
+	}
+
+	@Override
+	public Object getParent(Object element) {
+		final Object res;
+
+		if (element instanceof ILink) {
+			res = ((ILink)element).getSource();
+		} else if (element instanceof IReport) {
+			res = ((IReport)element).getLink();
+		} else {
+			res = super.getParent(element);
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationPaletteView.java b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationPaletteView.java
new file mode 100644
index 0000000..7e5490f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide.ui/src/org/eclipse/intent/mapping/ide/ui/view/SynchronizationPaletteView.java
@@ -0,0 +1,480 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.ui.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener;
+import org.eclipse.intent.mapping.ide.ui.Activator;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ICheckStateProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerDropAdapter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * Palette of {@link ILocationDescriptor} view.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class SynchronizationPaletteView extends ViewPart {
+
+	/**
+	 * Listen to text drop.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class LocationDropTargetListener extends ViewerDropAdapter {
+
+		/**
+		 * The "unable to create link" message.
+		 */
+		private static final String UNABLE_TO_CREATE_LINK = "unable to create link";
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param viewer
+		 *            the {@link Viewer}
+		 */
+		protected LocationDropTargetListener(Viewer viewer) {
+			super(viewer);
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public boolean performDrop(Object data) {
+			boolean res = false;
+
+			final List<Object> sources = new ArrayList<Object>();
+			if (data instanceof String) {
+				final ISelectionService selectionService = getSite().getPage().getWorkbenchWindow()
+						.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+				final ISelection selection = selectionService.getSelection();
+				if (selection instanceof ITextSelection) {
+					sources.add(selection);
+				}
+			} else if (data instanceof IStructuredSelection) {
+				sources.addAll(((IStructuredSelection)data).toList());
+			} else if (data instanceof Collection<?>) {
+				sources.addAll((Collection<?>)data);
+			}
+
+			final Object target = getCurrentTarget();
+			for (Object source : sources) {
+				if (target == null) {
+					final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(source,
+							ILocationDescriptor.class);
+					if (locationDescriptor != null) {
+						IdeMappingUtils.addLocationToPalette(locationDescriptor);
+						res = true;
+					}
+				} else {
+					final ILocationDescriptor sourceDescriptor = IdeMappingUtils.adapt(source,
+							ILocationDescriptor.class);
+					final ILocationDescriptor targetDescriptor = IdeMappingUtils.adapt(target,
+							ILocationDescriptor.class);
+					if (sourceDescriptor != null && targetDescriptor != null) {
+						try {
+							if (MappingUtils.createLink(sourceDescriptor, targetDescriptor) != null) {
+								res = true;
+							}
+						} catch (InstantiationException e) {
+							Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+									UNABLE_TO_CREATE_LINK, e));
+						} catch (IllegalAccessException e) {
+							Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+									UNABLE_TO_CREATE_LINK, e));
+						} catch (ClassNotFoundException e) {
+							Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+									UNABLE_TO_CREATE_LINK, e));
+						}
+					}
+				}
+			}
+
+			return res;
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public boolean validateDrop(Object target, int operation, TransferData transferType) {
+			final boolean res;
+
+			final List<Object> sources = new ArrayList<Object>();
+
+			if (TextTransfer.getInstance().isSupportedType(transferType)) {
+				final ISelectionService selectionService = getSite().getPage().getWorkbenchWindow()
+						.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+				final ISelection selection = selectionService.getSelection();
+				if (selection instanceof ITextSelection) {
+					sources.add(selection);
+				}
+			} else if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) {
+				sources.addAll(((IStructuredSelection)LocalSelectionTransfer.getTransfer().nativeToJava(
+						transferType)).toList());
+			} else {
+				// nothing to do here
+			}
+
+			if (!sources.isEmpty()) {
+				if (target == null) {
+					res = canCreateLocationDescription(sources);
+				} else {
+					res = canCreateLink(sources, target);
+				}
+			} else {
+				res = false;
+			}
+
+			return res;
+		}
+
+		/**
+		 * Tells if we can create an {@link ILink} between the given source and target element.
+		 * 
+		 * @param sources
+		 *            the {@link List} of sources
+		 * @param target
+		 *            the target
+		 * @return <code>true</code> if we can create an {@link ILink} between the given source and target
+		 *         element, <code>false</code>
+		 */
+		protected boolean canCreateLink(List<Object> sources, Object target) {
+			boolean res = false;
+
+			for (Object source : sources) {
+				final ILocationDescriptor sourceDescriptor = IdeMappingUtils.adapt(source,
+						ILocationDescriptor.class);
+				if (sourceDescriptor != null) {
+					final ILocationDescriptor targetDescriptor = IdeMappingUtils.adapt(target,
+							ILocationDescriptor.class);
+					if (targetDescriptor != null && MappingUtils.canCreateLink(sourceDescriptor,
+							targetDescriptor)) {
+						res = true;
+						break;
+					}
+				}
+			}
+
+			return res;
+		}
+
+		/**
+		 * Tells if an {@link ILocationDescriptor} can be created for the given element.
+		 * 
+		 * @param elements
+		 *            the element
+		 * @return <code>true</code> if an {@link ILocationDescriptor} can be created for the given element,
+		 *         <code>false</code> otherwise
+		 */
+		protected boolean canCreateLocationDescription(final List<Object> elements) {
+			boolean res = false;
+
+			for (Object element : elements) {
+				final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(element,
+						ILocationDescriptor.class);
+				if (locationDescriptor != null) {
+					res = true;
+					locationDescriptor.dispose();
+					break;
+				}
+			}
+
+			return res;
+		}
+
+	}
+
+	/**
+	 * A flat content provider for the {@link IdeMappingUtils#getSynchronizationPalette() synchronization
+	 * palette}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class SynchronizationPaletteContentProvider implements ITreeContentProvider {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+		 */
+		public void dispose() {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+		 *      java.lang.Object, java.lang.Object)
+		 */
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
+		 */
+		public Object[] getElements(Object inputElement) {
+			return IdeMappingUtils.getSynchronizationPalette().toArray();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+		 */
+		public Object[] getChildren(Object parentElement) {
+			return new Object[0];
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+		 */
+		public Object getParent(Object element) {
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+		 */
+		public boolean hasChildren(Object element) {
+			return false;
+		}
+
+	}
+
+	/**
+	 * {@link ISynchronizationPaletteListener} refreshing a {@link Viewer} with the
+	 * {@link IdeMappingUtils#getSynchronizationPalette() synchronization palette}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class SynchronizationPaletteListener implements ISynchronizationPaletteListener {
+
+		/**
+		 * The {@link TreeViewer} to refresh.
+		 */
+		private final TreeViewer viewer;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param viewer
+		 *            the {@link TreeViewer} to refresh
+		 */
+		SynchronizationPaletteListener(TreeViewer viewer) {
+			this.viewer = viewer;
+			viewer.setInput(IdeMappingUtils.getSynchronizationPalette());
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#locationActivated(org.eclipse.intent.mapping.base.ILocationDescriptor)
+		 */
+		public void locationActivated(ILocationDescriptor locationDescriptor) {
+			viewer.setInput(IdeMappingUtils.getSynchronizationPalette());
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#locationDeactivated(org.eclipse.intent.mapping.base.ILocationDescriptor)
+		 */
+		public void locationDeactivated(ILocationDescriptor locationDescriptor) {
+			viewer.setInput(IdeMappingUtils.getSynchronizationPalette());
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#contentsAdded(org.eclipse.intent.mapping.base.ILocationDescriptor)
+		 */
+		public void contentsAdded(ILocationDescriptor locationDescriptor) {
+			viewer.setInput(IdeMappingUtils.getSynchronizationPalette());
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#contentsRemoved(org.eclipse.intent.mapping.base.ILocationDescriptor)
+		 */
+		public void contentsRemoved(ILocationDescriptor locationDescriptor) {
+			viewer.setInput(IdeMappingUtils.getSynchronizationPalette());
+		}
+	}
+
+	/**
+	 * The view ID.
+	 */
+	public static final String ID = "org.eclipse.intent.mapping.ide.ui.view.SynchronizationPaletteView"; //$NON-NLS-1$
+
+	/**
+	 * The {@link SynchronizationPaletteListener} refreshing the viewer.
+	 */
+	private SynchronizationPaletteListener synchronizationPaletteListener;
+
+	/**
+	 * The {@link MenuManager}.
+	 */
+	private final MenuManager menuManager = new MenuManager();
+
+	/**
+	 * The {@link Menu}.
+	 */
+	private Menu menu;
+
+	/**
+	 * Constructor.
+	 */
+	public SynchronizationPaletteView() {
+		// nothing to do here
+	}
+
+	/**
+	 * Create contents of the view part.
+	 * 
+	 * @param parent
+	 */
+	@Override
+	public void createPartControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+		final FilteredCheckboxTree locationsList = new FilteredCheckboxTree(container, SWT.CHECK | SWT.MULTI
+				| SWT.BORDER, new PatternFilter(), false);
+		locationsList.getViewer().setContentProvider(new SynchronizationPaletteContentProvider());
+		locationsList.getViewer().setLabelProvider(new MappingLabelProvider(MappingLabelProvider.SOURCE));
+		locationsList.getViewer().setCheckStateProvider(new ICheckStateProvider() {
+
+			public boolean isGrayed(Object element) {
+				return false;
+			}
+
+			public boolean isChecked(Object element) {
+				return IdeMappingUtils.isActive((ILocationDescriptor)element);
+			}
+		});
+		synchronizationPaletteListener = new SynchronizationPaletteListener(locationsList.getViewer());
+		IdeMappingUtils.addSynchronizationPaletteListener(synchronizationPaletteListener);
+		locationsList.getViewer().getTree().addListener(SWT.MouseDoubleClick,
+				new ShowLocationDoubleClickListener(locationsList.getViewer().getTree()));
+		locationsList.getViewer().getTree().addListener(SWT.KeyUp, new Listener() {
+
+			public void handleEvent(Event event) {
+				if (event.character == SWT.DEL) {
+					final List<ILocationDescriptor> toDelete = new ArrayList<ILocationDescriptor>();
+					for (TreeItem item : ((Tree)event.widget).getSelection()) {
+						toDelete.add((ILocationDescriptor)item.getData());
+					}
+					for (ILocationDescriptor locationDescriptor : toDelete) {
+						IdeMappingUtils.removeLocationFromPalette(locationDescriptor);
+						locationDescriptor.dispose();
+					}
+				}
+			}
+		});
+		locationsList.getViewer().getTree().addListener(SWT.Selection, new Listener() {
+
+			public void handleEvent(Event event) {
+				if (event.detail == SWT.CHECK) {
+					if (((TreeItem)event.item).getChecked()) {
+						IdeMappingUtils.activateLocation((ILocationDescriptor)event.item.getData());
+					} else {
+						IdeMappingUtils.deactivateLocation((ILocationDescriptor)event.item.getData());
+					}
+				}
+			}
+		});
+
+		final DropTarget textDropTarget = new DropTarget(locationsList.getViewer().getTree(), DND.DROP_COPY
+				| DND.DROP_MOVE | DND.DROP_LINK | DND.DROP_DEFAULT);
+		textDropTarget.setTransfer(new Transfer[] {TextTransfer.getInstance(), LocalSelectionTransfer
+				.getTransfer(), });
+		textDropTarget.addDropListener(new LocationDropTargetListener(locationsList.getViewer()));
+
+		getSite().setSelectionProvider(locationsList.getViewer());
+
+		createActions();
+		initializeToolBar();
+
+		menu = menuManager.createContextMenu(locationsList.getViewer().getControl());
+		locationsList.getViewer().getControl().setMenu(menu);
+		getSite().registerContextMenu(menuManager, locationsList.getViewer());
+	}
+
+	/**
+	 * Create the actions.
+	 */
+	private void createActions() {
+		// Create the actions
+	}
+
+	/**
+	 * Initialize the toolbar.
+	 */
+	private void initializeToolBar() {
+		IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+	}
+
+	@Override
+	public void setFocus() {
+		// Set the focus
+	}
+
+	@Override
+	public void dispose() {
+		super.dispose();
+		IdeMappingUtils.removeSynchronizationPaletteListener(synchronizationPaletteListener);
+		menu.dispose();
+		menuManager.dispose();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.ide/.checkstyle
new file mode 100644
index 0000000..b3e8ea9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/.classpath b/mapping/plugins/org.eclipse.intent.mapping.ide/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/.project b/mapping/plugins/org.eclipse.intent.mapping.ide/.project
new file mode 100644
index 0000000..c6703b9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.ide</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0c67755
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ide
+Bundle-SymbolicName: org.eclipse.intent.mapping.ide;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.intent.mapping;bundle-version="0.10.0",
+ org.eclipse.core.contenttype,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.osgi
+Export-Package: org.eclipse.intent.mapping.ide,
+ org.eclipse.intent.mapping.ide.adapter,
+ org.eclipse.intent.mapping.ide.connector,
+ org.eclipse.intent.mapping.ide.internal.connector;x-friends:="org.eclipse.intent.mapping.ide.tests",
+ org.eclipse.intent.mapping.ide.internal.content;x-friends:="org.eclipse.intent.mapping.ide.tests",
+ org.eclipse.intent.mapping.ide.resource
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.intent.mapping.ide.Activator
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/build.properties b/mapping/plugins/org.eclipse.intent.mapping.ide/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.ide/plugin.xml
new file mode 100644
index 0000000..0b8df97
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/plugin.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension-point id="org.eclipse.intent.mapping.ide.fileConnectorDelegate" name="FileConnectorDelegate" schema="schema/org.eclipse.intent.mapping.ide.fileConnectorDelegate.exsd"/>
+   <extension-point id="org.eclipse.intent.mapping.ide.location" name="Location" schema="schema/org.eclipse.intent.mapping.ide.location.exsd"/>
+   <extension-point id="org.eclipse.intent.mapping.ide.baseProvider" name="Base Provider" schema="schema/org.eclipse.intent.mapping.ide.baseProvider.exsd"/>
+   <extension-point id="org.eclipse.intent.mapping.ide.connector" name="Mapping Connector" schema="schema/org.eclipse.intent.mapping.ide.connector.exsd"/>
+   <extension-point id="org.eclipse.intent.mapping.ide.markerToLocation" name="MarkerToLocation" schema="schema/org.eclipse.intent.mapping.ide.markerToLocation.exsd"/>
+   <extension-point id="org.eclipse.intent.mapping.ide.containerProvider" name="ContainerProvider" schema="schema/org.eclipse.intent.mapping.ide.containerProvider.exsd"/>
+   <extension
+         point="org.eclipse.intent.mapping.ide.connector">
+      <connector
+            class="org.eclipse.intent.mapping.ide.connector.IdeTextConnector">
+      </connector>
+      <connector
+            class="org.eclipse.intent.mapping.ide.connector.ResourceConnector">
+      </connector>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.intent.mapping.text.ITextLocation"
+            class="org.eclipse.intent.mapping.ide.adapter.TextLocationToMarkerAdapterFactory">
+         <adapter
+               type="org.eclipse.core.resources.IMarker">
+         </adapter>
+      </factory>
+      <factory
+            adaptableType="org.eclipse.core.resources.IMarker"
+            class="org.eclipse.intent.mapping.ide.adapter.MarkerToLocationDescriptorAdapterFactory">
+         <adapter
+               type="org.eclipse.intent.mapping.base.ILocationDescriptor">
+         </adapter>
+      </factory>
+   </extension>
+   <extension
+         id="org.eclipse.intent.mapping.ide.locationMarker"
+         name="Location"
+         point="org.eclipse.core.resources.markers">
+      <persistent
+            value="false">
+      </persistent>
+      <attribute
+            name="org.eclipse.intent.mapping.ide.location">
+      </attribute>
+   </extension>
+   <extension
+         id="org.eclipse.intent.mapping.ide.textLocationMarker"
+         name="Text Location"
+         point="org.eclipse.core.resources.markers">
+      <super
+            type="org.eclipse.intent.mapping.ide.locationMarker">
+      </super>
+      <super
+            type="org.eclipse.core.resources.textmarker">
+      </super>
+   </extension>
+   <extension
+         point="org.eclipse.intent.mapping.ide.markerToLocation">
+      <markerToLocation
+            class="org.eclipse.intent.mapping.ide.adapter.MarkerToTextLocationDescriptor"
+            markerType="org.eclipse.core.resources.textmarker">
+      </markerToLocation>
+   </extension>
+
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.ide/pom.xml
new file mode 100644
index 0000000..69cd3fd
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.ide</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping IDE</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.baseProvider.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.baseProvider.exsd
new file mode 100644
index 0000000..d6b662d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.baseProvider.exsd
@@ -0,0 +1,86 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.baseProvider" name="Base Provider"/>
+      </appinfo>
+      <documentation>
+         This extension point give a change to any plugin providing IBase to get started.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.10.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         &lt;extension
+  point=&quot;org.eclipse.intent.mapping.ide.baseProvider&quot;&gt;
+&lt;/extension&gt;
+      </documentation>
+   </annotation>
+
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2016 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.connector.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.connector.exsd
new file mode 100644
index 0000000..0be0925
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.connector.exsd
@@ -0,0 +1,115 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.connector" name="Mapping Connector"/>
+      </appinfo>
+      <documentation>
+         Define an IConnector.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="connector"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="connector">
+      <complexType>
+         <attribute name="class" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.conector.IConnector"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.10.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         &lt;extension
+  point=&quot;org.eclipse.intent.mapping.ide.connector&quot;&gt;
+  &lt;connector
+    class=&quot;org.eclipse.intent.mapping.text.TextConnector&quot;&gt;
+  &lt;/connector&gt;
+&lt;/extension&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         org.eclipse.intent.mapping.conector.IConnectorRegistry.register(IConnector connector)
+      </documentation>
+   </annotation>
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.containerProvider.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.containerProvider.exsd
new file mode 100644
index 0000000..970e67f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.containerProvider.exsd
@@ -0,0 +1,118 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.containerProvider" name="ContainerProvider"/>
+      </appinfo>
+      <documentation>
+         Defines an IContainerProvider
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="provider"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="provider">
+      <complexType>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The IContainerProvider
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.connector.IContainerProvider"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.10.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.fileConnectorDelegate.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.fileConnectorDelegate.exsd
new file mode 100644
index 0000000..1db5fbd
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.fileConnectorDelegate.exsd
@@ -0,0 +1,115 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.fileconnectordelegate" name="FileLocationDelegate"/>
+      </appinfo>
+      <documentation>
+         Defines a file delegate for a content type.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="fileConnectorDelegate"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="fileConnectorDelegate">
+      <complexType>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.10.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         &lt;extension
+  point=&quot;org.eclipse.intent.mapping.ide.fileConnectorDelegate&quot;&gt;
+  &lt;fileConnectorDelegate
+    class=&quot;org.eclipse.intent.mapping.emf.ide.connector.EObjectFileConnectorDelegate&quot;&gt;
+  &lt;/fileConnectorDelegate&gt;
+&lt;/extension&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry.register(IFileConnectorDelegate delegate)
+      </documentation>
+   </annotation>
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.location.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.location.exsd
new file mode 100644
index 0000000..e618481
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.location.exsd
@@ -0,0 +1,155 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.location" name="Location"/>
+      </appinfo>
+      <documentation>
+         Defines a location class to instanciate for a location interface and a base implementation.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="base"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="base">
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="location"/>
+         </sequence>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The IBase kind.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.base.IBase"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="location">
+      <complexType>
+         <attribute name="interface" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The ILocation interface.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.base.ILocation"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="implementation" type="string" use="required">
+            <annotation>
+               <documentation>
+                  Must implement the referenced ILocation interface.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.base.ILocation"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.10.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         &lt;extension
+         point=&quot;org.eclipse.intent.mapping.ide.location&quot;&gt;
+      &lt;base
+            class=&quot;org.eclipse.intent.mapping.Base&quot;&gt;
+         &lt;location
+               implementation=&quot;org.eclipse.intent.mapping.ide.impl.ResourceLocationImpl&quot;
+               interface=&quot;org.eclipse.intent.mapping.ide.resource.IResourceLocation&quot;&gt;
+         &lt;/location&gt;
+         &lt;location
+               implementation=&quot;org.eclipse.intent.mapping.ide.impl.TextFileLocationImpl&quot;
+               interface=&quot;org.eclipse.intent.mapping.ide.resource.ITextFileLocation&quot;&gt;
+         &lt;/location&gt;
+         &lt;location
+               implementation=&quot;org.eclipse.intent.mapping.ide.impl.EObjectFileLocationImpl&quot;
+               interface=&quot;org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation&quot;&gt;
+         &lt;/location&gt;
+      &lt;/base&gt;
+   &lt;/extension&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         org.eclipse.intent.mapping.MappingUtils.registerLocationImplementation(Class&lt;? extends IBase&gt; baseClass, Class&lt;L&gt; locationInterface, Class&lt;? extends L&gt; locationClass)
+      </documentation>
+   </annotation>
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.markerToLocation.exsd b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.markerToLocation.exsd
new file mode 100644
index 0000000..09e6df5
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/schema/org.eclipse.intent.mapping.ide.markerToLocation.exsd
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.intent.mapping.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.intent.mapping.ide" id="org.eclipse.intent.mapping.ide.markerToLocation" name="MarkerToLocation"/>
+      </appinfo>
+      <documentation>
+         Adapts an IMaker to an ILocation
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="markerToLocation"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="markerToLocation">
+      <complexType>
+         <attribute name="markerType" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="identifier" basedOn="org.eclipse.core.resources.markers/@id"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.intent.mapping.ide.adapter.IMarkerToLocation"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2016 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+   Obeo - initial API and implementation and/or initial documentation
+   ...
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/Activator.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/Activator.java
new file mode 100644
index 0000000..754b885
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/Activator.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.connector.ResourceLocationListener;
+import org.eclipse.intent.mapping.ide.connector.TextFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.internal.content.IdeFileTypeRegistry;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Activator extends Plugin {
+
+	/** The plug-in ID. */
+	public static final String PLUGIN_ID = "org.eclipse.intent.mapping.ide";
+
+	/** This plug-in's shared instance. */
+	private static Activator plugin;
+
+	/** The registry listener that will be used to listen to extension changes. */
+	private IdeMappingRegistryListener registryListener = new IdeMappingRegistryListener();
+
+	/** The {@link IdeFileTypeRegistry}. */
+	private IdeFileTypeRegistry fileTypeRegistry;
+
+	/**
+	 * The {@link ResourceLocationListener}.
+	 */
+	private ResourceLocationListener resourceLocationListener;
+
+	/**
+	 * Gets the {@link ResourceLocationListener}.
+	 * 
+	 * @param resourceLocationListener
+	 *            the {@link ResourceLocationListener}
+	 */
+	public void setResourceLocationListener(ResourceLocationListener resourceLocationListener) {
+		if (this.resourceLocationListener != null) {
+			ResourcesPlugin.getWorkspace().removeResourceChangeListener(this.resourceLocationListener);
+		}
+		this.resourceLocationListener = resourceLocationListener;
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceLocationListener);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+
+		fileTypeRegistry = new IdeFileTypeRegistry(MappingUtils.getFileTypeRegistry());
+		MappingUtils.setFileTypeRegistry(fileTypeRegistry);
+
+		IdeMappingUtils.getFileConectorDelegateRegistry().register(new TextFileConnectorDelegate());
+
+		final IExtensionRegistry registry = Platform.getExtensionRegistry();
+		registry.addListener(registryListener, IdeMappingRegistryListener.CONTAINER_PROVIDER_EXTENSION_POINT);
+		registry.addListener(registryListener,
+				IdeMappingRegistryListener.FILE_CONNECTOR_DELEGATE_EXTENSION_POINT);
+		registry.addListener(registryListener, IdeMappingRegistryListener.CONNECTOR_EXTENSION_POINT);
+		registry.addListener(registryListener, IdeMappingRegistryListener.MARKER_TO_LOCATION_EXTENSION_POINT);
+		registry.addListener(registryListener, IdeMappingRegistryListener.LOCATION_EXTENSION_POINT);
+		registry.addListener(registryListener, IdeMappingRegistryListener.BASE_PROVIDER_EXTENSION_POINT);
+		registryListener.parseInitialContributions();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+		plugin = null;
+
+		MappingUtils.setFileTypeRegistry(fileTypeRegistry.getDelegate());
+
+		final IExtensionRegistry registry = Platform.getExtensionRegistry();
+		registry.removeListener(registryListener);
+		// TODO clear registry ?
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceLocationListener);
+		resourceLocationListener = null;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/ILocationMarker.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/ILocationMarker.java
new file mode 100644
index 0000000..65ce6c3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/ILocationMarker.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide;
+
+/**
+ * Place holder for location marker constants.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationMarker {
+
+	/**
+	 * The location marker ID.
+	 */
+	String LOCATION_ID = Activator.PLUGIN_ID + ".locationMarker";
+
+	/**
+	 * The text location marker ID.
+	 */
+	String TEXT_LOCATION_ID = Activator.PLUGIN_ID + ".textLocationMarker";
+
+	/**
+	 * The location attribute.
+	 */
+	String LOCATION_ATTRIBUTE = "location";
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingRegistryListener.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingRegistryListener.java
new file mode 100644
index 0000000..5730f55
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingRegistryListener.java
@@ -0,0 +1,497 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IRegistryEventListener;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.ContainerProviderFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.connector.IConnector;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.ide.adapter.IMarkerToLocationDescriptor;
+import org.eclipse.intent.mapping.ide.adapter.MarkerToLocationDescriptorAdapterFactory;
+import org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+/**
+ * This listener will allow us to be aware of contribution changes against the {@link ILocation} and
+ * {@link IFileConnectorDelegate} extension points.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeMappingRegistryListener implements IRegistryEventListener {
+
+	/**
+	 * The class constant.
+	 */
+	public static final String CLASS = "class";
+
+	/**
+	 * {@link ILocation} extension point to parse for extensions.
+	 */
+	public static final String LOCATION_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.location";
+
+	/**
+	 * {@link ILocation} tag.
+	 */
+	public static final String BASE_TAG_EXTENSION = "base";
+
+	/**
+	 * The {@link ILocation} extension point base attribute.
+	 */
+	public static final String BASE_ATTRIBUTE_CLASS = CLASS;
+
+	/**
+	 * {@link ILocation} tag.
+	 */
+	public static final String LOCATION_TAG_EXTENSION = "location";
+
+	/**
+	 * {@link ILocation} tag.
+	 */
+	public static final String LOCATION_ATTRIBUTE_INTERFACE = "interface";
+
+	/**
+	 * {@link ILocation} tag.
+	 */
+	public static final String LOCATION_ATTRIBUTE_IMPLEMENTATION = "implementation";
+
+	/**
+	 * {@link IFileConnectorDelegate} extension point to parse for extensions.
+	 */
+	public static final String FILE_CONNECTOR_DELEGATE_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.fileConnectorDelegate";
+
+	/**
+	 * {@link IFileConnectorDelegate} tag.
+	 */
+	public static final String FILE_CONNECTOR_DELEGATE_TAG_EXTENSION = "fileConnectorDelegate";
+
+	/**
+	 * The {@link ILocation} extension point base attribute.
+	 */
+	public static final String FILE_CONNECTOR_DELEGATE_ATTRIBUTE_CLASS = CLASS;
+
+	/**
+	 * Plugin providing {@link IBase} extension point to parse for extensions.
+	 */
+	public static final String BASE_PROVIDER_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.baseProvider";
+
+	/**
+	 * Plugin providing {@link IConnector} extension point to parse for extensions.
+	 */
+	public static final String CONNECTOR_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.connector";
+
+	/**
+	 * {@link IConnector} tag.
+	 */
+	public static final String CONNECTOR_TAG_EXTENSION = "connector";
+
+	/**
+	 * The {@link ILocation} extension point connector attribute.
+	 */
+	public static final String CONNECTOR_ATTRIBUTE_CLASS = CLASS;
+
+	/**
+	 * Plugin providing {@link IMarkerToLocationDescriptor} extension point to parse for extensions.
+	 */
+	public static final String MARKER_TO_LOCATION_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.markerToLocation";
+
+	/**
+	 * {@link IMarkerToLocationDescriptor} tag.
+	 */
+	public static final String MARKER_TO_LOCATION_TAG_EXTENSION = "markerToLocation";
+
+	/**
+	 * The {@link IMarkerToLocationDescriptor} extension point adapter attribute.
+	 */
+	public static final String MARKER_TO_LOCATION_ATTRIBUTE_CLASS = CLASS;
+
+	/**
+	 * The {@link IMarkerToLocationDescriptor} extension point adapter attribute.
+	 */
+	public static final String MARKER_TO_LOCATION_ATTRIBUTE_MARKER_TYPE = "markerType";
+
+	/**
+	 * {@link IContainerProvider} extension point to parse for extensions.
+	 */
+	public static final String CONTAINER_PROVIDER_EXTENSION_POINT = "org.eclipse.intent.mapping.ide.containerProvider";
+
+	/**
+	 * {@link IContainerProvider} tag.
+	 */
+	public static final String CONTAINER_PROVIDER_TAG_EXTENSION = "provider";
+
+	/**
+	 * The {@link IContainerProvider} extension point base attribute.
+	 */
+	public static final String CONTAINER_PROVIDER_ATTRIBUTE_CLASS = CLASS;
+
+	/**
+	 * An {@link BaseElementFactory.FactoryDescriptor} for an extension point.
+	 * 
+	 * @param <T>
+	 *            the kind of {@link ILocation}
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class ExtensionFactoryDescriptor<T extends ILocation> implements BaseElementFactory.IFactoryDescriptor<T> {
+
+		/**
+		 * The {@link IConfigurationElement}.
+		 */
+		private final IConfigurationElement element;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param element
+		 *            the {@link IConfigurationElement}
+		 */
+		public ExtensionFactoryDescriptor(IConfigurationElement element) {
+			this.element = element;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.BaseElementFactory.IFactoryDescriptor#createElement()
+		 */
+		@SuppressWarnings("unchecked")
+		public T createElement() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException {
+			try {
+				return (T)element.createExecutableExtension(LOCATION_ATTRIBUTE_IMPLEMENTATION);
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+			return null;
+		}
+
+	}
+
+	/**
+	 * An {@link ContainerProviderFactory.FactoryDescriptor} for an extension point.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class ExtensionContainerProviderFactoryDescriptor implements ContainerProviderFactory.IFactoryDescriptor {
+
+		/**
+		 * The {@link IConfigurationElement}.
+		 */
+		private final IConfigurationElement element;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param element
+		 *            the {@link IConfigurationElement}
+		 */
+		public ExtensionContainerProviderFactoryDescriptor(IConfigurationElement element) {
+			this.element = element;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.BaseElementFactory.IFactoryDescriptor#createElement()
+		 */
+		public IContainerProvider createElement() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException {
+			try {
+				return (IContainerProvider)element.createExecutableExtension(
+						CONTAINER_PROVIDER_ATTRIBUTE_CLASS);
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ContainerProviderFactory.IFactoryDescriptor#getClassName()
+		 */
+		public String getClassName() {
+			return element.getAttribute(CONTAINER_PROVIDER_ATTRIBUTE_CLASS);
+		}
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.IRegistryEventListener#added(org.eclipse.core.runtime.IExtension[])
+	 */
+	public void added(IExtension[] extensions) {
+		for (IExtension extension : extensions) {
+			if (LOCATION_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseLocationExtension(extension);
+			} else if (FILE_CONNECTOR_DELEGATE_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseFileConnectorDelegateExtension(extension);
+			} else if (BASE_PROVIDER_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseBaseProviderExtension(extension);
+			} else if (CONNECTOR_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseConnectorProviderExtension(extension);
+			} else if (MARKER_TO_LOCATION_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseMarkerToLocationExtension(extension);
+			} else if (CONTAINER_PROVIDER_EXTENSION_POINT.equals(extension.getUniqueIdentifier())) {
+				parseContainerProviderExtension(extension);
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.IRegistryEventListener#added(org.eclipse.core.runtime.IExtensionPoint[])
+	 */
+	public void added(IExtensionPoint[] extensionPoints) {
+		// no need to listen to this event
+	}
+
+	/**
+	 * Though this listener reacts to the extension point changes, there could have been contributions before
+	 * it's been registered. This will parse these initial contributions.
+	 */
+	public void parseInitialContributions() {
+		final IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+		for (IExtension extension : registry.getExtensionPoint(CONTAINER_PROVIDER_EXTENSION_POINT)
+				.getExtensions()) {
+			parseContainerProviderExtension(extension);
+		}
+		for (IExtension extension : registry.getExtensionPoint(FILE_CONNECTOR_DELEGATE_EXTENSION_POINT)
+				.getExtensions()) {
+			parseFileConnectorDelegateExtension(extension);
+		}
+		for (IExtension extension : registry.getExtensionPoint(CONNECTOR_EXTENSION_POINT).getExtensions()) {
+			parseConnectorProviderExtension(extension);
+		}
+		for (IExtension extension : registry.getExtensionPoint(MARKER_TO_LOCATION_EXTENSION_POINT)
+				.getExtensions()) {
+			parseMarkerToLocationExtension(extension);
+		}
+		for (IExtension extension : registry.getExtensionPoint(LOCATION_EXTENSION_POINT).getExtensions()) {
+			parseLocationExtension(extension);
+		}
+		for (IExtension extension : registry.getExtensionPoint(BASE_PROVIDER_EXTENSION_POINT)
+				.getExtensions()) {
+			parseBaseProviderExtension(extension);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.IRegistryEventListener#removed(org.eclipse.core.runtime.IExtension[])
+	 */
+	@SuppressWarnings("unchecked")
+	public void removed(IExtension[] extensions) {
+		for (IExtension extension : extensions) {
+			final IConfigurationElement[] configElements = extension.getConfigurationElements();
+			for (IConfigurationElement elem : configElements) {
+				if (BASE_TAG_EXTENSION.equals(elem.getName())) {
+					final Bundle contributor = Platform.getBundle(elem.getContributor().getName());
+					final String baseClassName = elem.getAttribute(BASE_ATTRIBUTE_CLASS);
+					try {
+						Class<? extends IBase> baseClass = (Class<? extends IBase>)contributor.loadClass(
+								baseClassName);
+						for (IConfigurationElement locationElem : elem.getChildren(LOCATION_TAG_EXTENSION)) {
+							final String interfaceClassName = locationElem.getAttribute(
+									LOCATION_ATTRIBUTE_INTERFACE);
+							Class<ILocation> interfaceClass = (Class<ILocation>)contributor.loadClass(
+									interfaceClassName);
+							MappingUtils.unregisterLocationImplementation(baseClass, interfaceClass);
+						}
+					} catch (ClassNotFoundException e) {
+						Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+								.getMessage(), e));
+					}
+				} else if (FILE_CONNECTOR_DELEGATE_TAG_EXTENSION.equals(elem.getName())) {
+					final String delegateClassName = elem.getAttribute(
+							FILE_CONNECTOR_DELEGATE_ATTRIBUTE_CLASS);
+					IFileConnectorDelegate delegateToRemove = null;
+					for (IFileConnectorDelegate delegate : IdeMappingUtils.getFileConectorDelegateRegistry()
+							.getConnectorDelegates()) {
+						if (delegateClassName.equals(delegate.getClass().getName())) {
+							delegateToRemove = delegate;
+							break;
+						}
+					}
+					if (delegateToRemove != null) {
+						IdeMappingUtils.getFileConectorDelegateRegistry().unregister(delegateToRemove);
+					}
+				} else if (CONTAINER_PROVIDER_TAG_EXTENSION.equals(elem.getName())) {
+					MappingUtils.getContainerProviderFactory().removeDescriptor(elem.getAttribute(
+							CONTAINER_PROVIDER_ATTRIBUTE_CLASS));
+				}
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.core.runtime.IRegistryEventListener#removed(org.eclipse.core.runtime.IExtensionPoint[])
+	 */
+	public void removed(IExtensionPoint[] extensionPoints) {
+		// no need to listen to this event
+	}
+
+	/**
+	 * Parses a single {@link ILocation} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry
+	 */
+	@SuppressWarnings("unchecked")
+	private void parseLocationExtension(IExtension extension) {
+		final IConfigurationElement[] configElements = extension.getConfigurationElements();
+		for (IConfigurationElement elem : configElements) {
+			if (BASE_TAG_EXTENSION.equals(elem.getName())) {
+				final Bundle contributor = Platform.getBundle(elem.getContributor().getName());
+				final String baseClassName = elem.getAttribute(BASE_ATTRIBUTE_CLASS);
+				try {
+					Class<? extends IBase> baseClass = (Class<? extends IBase>)contributor.loadClass(
+							baseClassName);
+					for (IConfigurationElement locationElem : elem.getChildren(LOCATION_TAG_EXTENSION)) {
+						final String interfaceClassName = locationElem.getAttribute(
+								LOCATION_ATTRIBUTE_INTERFACE);
+						Class<ILocation> interfaceClass = (Class<ILocation>)contributor.loadClass(
+								interfaceClassName);
+						MappingUtils.registerLocationImplementation(baseClass, interfaceClass,
+								new ExtensionFactoryDescriptor<ILocation>(locationElem));
+					}
+				} catch (ClassNotFoundException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		}
+	}
+
+	/**
+	 * Parses a single {@link IFileConnectorDelegate} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry
+	 */
+	private void parseFileConnectorDelegateExtension(IExtension extension) {
+		final IConfigurationElement[] configElements = extension.getConfigurationElements();
+		for (IConfigurationElement elem : configElements) {
+			if (FILE_CONNECTOR_DELEGATE_TAG_EXTENSION.equals(elem.getName())) {
+				try {
+					final IFileConnectorDelegate delegate = (IFileConnectorDelegate)elem
+							.createExecutableExtension(FILE_CONNECTOR_DELEGATE_ATTRIBUTE_CLASS);
+					IdeMappingUtils.getFileConectorDelegateRegistry().register(delegate);
+				} catch (CoreException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		}
+	}
+
+	/**
+	 * Parses a single {@link IBase} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry.
+	 */
+	private void parseBaseProviderExtension(IExtension extension) {
+		final String bundleName = extension.getContributor().getName();
+		final Bundle bundle = Platform.getBundle(bundleName);
+		try {
+			if (bundle.getState() != Bundle.ACTIVE) {
+				bundle.start();
+			}
+		} catch (BundleException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		}
+	}
+
+	/**
+	 * Parses a single {@link IConnector} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry
+	 */
+	private void parseConnectorProviderExtension(IExtension extension) {
+		final IConfigurationElement[] configElements = extension.getConfigurationElements();
+		for (IConfigurationElement elem : configElements) {
+			if (CONNECTOR_TAG_EXTENSION.equals(elem.getName())) {
+				try {
+					final IConnector connector = (IConnector)elem.createExecutableExtension(
+							CONNECTOR_ATTRIBUTE_CLASS);
+					MappingUtils.getConnectorRegistry().register(connector);
+				} catch (CoreException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		}
+	}
+
+	/**
+	 * Parses a single {@link IMarkerToLocationDescriptor} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry
+	 */
+	private void parseMarkerToLocationExtension(IExtension extension) {
+		final IConfigurationElement[] configElements = extension.getConfigurationElements();
+		for (IConfigurationElement elem : configElements) {
+			if (MARKER_TO_LOCATION_TAG_EXTENSION.equals(elem.getName())) {
+				try {
+					final String marterType = elem.getAttribute(MARKER_TO_LOCATION_ATTRIBUTE_MARKER_TYPE);
+					final IMarkerToLocationDescriptor adapter = (IMarkerToLocationDescriptor)elem
+							.createExecutableExtension(MARKER_TO_LOCATION_ATTRIBUTE_CLASS);
+					MarkerToLocationDescriptorAdapterFactory.register(adapter, marterType);
+				} catch (CoreException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		}
+	}
+
+	/**
+	 * Parses a single {@link IContainerProvider} extension contribution.
+	 * 
+	 * @param extension
+	 *            Parses the given extension and adds its contribution to the registry
+	 */
+	private void parseContainerProviderExtension(IExtension extension) {
+		final IConfigurationElement[] configElements = extension.getConfigurationElements();
+		for (IConfigurationElement elem : configElements) {
+			if (CONTAINER_PROVIDER_TAG_EXTENSION.equals(elem.getName())) {
+				MappingUtils.getContainerProviderFactory().addDescriptor(
+						new ExtensionContainerProviderFactoryDescriptor(elem));
+			}
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingUtils.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingUtils.java
new file mode 100644
index 0000000..04e4e1b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/IdeMappingUtils.java
@@ -0,0 +1,560 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry;
+import org.eclipse.intent.mapping.ide.internal.connector.FileDelegateRegistry;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * Ide mapping utilities.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class IdeMappingUtils {
+
+	/**
+	 * Listener for the {@link IdeMappingUtils#getSynchronizationPalette() synchronization palette}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface ISynchronizationPaletteListener {
+
+		/**
+		 * Stub implementation.
+		 *
+		 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+		 */
+		class Stub implements ISynchronizationPaletteListener {
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#locationActivated(org.eclipse.intent.mapping.base.ILocationDescriptor)
+			 */
+			public void locationActivated(ILocationDescriptor locationDescriptor) {
+				// nothing to do here
+			}
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#locationDeactivated(org.eclipse.intent.mapping.base.ILocationDescriptor)
+			 */
+			public void locationDeactivated(ILocationDescriptor locationDescriptor) {
+				// nothing to do here
+			}
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#contentsAdded(org.eclipse.intent.mapping.base.ILocationDescriptor)
+			 */
+			public void contentsAdded(ILocationDescriptor locationDescriptor) {
+				// nothing to do here
+			}
+
+			/**
+			 * {@inheritDoc}
+			 *
+			 * @see org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener#contentsRemoved(org.eclipse.intent.mapping.base.ILocationDescriptor)
+			 */
+			public void contentsRemoved(ILocationDescriptor locationDescriptor) {
+				// nothing to do here
+			}
+
+		}
+
+		/**
+		 * Notifies that the given {@link ILocationDescriptor} has been activated.
+		 * 
+		 * @param locationDescriptor
+		 *            the activated {@link ILocationDescriptor}
+		 */
+		void locationActivated(ILocationDescriptor locationDescriptor);
+
+		/**
+		 * Notifies that the given {@link ILocationDescriptor} has been deactivated.
+		 * 
+		 * @param locationDescriptor
+		 *            the deactivated {@link ILocationDescriptor}
+		 */
+		void locationDeactivated(ILocationDescriptor locationDescriptor);
+
+		/**
+		 * Notifies that a {@link ILocationDescriptor} has been added.
+		 * 
+		 * @param locationDescriptor
+		 *            the added {@link ILocationDescriptor}
+		 */
+		void contentsAdded(ILocationDescriptor locationDescriptor);
+
+		/**
+		 * Notifies that a {@link ILocationDescriptor} has been removed.
+		 * 
+		 * @param locationDescriptor
+		 *            the removed {@link ILocationDescriptor}
+		 */
+		void contentsRemoved(ILocationDescriptor locationDescriptor);
+
+	}
+
+	/**
+	 * Listener for {@link IdeMappingUtils#getCurrentBase() current base}
+	 * {@link IdeMappingUtils#setCurrentBase(IBase) change}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface ICurrentBaseListener {
+
+		/**
+		 * Notifies that the {@link IdeMappingUtils#getCurrentBase() current base} has been
+		 * {@link IdeMappingUtils#setCurrentBase(IBase) changed}.
+		 * 
+		 * @param oldBase
+		 *            the old {@link IBase}
+		 * @param newBase
+		 *            the new {@link IBase}
+		 */
+		void currentBaseChanged(IBase oldBase, IBase newBase);
+
+	}
+
+	/**
+	 * The {@link IFileDelegateRegistry} instance.
+	 */
+	private static final IFileDelegateRegistry REGISTRY = new FileDelegateRegistry();
+
+	/**
+	 * Mapping from an {@link ILocation} and it's {@link IMarker}.
+	 */
+	private static final Map<ILocation, IMarker> LOCATION_TO_MARKER = new HashMap<ILocation, IMarker>();
+
+	/**
+	 * The palette of {@link ILocationDescriptor} to link with.
+	 */
+	private static final Map<ILocationDescriptor, Boolean> LOCATIONS_PALETTE = new LinkedHashMap<ILocationDescriptor, Boolean>();
+
+	/**
+	 * The {@link List} of {@link ISynchronizationPaletteListener}.
+	 */
+	private static final List<ISynchronizationPaletteListener> LOCATIONS_PALETTE_LISTENERS = new ArrayList<ISynchronizationPaletteListener>();
+
+	/**
+	 * The {@link List} of {@link ISynchronizationPaletteListener}.
+	 */
+	private static final List<ICurrentBaseListener> CURRENT_BASE_LISTENERS = new ArrayList<ICurrentBaseListener>();
+
+	/**
+	 * The current {@link IBase}.
+	 */
+	private static IBase currentBase;
+
+	static {
+		CURRENT_BASE_LISTENERS.add(new ICurrentBaseListener() {
+
+			public void currentBaseChanged(IBase oldBase, IBase newBase) {
+				for (ILocationDescriptor descriptor : getSynchronizationPalette()) {
+					removeLocationFromPalette(descriptor);
+				}
+			}
+		});
+	}
+
+	/**
+	 * Constructor.
+	 */
+	private IdeMappingUtils() {
+		// nothing to do here
+	}
+
+	/**
+	 * Gets the {@link IFileDelegateRegistry}.
+	 * 
+	 * @return the {@link IFileDelegateRegistry}
+	 */
+	public static IFileDelegateRegistry getFileConectorDelegateRegistry() {
+		return REGISTRY;
+	}
+
+	/**
+	 * Adapts the given {@link Object element} into an {@link Object} of the given {@link Class}.
+	 * 
+	 * @param element
+	 *            the {@link Object element}
+	 * @param cls
+	 *            the {@link Class}
+	 * @return the {@link Object} of the given {@link Class} if any, <code>null</code> otherwise
+	 * @param <T>
+	 *            the kind of result
+	 */
+	@SuppressWarnings("unchecked")
+	public static <T> T adapt(Object element, Class<T> cls) {
+		final T res;
+
+		if (cls.isInstance(element)) {
+			res = (T)element;
+		} else if (element instanceof IAdaptable) {
+			final T adaptedElement = (T)((IAdaptable)element).getAdapter(cls);
+			if (adaptedElement != null) {
+				res = adaptedElement;
+			} else {
+				res = (T)Platform.getAdapterManager().getAdapter(element, cls);
+			}
+		} else if (element != null) {
+			res = (T)Platform.getAdapterManager().getAdapter(element, cls);
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Sets the current {@link IBase} to the given {@link IBase}.
+	 * 
+	 * @param newBase
+	 *            the new {@link IBase}
+	 */
+	public static void setCurrentBase(IBase newBase) {
+		if (currentBase != newBase) {
+			final IBase oldBase = currentBase;
+			currentBase = newBase;
+			for (ICurrentBaseListener listener : getCurrentBaseListeners()) {
+				listener.currentBaseChanged(oldBase, newBase);
+			}
+		}
+	}
+
+	/**
+	 * Gets the current {@link IBase}.
+	 * 
+	 * @return the current {@link IBase}
+	 */
+	public static IBase getCurrentBase() {
+		return currentBase;
+	}
+
+	/**
+	 * Gets the {@link ILocation#getContainer() containing} {@link IFileLocation} of the given
+	 * {@link ILocation} or itself if it's a {@link IFileLocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the {@link ILocation#getContainer() containing} {@link IFileLocation} of the given
+	 *         {@link ILocation} or itself if it's a {@link IFileLocation}, <code>null</code> if none is found
+	 */
+	public static IFileLocation getContainingFileLocation(ILocation location) {
+		final IFileLocation res;
+
+		if (location instanceof IFileLocation) {
+			res = (IFileLocation)location;
+		} else if (location.getContainer() instanceof ILocation) {
+			res = getContainingFileLocation((ILocation)location.getContainer());
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets or creates the {@link IMarker} for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the {@link IMarker} for the given {@link ILocation} if any exists or can be created,
+	 *         <code>null</code> otherwise
+	 */
+	public static IMarker getOrCreateMarker(ILocation location) {
+		final IMarker res;
+
+		final IMarker existingMarker = getMarker(location);
+		if (existingMarker == null) {
+			res = IdeMappingUtils.adapt(location, IMarker.class);
+			if (res != null) {
+				LOCATION_TO_MARKER.put(location, res);
+			}
+		} else {
+			res = existingMarker;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the cached marker for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the cached marker for the given {@link ILocation} if any, <code>null</code> otherwise
+	 */
+	public static IMarker getMarker(ILocation location) {
+		return LOCATION_TO_MARKER.get(location);
+	}
+
+	/**
+	 * {@link IMarker#delete() Deletes} the {@link IMarker} for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 */
+	public static void deleteMarker(ILocation location) {
+		final IMarker marker = LOCATION_TO_MARKER.remove(location);
+		if (marker != null) {
+			try {
+				marker.delete();
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+						"unable to delete a location markers for " + marker.getResource().getFullPath()
+								.toString(), e));
+			}
+		}
+	}
+
+	/**
+	 * Removes the {@link IMarker} for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @see #deleteMarker(ILocation) for deletion
+	 */
+	public static void removeMarker(ILocation location) {
+		LOCATION_TO_MARKER.remove(location);
+	}
+
+	/**
+	 * Gets the palette of {@link ILocationDescriptor} to link with.
+	 * 
+	 * @return the palette of {@link ILocationDescriptor} to link with
+	 */
+	public static Set<ILocationDescriptor> getSynchronizationPalette() {
+		synchronized(LOCATIONS_PALETTE) {
+			return Collections.unmodifiableSet(new LinkedHashSet(LOCATIONS_PALETTE.keySet()));
+		}
+	}
+
+	/**
+	 * Gets the {@link List} of {@link ISynchronizationPaletteListener} in a thread safe way.
+	 * 
+	 * @return the {@link List} of {@link ISynchronizationPaletteListener} in a thread safe way
+	 */
+	private static List<ISynchronizationPaletteListener> getSynchronizationPaletteListeners() {
+		synchronized(LOCATIONS_PALETTE_LISTENERS) {
+			return new ArrayList<ISynchronizationPaletteListener>(LOCATIONS_PALETTE_LISTENERS);
+		}
+	}
+
+	/**
+	 * Adds the given {@link ILocationDescriptor} to the {@link #getSynchronizationPalette() palette of
+	 * location descriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to add
+	 */
+	public static void addLocationToPalette(ILocationDescriptor locationDescriptor) {
+		final Boolean added;
+		synchronized(LOCATIONS_PALETTE) {
+			added = LOCATIONS_PALETTE.put(locationDescriptor, false);
+		}
+		if (added == null || added) {
+			for (ISynchronizationPaletteListener listener : getSynchronizationPaletteListeners()) {
+				listener.contentsAdded(locationDescriptor);
+			}
+		}
+	}
+
+	/**
+	 * Removes the given {@link ILocationDescriptor} from the {@link #getSynchronizationPalette() palette of
+	 * location descriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocation} to remove
+	 */
+	public static void removeLocationFromPalette(ILocationDescriptor locationDescriptor) {
+		final Boolean removed;
+		synchronized(LOCATIONS_PALETTE) {
+			removed = LOCATIONS_PALETTE.remove(locationDescriptor);
+		}
+		if (removed != null) {
+			for (ISynchronizationPaletteListener listener : getSynchronizationPaletteListeners()) {
+				listener.contentsRemoved(locationDescriptor);
+			}
+		}
+	}
+
+	/**
+	 * Adds the given {@link ISynchronizationPaletteListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ISynchronizationPaletteListener} to add
+	 */
+	public static void addSynchronizationPaletteListener(ISynchronizationPaletteListener listener) {
+		synchronized(LOCATIONS_PALETTE_LISTENERS) {
+			LOCATIONS_PALETTE_LISTENERS.add(listener);
+		}
+	}
+
+	/**
+	 * removes the given {@link ISynchronizationPaletteListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ISynchronizationPaletteListener} to remove
+	 */
+	public static void removeSynchronizationPaletteListener(ISynchronizationPaletteListener listener) {
+		synchronized(LOCATIONS_PALETTE_LISTENERS) {
+			LOCATIONS_PALETTE_LISTENERS.remove(listener);
+		}
+	}
+
+	/**
+	 * Activates the given {@link ILocationDescriptor} form the {@link #getSynchronizationPalette() palette of
+	 * location descriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to activate
+	 */
+	public static void activateLocation(ILocationDescriptor locationDescriptor) {
+		final boolean changed;
+
+		synchronized(LOCATIONS_PALETTE) {
+			if (LOCATIONS_PALETTE.containsKey(locationDescriptor)) {
+				final Boolean lastValue = LOCATIONS_PALETTE.put(locationDescriptor, Boolean.TRUE);
+				changed = lastValue == null || !lastValue;
+			} else {
+				changed = false;
+			}
+		}
+
+		if (changed) {
+			for (ISynchronizationPaletteListener listener : getSynchronizationPaletteListeners()) {
+				listener.locationActivated(locationDescriptor);
+			}
+		}
+	}
+
+	/**
+	 * Deactivates the given {@link ILocationDescriptor} form the {@link #getSynchronizationPalette() palette
+	 * of location descriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to deactivate
+	 */
+	public static void deactivateLocation(ILocationDescriptor locationDescriptor) {
+		final boolean changed;
+
+		synchronized(LOCATIONS_PALETTE) {
+			if (LOCATIONS_PALETTE.containsKey(locationDescriptor)) {
+				final Boolean lastValue = LOCATIONS_PALETTE.put(locationDescriptor, Boolean.FALSE);
+				changed = lastValue == null || lastValue;
+			} else {
+				changed = false;
+			}
+		}
+
+		if (changed) {
+			for (ISynchronizationPaletteListener listener : getSynchronizationPaletteListeners()) {
+				listener.locationDeactivated(locationDescriptor);
+			}
+		}
+	}
+
+	/**
+	 * Tells if the given {@link ILocationDescriptor} from the
+	 * {@link IdeMappingUtils#getSynchronizationPalette() location descriptors palette} is active.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor}
+	 * @return <code>true</code> if the given {@link ILocationDescriptor} from the
+	 *         {@link IdeMappingUtils#getSynchronizationPalette() location descriptors palette} is active,
+	 *         <code>false</code> otherwise
+	 */
+	public static boolean isActive(ILocationDescriptor locationDescriptor) {
+		final boolean res;
+
+		synchronized(LOCATIONS_PALETTE) {
+			final Boolean isActive = LOCATIONS_PALETTE.get(locationDescriptor);
+			res = isActive != null && isActive;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Tells if there is at least one {@link IdeMappingUtils#isActive(ILocationDescriptor) active}
+	 * {@link ILocationDescriptor} in the {@link IdeMappingUtils#getSynchronizationPalette() location
+	 * descriptors palette} .
+	 * 
+	 * @return <code>true</code> if there is at least one {@link IdeMappingUtils#isActive(ILocationDescriptor)
+	 *         active} {@link ILocationDescriptor} in the {@link IdeMappingUtils#getSynchronizationPalette()
+	 *         location descriptors palette}, <code>false</code> otherwise
+	 */
+	public static boolean asActiveLocationDescriptor() {
+		synchronized(LOCATIONS_PALETTE) {
+			return LOCATIONS_PALETTE.values().contains(Boolean.TRUE);
+		}
+	}
+
+	/**
+	 * Gets the {@link List} of {@link ICurrentBaseListener} in a thread safe way.
+	 * 
+	 * @return the {@link List} of {@link ICurrentBaseListener} in a thread safe way
+	 */
+	private static List<ICurrentBaseListener> getCurrentBaseListeners() {
+		synchronized(CURRENT_BASE_LISTENERS) {
+			return new ArrayList<ICurrentBaseListener>(CURRENT_BASE_LISTENERS);
+		}
+	}
+
+	/**
+	 * Adds the given {@link ICurrentBaseListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ICurrentBaseListener} to add
+	 */
+	public static void addCurrentBaseListener(ICurrentBaseListener listener) {
+		synchronized(CURRENT_BASE_LISTENERS) {
+			CURRENT_BASE_LISTENERS.add(listener);
+		}
+	}
+
+	/**
+	 * Removes the given {@link ICurrentBaseListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ICurrentBaseListener} to remove
+	 */
+	public static void removeCurrentBaseListener(ICurrentBaseListener listener) {
+		synchronized(CURRENT_BASE_LISTENERS) {
+			CURRENT_BASE_LISTENERS.remove(listener);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/IMarkerToLocationDescriptor.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/IMarkerToLocationDescriptor.java
new file mode 100644
index 0000000..cac295f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/IMarkerToLocationDescriptor.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.adapter;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+
+/**
+ * Adapts an {@link IMarker} to an {@link ILocationDescriptor}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IMarkerToLocationDescriptor {
+
+	/**
+	 * Gets the {@link ILocationDescriptor} for the given {@link IMarker}.
+	 * 
+	 * @param marker
+	 *            the {@link IMarker} to adapt
+	 * @return the {@link ILocationDescriptor} for the given {@link IMarker} if any, <code>null</code>
+	 *         otherwise
+	 */
+	ILocationDescriptor getAdapter(IMarker marker);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToLocationDescriptorAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToLocationDescriptorAdapterFactory.java
new file mode 100644
index 0000000..03ad3fa
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToLocationDescriptorAdapterFactory.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.adapter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.internal.resources.MarkerManager;
+import org.eclipse.core.internal.resources.Workspace;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.Activator;
+
+/**
+ * Adapts {@link IMarker} to {@link ILocationDescriptor}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@SuppressWarnings("restriction")
+public class MarkerToLocationDescriptorAdapterFactory implements IAdapterFactory {
+
+	/**
+	 * Mapping from {@link IMarkerToLocationDescriptor} to marker type.
+	 */
+	private static final Map<IMarkerToLocationDescriptor, String> ADAPTER_TYPE = new HashMap<IMarkerToLocationDescriptor, String>();
+
+	/**
+	 * The {@link List} of {@link IMarkerToLocationDescriptor} from the more specific marker type to the less
+	 * specific.
+	 */
+	private static final List<IMarkerToLocationDescriptor> ADAPTERS = new ArrayList<IMarkerToLocationDescriptor>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	@SuppressWarnings("unchecked")
+	public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		ILocationDescriptor res = null;
+
+		if (adaptableObject instanceof IMarker) {
+			final IMarker marker = (IMarker)adaptableObject;
+			final MarkerManager manager = ((Workspace)ResourcesPlugin.getWorkspace()).getMarkerManager();
+			try {
+				final String markerType = marker.getType();
+				for (IMarkerToLocationDescriptor adapter : ADAPTERS) {
+					if (manager.isSubtype(markerType, ADAPTER_TYPE.get(adapter))) {
+						res = adapter.getAdapter(marker);
+						if (res != null) {
+							break;
+						}
+					}
+				}
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class<?>[] getAdapterList() {
+		return new Class<?>[] {ILocationDescriptor.class };
+	}
+
+	/**
+	 * registers the given {@link IMarkerToLocationDescriptor} for the given marker type.
+	 * 
+	 * @param adapter
+	 *            the {@link IMarkerToLocationDescriptor}
+	 * @param markerType
+	 *            the marker type
+	 */
+	public static void register(IMarkerToLocationDescriptor adapter, String markerType) {
+		ADAPTER_TYPE.put(adapter, markerType);
+
+		final MarkerManager manager = ((Workspace)ResourcesPlugin.getWorkspace()).getMarkerManager();
+		int i = 0;
+		for (IMarkerToLocationDescriptor registeredAdapter : ADAPTERS) {
+			if (manager.isSubtype(markerType, ADAPTER_TYPE.get(registeredAdapter))) {
+				break;
+			}
+			i++;
+		}
+
+		ADAPTERS.add(i, adapter);
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToTextLocationDescriptor.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToTextLocationDescriptor.java
new file mode 100644
index 0000000..a4487dd
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/MarkerToTextLocationDescriptor.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.adapter;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.text.TextRegion;
+
+/**
+ * Marker to {@link ILocationDescriptor} descriptor.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MarkerToTextLocationDescriptor implements IMarkerToLocationDescriptor {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.adapter.IMarkerToLocationDescriptor#getAdapter(org.eclipse.core.resources.IMarker)
+	 */
+	public ILocationDescriptor getAdapter(IMarker marker) {
+		ILocationDescriptor res = null;
+
+		try {
+			if (marker.isSubtypeOf(IMarker.TEXT)) {
+				final int start = (Integer)marker.getAttribute(IMarker.CHAR_START);
+				final Integer end = (Integer)marker.getAttribute(IMarker.CHAR_END);
+				final String content = MappingUtils.getContent((int)marker.getResource().getLocation()
+						.toFile().length(), ((IFile)marker.getResource()).getContents());
+				// TODO find a way to provide more dynamic container
+				final TextRegion region = new TextRegion(marker.getResource(), content.substring(start, end),
+						start, end);
+				res = IdeMappingUtils.adapt(region, ILocationDescriptor.class);
+			}
+		} catch (CoreException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		} catch (IOException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/TextLocationToMarkerAdapterFactory.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/TextLocationToMarkerAdapterFactory.java
new file mode 100644
index 0000000..72f241b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/adapter/TextLocationToMarkerAdapterFactory.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.adapter;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.ILocationMarker;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.eclipse.intent.mapping.text.ITextLocation;
+
+/**
+ * {@link ITextLocation} to Marker {@link IAdapterFactory}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextLocationToMarkerAdapterFactory implements IAdapterFactory {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+	 */
+	@SuppressWarnings("unchecked")
+	public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		IMarker res;
+
+		if (adaptableObject instanceof ITextLocation) {
+			final ITextLocation textLocation = (ITextLocation)adaptableObject;
+			final IMarker existingMarker = IdeMappingUtils.getMarker(textLocation);
+			if (existingMarker != null) {
+				res = existingMarker;
+			} else {
+				final IFileLocation fileLocation = IdeMappingUtils.getContainingFileLocation(textLocation);
+				final IFile file = (IFile)MappingUtils.getConnectorRegistry().getElement(fileLocation);
+				try {
+					res = file.createMarker(ILocationMarker.TEXT_LOCATION_ID);
+					res.setAttribute(IMarker.CHAR_START, textLocation.getStartOffset());
+					res.setAttribute(IMarker.CHAR_END, textLocation.getEndOffset());
+					res.setAttribute(ILocationMarker.LOCATION_ATTRIBUTE, textLocation);
+				} catch (CoreException e) {
+					res = null;
+					Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+	 */
+	public Class<?>[] getAdapterList() {
+		return new Class[] {IMarker.class };
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/AbstractFileConnectorDelegate.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/AbstractFileConnectorDelegate.java
new file mode 100644
index 0000000..ce1d07d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/AbstractFileConnectorDelegate.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * Abstract {@link IFileConnectorDelegate}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractFileConnectorDelegate implements IFileConnectorDelegate {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#update(org.eclipse.intent.mapping.ide.resource.IFileLocation,
+	 *      org.eclipse.core.resources.IFile)
+	 */
+	public void update(IFileLocation location, IFile element) {
+		initLocation(location.getContainer(), location, element);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getElement(org.eclipse.intent.mapping.ide.resource.IFileLocation)
+	 */
+	public Object getElement(IFileLocation location) {
+		final IFile res = ResourcesPlugin.getWorkspace().getRoot().getFile(Path.fromPortableString(location
+				.getFullPath()));
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileConnectorDelegate.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileConnectorDelegate.java
new file mode 100644
index 0000000..123f107
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileConnectorDelegate.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+
+/**
+ * {@link org.eclipse.core.resources.IFile IFile} connector delegate used by {@link ResourceConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileConnectorDelegate {
+
+	/**
+	 * Gets the handled {@link IFileType}.
+	 * 
+	 * @return the handled {@link IFileType}
+	 */
+	IFileType getFileType();
+
+	/**
+	 * Gets the {@link IFileLocation} type.
+	 * 
+	 * @return the {@link IFileLocation} type
+	 */
+	Class<? extends IFileLocation> getFileLocationType();
+
+	/**
+	 * Initializes the given {@link IFileLocation} with the given {@link IFile}.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}
+	 * @param location
+	 *            the {@link IFileLocation}
+	 * @param element
+	 *            the {@link IFile}
+	 */
+	void initLocation(ILocationContainer container, IFileLocation location, IFile element);
+
+	/**
+	 * Updates the given {@link IFileLocation} with the given {@link IFile}.
+	 * 
+	 * @param location
+	 *            the {@link IFileLocation}
+	 * @param element
+	 *            the {@link IFile}
+	 */
+	void update(IFileLocation location, IFile element);
+
+	/**
+	 * Gets the {@link Object element} located by the given {@link IFileLocation}.
+	 * 
+	 * @param location
+	 *            the {@link IFileLocation}
+	 * @return the {@link Object element} located by the given {@link IFileLocation} if the given
+	 *         {@link IFileLocation} if handled by this {@link IFileConnectorDelegate}, <code>null</code>
+	 *         otherwise
+	 */
+	Object getElement(IFileLocation location);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileDelegateRegistry.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileDelegateRegistry.java
new file mode 100644
index 0000000..d10176b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IFileDelegateRegistry.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import java.util.List;
+
+/**
+ * The {@link IFileConnectorDelegate} registry maintains a {@link List} of active
+ * {@link IFileConnectorDelegate}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileDelegateRegistry {
+
+	/**
+	 * Registers the given {@link IFileConnectorDelegate}.
+	 * 
+	 * @param delegate
+	 *            the {@link IFileConnectorDelegate} to register
+	 */
+	void register(IFileConnectorDelegate delegate);
+
+	/**
+	 * Unregisters the given {@link IFileConnectorDelegate}.
+	 * 
+	 * @param delegate
+	 *            the {@link IFileConnectorDelegate} to register
+	 */
+	void unregister(IFileConnectorDelegate delegate);
+
+	/**
+	 * Gets the {@link List} of {@link IFileDelegateRegistry#register(IFileConnectorDelegate) registered}
+	 * {@link IFileConnectorDelegate}.
+	 * 
+	 * @return the {@link List} of {@link IFileDelegateRegistry#register(IFileConnectorDelegate) registered}
+	 *         {@link IFileConnectorDelegate}
+	 */
+	List<IFileConnectorDelegate> getConnectorDelegates();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IdeTextConnector.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IdeTextConnector.java
new file mode 100644
index 0000000..4c0c9af
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/IdeTextConnector.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import org.eclipse.intent.mapping.text.TextConnector;
+
+/**
+ * Ide {@link TextConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeTextConnector extends TextConnector {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceConnector.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceConnector.java
new file mode 100644
index 0000000..29c98e6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceConnector.java
@@ -0,0 +1,269 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.eclipse.intent.mapping.ide.resource.IResourceLocation;
+
+/**
+ * An {@link IResource} {@link org.eclipse.intent.mapping.connector.IConnector IConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ResourceConnector extends AbstractConnector {
+
+	/**
+	 * The {@link ResourceLocationListener} reacting to workspace changes.
+	 */
+	private final ResourceLocationListener resourceLocationListener;
+
+	/**
+	 * Constructor.
+	 */
+	public ResourceConnector() {
+		resourceLocationListener = new ResourceLocationListener(true, this);
+		Activator.getDefault().setResourceLocationListener(resourceLocationListener);
+	}
+
+	@Override
+	public ILocation getLocation(ILocationContainer container, Object element) {
+		if (element instanceof IResource) {
+			for (ILocation child : container.getContents()) {
+				if (match(child, element)) {
+					return child;
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class, java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		final Class<? extends ILocation> res;
+
+		if (element instanceof IFile) {
+			res = getIFileLocationType((IFile)element);
+		} else if (element instanceof IResource) {
+			res = getType();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the {@link IFileLocation} for the given {@link IFile}.
+	 * 
+	 * @param file
+	 *            the {@link IFile}
+	 * @return the {@link IFileLocation} for the given {@link IFile} if any, <code>null</code> otherwise
+	 */
+	private Class<? extends IFileLocation> getIFileLocationType(IFile file) {
+		Class<? extends IFileLocation> res = null;
+
+		final IFileConnectorDelegate delegate = getDelegate(file);
+		if (delegate != null) {
+			res = delegate.getFileLocationType();
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the {@link IFileConnectorDelegate} for the given {@link IFile}.
+	 * 
+	 * @param file
+	 *            the {@link IFile}
+	 * @return the {@link IFileConnectorDelegate} for the given {@link IFile} if any, <code>null</code>
+	 *         otherwise
+	 */
+	private IFileConnectorDelegate getDelegate(IFile file) {
+		IFileConnectorDelegate res = null;
+
+		if (file.exists()) {
+			try {
+				InputStream contents = file.getContents();
+				final IFileType fileType = MappingUtils.getFileTypeRegistry().getFileTypeFor(contents, file
+						.getName());
+				contents.close();
+
+				if (fileType != null) {
+					for (IFileConnectorDelegate delegate : IdeMappingUtils.getFileConectorDelegateRegistry()
+							.getConnectorDelegates()) {
+						if (fileType.isKindOf(delegate.getFileType().getID())) {
+							res = delegate;
+							break;
+						}
+					}
+				}
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (IOException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+		}
+
+		return res;
+	}
+
+	@Override
+	protected boolean canUpdate(Object element) {
+		final boolean res;
+
+		if (element instanceof IFile) {
+			final IFileConnectorDelegate delegate = getDelegate((IFile)element);
+			res = delegate != null;
+		} else if (element instanceof IResource) {
+			res = true;
+		} else {
+			res = false;
+		}
+
+		return res;
+	}
+
+	@Override
+	protected void update(ILocation location, Object element) {
+		final IResourceLocation toUpdate = (IResourceLocation)location;
+
+		toUpdate.setFullPath(((IResource)element).getFullPath().toPortableString());
+		if (element instanceof IFile) {
+			final IFileConnectorDelegate delegate = getDelegate((IFile)element);
+			if (delegate != null) {
+				delegate.update((IFileLocation)location, (IFile)element);
+			}
+		}
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+		final IResourceLocation toInit = (IResourceLocation)location;
+
+		toInit.setFullPath(((IResource)element).getFullPath().toPortableString());
+		if (element instanceof IFile) {
+			final IFileConnectorDelegate delegate = getDelegate((IFile)element);
+			if (delegate != null) {
+				delegate.initLocation(container, (IFileLocation)location, (IFile)element);
+			}
+		}
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object element) {
+		final IResourceLocation resourceLocation = (IResourceLocation)location;
+		final IResource resource = (IResource)element;
+
+		return resourceLocation.getFullPath().equals(resource.getFullPath().toPortableString());
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		final String res;
+
+		res = ((IResourceLocation)location).getFullPath();
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		final ILocationDescriptor res;
+
+		final Object adapted = adapt(element);
+		if (adapted instanceof IResource) {
+			res = new ObjectLocationDescriptor(base, adapted, ((IResource)adapted).getFullPath().toString());
+			resourceLocationListener.addKnownDescriptor(res);
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	@Override
+	public void dispose(ILocationDescriptor locationDescriptor) {
+		super.dispose(locationDescriptor);
+		resourceLocationListener.removeKnownDescriptor(locationDescriptor);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		final Object res;
+
+		if (location instanceof IFileLocation) {
+			final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(Path.fromPortableString(
+					((IFileLocation)location).getFullPath()));
+			final IFileConnectorDelegate delegate = getDelegate(file);
+			if (delegate != null) {
+				res = delegate.getElement((IFileLocation)location);
+			} else {
+				res = null;
+			}
+		} else {
+			res = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(Path.fromPortableString(
+					((IResourceLocation)location).getFullPath()));
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+	 */
+	public Class<? extends ILocation> getType() {
+		return IResourceLocation.class;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceLocationListener.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceLocationListener.java
new file mode 100644
index 0000000..3bcc42a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/ResourceLocationListener.java
@@ -0,0 +1,374 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+
+/**
+ * An {@link IResourceChangeListener} that update
+ * {@link org.eclipse.intent.mapping.ide.resource.IResourceLocation IResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ResourceLocationListener implements IResourceChangeListener {
+
+	/**
+	 * The "Unable to load mapping base from " message.
+	 */
+	private static final String UNABLE_LISTEN_TO_RESOURCE_LOCATION = "Unable listen to resource location: ";
+
+	/**
+	 * The {@link List} of known {@link ILocationDescriptor}.
+	 */
+	private final List<ILocationDescriptor> knownDescriptors = new ArrayList<ILocationDescriptor>();
+
+	/**
+	 * The
+	 * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#register(org.eclipse.intent.mapping.connector.IConnector)
+	 * registered} {@link ResourceConnector}.
+	 */
+	private final ResourceConnector resourceConnector;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param scan
+	 *            tells if we should scan the workspace
+	 * @param resourceConnector
+	 *            the
+	 *            {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#register(org.eclipse.intent.mapping.connector.IConnector)
+	 *            registered} {@link ResourceConnector}
+	 */
+	public ResourceLocationListener(boolean scan, ResourceConnector resourceConnector) {
+		if (scan) {
+			scan(ResourcesPlugin.getWorkspace().getRoot());
+		}
+		this.resourceConnector = resourceConnector;
+	}
+
+	/**
+	 * Scans the given {@link IContainer} for bases.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 */
+	private void scan(IContainer container) {
+		IResource[] members;
+		final IBase base = IdeMappingUtils.getCurrentBase();
+		if (base != null) {
+			try {
+				members = container.members();
+				for (IResource member : members) {
+					updateLocation(base, member);
+				}
+			} catch (CoreException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+						UNABLE_LISTEN_TO_RESOURCE_LOCATION + e.getMessage(), e));
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
+	 */
+	public void resourceChanged(IResourceChangeEvent event) {
+		final IBase base = IdeMappingUtils.getCurrentBase();
+		if (event.getDelta() != null && base != null) {
+			walkDelta(event.getDelta(), new HashMap<IPath, IResource>(), base);
+		}
+	}
+
+	/**
+	 * Walks the {@link IResourceDelta} tree.
+	 * 
+	 * @param delta
+	 *            the root {@link IResourceDelta}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 * @param base
+	 *            the current {@link IBase}
+	 */
+	private void walkDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources, IBase base) {
+		processDelta(delta, movedResources, base);
+		for (IResourceDelta child : delta.getAffectedChildren()) {
+			walkDelta(child, movedResources, base);
+		}
+	}
+
+	/**
+	 * Processes the given {@link IResourceDelta} by
+	 * {@link WorkspaceListener#fireChange(fr.obeo.dsl.workspace.listener.change.IChange) firing}
+	 * {@link fr.obeo.dsl.workspace.listener.change.IChange IChange}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} to process
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 * @param base
+	 *            the current {@link IBase}
+	 */
+	private void processDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources, IBase base) {
+		switch (delta.getKind()) {
+			case IResourceDelta.ADDED:
+				processAddedDelta(delta, movedResources, base);
+				break;
+
+			case IResourceDelta.REMOVED:
+				processRemovedDelta(delta, movedResources, base);
+				break;
+
+			case IResourceDelta.CHANGED:
+				processChangedDelta(delta, base);
+				break;
+
+			default:
+				break;
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#CHANGED changed}
+	 * {@link IResourceDelta#getKind() kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#CHANGED changed}
+	 *            {@link IResourceDelta#getKind() kind}
+	 * @param base
+	 *            the current {@link IBase}
+	 */
+	private void processChangedDelta(IResourceDelta delta, IBase base) {
+		if ((delta.getFlags() & IResourceDelta.OPEN) != 0) {
+			if (delta.getResource().isAccessible()) {
+				updateLocation(base, delta.getResource());
+			} else {
+				// we can't track changes but the location is still valid for the moment
+			}
+		} else if ((delta.getFlags() & IResourceDelta.DESCRIPTION) != 0) {
+			// nothing to do here
+		} else if ((delta.getFlags() & IResourceDelta.CONTENT) != 0) {
+			updateLocation(base, delta.getResource());
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#REMOVED removed}
+	 * {@link IResourceDelta#getKind() kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#REMOVED removed}
+	 *            {@link IResourceDelta#getKind() kind}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 * @param base
+	 *            the current {@link IBase}
+	 */
+	private void processRemovedDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources,
+			IBase base) {
+		if ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
+			final IResource target = movedResources.get(delta.getMovedToPath());
+			if (target != null) {
+				moveResource(base, delta.getResource(), target);
+			} else {
+				movedResources.put(delta.getResource().getFullPath(), delta.getResource());
+			}
+		} else {
+			// TODO we implicitly decide to have a flat structure of location here... we probably don't want
+			// to do
+			// that
+			final ILocation location = resourceConnector.getLocation(base, delta.getResource());
+			if (location != null) {
+				try {
+					MappingUtils.markAsDeletedOrDelete(location, "the resource " + delta.getResource()
+							.getFullPath().toString() + " has been deleted.");
+				} catch (InstantiationException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				} catch (IllegalAccessException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				} catch (ClassNotFoundException e) {
+					Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+							.getMessage(), e));
+				}
+			}
+		}
+	}
+
+	/**
+	 * Process {@link IResourceDelta} with {@link IResourceDelta#ADDED added} {@link IResourceDelta#getKind()
+	 * kind}.
+	 * 
+	 * @param delta
+	 *            the {@link IResourceDelta} with {@link IResourceDelta#ADDED added}
+	 *            {@link IResourceDelta#getKind() kind}
+	 * @param movedResources
+	 *            mapping of moved {@link IResource}
+	 * @param base
+	 *            the current {@link IBase}
+	 */
+	private void processAddedDelta(IResourceDelta delta, HashMap<IPath, IResource> movedResources,
+			IBase base) {
+		if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
+			final IResource source = movedResources.get(delta.getMovedFromPath());
+			if (source != null) {
+				moveResource(base, source, delta.getResource());
+			} else {
+				movedResources.put(delta.getResource().getFullPath(), delta.getResource());
+			}
+		} else {
+			updateLocation(base, delta.getResource());
+		}
+	}
+
+	/**
+	 * Updates the given {@link IResource}.
+	 * 
+	 * @param base
+	 *            the current {@link IBase}
+	 * @param resource
+	 *            the changed {@link IResource}
+	 */
+	private void updateLocation(IBase base, IResource resource) {
+		// TODO we implicitly decide to have a flat structure of location here... we probably don't want to do
+		// that
+		final ILocation location = resourceConnector.getLocation(base, resource);
+		if (location != null && !location.isMarkedAsDeleted()) {
+			resourceConnector.updateLocation(location, resource);
+			try {
+				MappingUtils.markAsChanged(location, "Content changed.");
+			} catch (InstantiationException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (IllegalAccessException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (ClassNotFoundException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+		}
+		updateKnownDescriptors(resource);
+	}
+
+	/**
+	 * Handles a {@link IResource} move.
+	 * 
+	 * @param base
+	 *            the current {@link IBase}
+	 * @param source
+	 *            the source {@link IResource}
+	 * @param target
+	 *            the target {@link IResource}
+	 */
+	private void moveResource(IBase base, IResource source, IResource target) {
+		// TODO we implicitly decide to have a flat structure of location here... we probably don't want to do
+		// that
+		final ILocation location = resourceConnector.getLocation(base, source);
+		if (location != null && !location.isMarkedAsDeleted()) {
+			resourceConnector.updateLocation(location, target);
+			try {
+				MappingUtils.markAsChanged(location, String.format("%s moved to %s", source.getFullPath()
+						.toPortableString(), target.getFullPath().toPortableString()));
+			} catch (InstantiationException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (IllegalAccessException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			} catch (ClassNotFoundException e) {
+				Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e
+						.getMessage(), e));
+			}
+		}
+		moveKnownDescriptor(source, target);
+	}
+
+	/**
+	 * Updates known {@link ILocationDescriptor} for the given {@link IResource}.
+	 * 
+	 * @param resource
+	 *            the {@link IResource}
+	 */
+	private void updateKnownDescriptors(IResource resource) {
+		synchronized(knownDescriptors) {
+			for (ILocationDescriptor descriptor : knownDescriptors) {
+				if (resource.equals(descriptor.getElement())) {
+					descriptor.update(resource);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Move known {@link ILocationDescriptor} from the given source to the given target.
+	 * 
+	 * @param source
+	 *            the source
+	 * @param target
+	 *            the target
+	 */
+	private void moveKnownDescriptor(IResource source, IResource target) {
+		synchronized(knownDescriptors) {
+			for (ILocationDescriptor descriptor : knownDescriptors) {
+				if (source.equals(descriptor.getElement())) {
+					descriptor.update(target);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Adds the given {@link ILocationDescriptor}.
+	 * 
+	 * @param descriptor
+	 *            the {@link ILocationDescriptor} to add
+	 */
+	public void addKnownDescriptor(ILocationDescriptor descriptor) {
+		synchronized(knownDescriptors) {
+			knownDescriptors.add(descriptor);
+		}
+	}
+
+	/**
+	 * Removes the given {@link ILocationDescriptor}.
+	 * 
+	 * @param descriptor
+	 *            the {@link ILocationDescriptor} to remove
+	 */
+	public void removeKnownDescriptor(ILocationDescriptor descriptor) {
+		synchronized(knownDescriptors) {
+			knownDescriptors.remove(descriptor);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/TextFileConnectorDelegate.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/TextFileConnectorDelegate.java
new file mode 100644
index 0000000..ca99e99
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/connector/TextFileConnectorDelegate.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.connector;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.eclipse.intent.mapping.ide.resource.ITextFileLocation;
+import org.eclipse.intent.mapping.text.TextConnector.TextContainerHelper;
+
+/**
+ * {@link ITextFileLocation} delegate.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextFileConnectorDelegate extends AbstractFileConnectorDelegate {
+
+	/**
+	 * The {@link IFileType}.
+	 */
+	private static final IFileType FILE_TYPE = MappingUtils.getFileTypeRegistry().getFileType(
+			IContentTypeManager.CT_TEXT);
+
+	/**
+	 * The {@link TextContainerHelper}.
+	 */
+	private final TextContainerHelper textContainerHelper = new TextContainerHelper();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getFileType()
+	 */
+	public IFileType getFileType() {
+		return FILE_TYPE;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#getFileLocationType()
+	 */
+	public Class<? extends IFileLocation> getFileLocationType() {
+		return ITextFileLocation.class;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate#initLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      org.eclipse.intent.mapping.ide.resource.IFileLocation, org.eclipse.core.resources.IFile)
+	 */
+	public void initLocation(ILocationContainer container, IFileLocation location, IFile element) {
+		try {
+			final String text = MappingUtils.getContent(element.getLocation().toFile(), element.getCharset());
+			textContainerHelper.updateTextContainer(container, (ITextFileLocation)location, text);
+		} catch (CoreException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		} catch (IOException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		} catch (InstantiationException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		} catch (IllegalAccessException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		} catch (ClassNotFoundException e) {
+			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(),
+					e));
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/connector/FileDelegateRegistry.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/connector/FileDelegateRegistry.java
new file mode 100644
index 0000000..dac7f92
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/connector/FileDelegateRegistry.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.internal.connector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry;
+
+/**
+ * The default implementation of {@link IFileDelegateRegistry}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FileDelegateRegistry implements IFileDelegateRegistry {
+
+	/**
+	 * The {@link List} of {@link FileDelegateRegistry#register(IFileConnectorDelegate) registered}
+	 * {@link IFileConnectorDelegate}.
+	 */
+	private final List<IFileConnectorDelegate> connectorDelegates = Collections.synchronizedList(
+			new ArrayList<IFileConnectorDelegate>());
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry#register(org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate)
+	 */
+	public void register(IFileConnectorDelegate delegate) {
+		if (delegate != null) {
+			synchronized(connectorDelegates) {
+				int index = 0;
+				boolean added = false;
+				for (IFileConnectorDelegate connectorDelegate : connectorDelegates) {
+					if (delegate.getFileType().isKindOf(connectorDelegate.getFileType().getID())) {
+						connectorDelegates.add(index, delegate);
+						added = true;
+						break;
+					} else {
+						index++;
+					}
+				}
+				if (!added) {
+					connectorDelegates.add(index, delegate);
+				}
+			}
+		} else {
+			throw new IllegalArgumentException("IFileConnectorDelegate can't be null.");
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry#unregister(org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate)
+	 */
+	public void unregister(IFileConnectorDelegate delegate) {
+		connectorDelegates.remove(delegate);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.ide.connector.IFileDelegateRegistry#getConnectorDelegates()
+	 */
+	public List<IFileConnectorDelegate> getConnectorDelegates() {
+		synchronized(connectorDelegates) {
+			return Collections.unmodifiableList(connectorDelegates);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/content/IdeFileTypeRegistry.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/content/IdeFileTypeRegistry.java
new file mode 100644
index 0000000..9314443
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/internal/content/IdeFileTypeRegistry.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.internal.content;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.content.IFileTypeProvider;
+import org.eclipse.intent.mapping.content.IFileTypeRegistry;
+import org.eclipse.intent.mapping.internal.content.FileType;
+import org.eclipse.intent.mapping.internal.content.FileTypeRegistry;
+
+/**
+ * Ide implementation of {@link FileTypeRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeFileTypeRegistry implements IFileTypeRegistry {
+
+	/**
+	 * Delegating {@link IFileTypeRegistry}.
+	 */
+	private final IFileTypeRegistry registry;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param registry
+	 *            the delegating {@link IFileTypeRegistry}
+	 */
+	public IdeFileTypeRegistry(IFileTypeRegistry registry) {
+		this.registry = registry;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileTypeProviders()
+	 */
+	public List<IFileTypeProvider> getFileTypeProviders() {
+		return registry.getFileTypeProviders();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#registerFileType(java.lang.String,
+	 *      java.util.Set)
+	 */
+	public void registerFileType(String typeID, Set<String> suprTypeIDs) {
+		registry.registerFileType(typeID, suprTypeIDs);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#unregisterFileType(java.lang.String)
+	 */
+	public void unregisterFileType(String typeID) {
+		registry.unregisterFileType(typeID);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileType(java.lang.String)
+	 */
+	public IFileType getFileType(String typeID) {
+		final IFileType res;
+
+		final IFileType delegateFileType = registry.getFileType(typeID);
+		if (delegateFileType == null) {
+			final IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+			final IContentType contentType = contentTypeManager.getContentType(typeID);
+			if (contentType != null) {
+				res = new FileType(contentType.getId());
+			} else {
+				res = null;
+			}
+		} else {
+			res = delegateFileType;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @throws IOException
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileTypeFor(java.io.InputStream,
+	 *      java.lang.String)
+	 */
+	public IFileType getFileTypeFor(InputStream contents, String name) throws IOException {
+		final IFileType res;
+
+		final IFileType delegateFileType = registry.getFileTypeFor(contents, name);
+		if (delegateFileType == null) {
+			final IContentType contentType = Platform.getContentTypeManager().findContentTypeFor(contents,
+					name);
+			if (contentType != null) {
+				res = new FileType(contentType.getId());
+			} else {
+				res = null;
+			}
+		} else {
+			res = delegateFileType;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#isKindOf(java.lang.String, java.lang.String)
+	 */
+	public boolean isKindOf(String typeID, String superTypeID) {
+		final boolean res;
+
+		if (registry.isKindOf(typeID, superTypeID)) {
+			res = true;
+		} else {
+			final IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+			final IContentType contentType = contentTypeManager.getContentType(typeID);
+			final IContentType superContentType = contentTypeManager.getContentType(superTypeID);
+			res = contentType != null && contentType.isKindOf(superContentType);
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the delegating {@link IFileTypeRegistry}.
+	 * 
+	 * @return the delegating {@link IFileTypeRegistry}
+	 */
+	public IFileTypeRegistry getDelegate() {
+		return registry;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IFileLocation.java
new file mode 100644
index 0000000..00e18df
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IFileLocation.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.resource;
+
+/**
+ * An {@link org.eclipse.core.resources.IFile IFile} {@link org.eclipse.intent.mapping.base.ILocation
+ * ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileLocation extends IResourceLocation {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IResourceLocation.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IResourceLocation.java
new file mode 100644
index 0000000..70c9df6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/IResourceLocation.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.resource;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * An {@link org.eclipse.core.resources.IResource IResource} {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IResourceLocation extends ILocation {
+
+	/**
+	 * Get the {@link org.eclipse.core.resources.IResource#getFullPath() full path}
+	 * {@link org.eclipse.core.runtime.IPath#toPortableString() portable string} of the located
+	 * {@link org.eclipse.core.resources.IResource IResource}.
+	 * 
+	 * @return the {@link org.eclipse.core.resources.IResource#getFullPath() full path}
+	 *         {@link org.eclipse.core.runtime.IPath#toPortableString() portable string} of the located
+	 *         {@link org.eclipse.core.resources.IResource IResource}
+	 */
+	String getFullPath();
+
+	/**
+	 * Set the {@link org.eclipse.core.resources.IResource#getFullPath() full path}
+	 * {@link org.eclipse.core.runtime.IPath#toPortableString() portable string} of the located
+	 * {@link org.eclipse.core.resources.IResource IResource}.
+	 * 
+	 * @param path
+	 *            the {@link org.eclipse.core.resources.IResource#getFullPath() full path}
+	 *            {@link org.eclipse.core.runtime.IPath#toPortableString() portable string} of the
+	 *            {@link org.eclipse.core.resources.IResource IResource} to locate
+	 */
+	void setFullPath(String path);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/ITextFileLocation.java b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/ITextFileLocation.java
new file mode 100644
index 0000000..c16a443
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.ide/src/org/eclipse/intent/mapping/ide/resource/ITextFileLocation.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.resource;
+
+import org.eclipse.intent.mapping.text.ITextContainer;
+
+/**
+ * Text {@link IFileLocation}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ITextFileLocation extends IFileLocation, ITextContainer {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.checkstyle
new file mode 100644
index 0000000..b3e8ea9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.classpath b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.classpath
new file mode 100644
index 0000000..098194c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.project b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.project
new file mode 100644
index 0000000..59fa0e9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.sirius.ide.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8b92e11
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..08338a7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;fr;java;javax;org;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2303721
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mapping Sirius Integartion
+Bundle-SymbolicName: org.eclipse.intent.mapping.sirius.ide.ui;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.core.expressions,
+ org.eclipse.core.contenttype,
+ org.eclipse.emf.ecore,
+ org.eclipse.sirius,
+ org.eclipse.intent.mapping.ide.ui,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.intent.mapping
+Export-Package: org.eclipse.intent.mapping.sirius.ide.ui.command
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/build.properties b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/plugin.xml b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/plugin.xml
new file mode 100644
index 0000000..37e9293
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/plugin.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.intent.mapping.ide.ui.menu?after=additions">
+         <command
+               commandId="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsSource"
+               label="Link semantic element location as master source"
+               style="push"
+               tooltip="Links the current location as master source with activated locations from the synchronization palette">
+            <visibleWhen
+                  checkEnabled="false">
+               <with
+                     variable="selection">
+                  <iterate
+                        ifEmpty="false"
+                        operator="and">
+                     <adapt
+                           type="org.eclipse.emf.ecore.EObject">
+                        <and>
+                           <instanceof
+                                 value="org.eclipse.sirius.viewpoint.DSemanticDecorator">
+                           </instanceof>
+                           <test
+                                 forcePluginActivation="true"
+                                 property="org.eclipse.intent.mapping.sirius.ide.ui.semanticElementIsLocation">
+                           </test>
+                        </and>
+                     </adapt>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+         <command
+               commandId="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsTarget"
+               label="Link semantic element location as slave target"
+               style="push"
+               tooltip="Links the current location as slave target with activated locations from the synchronization palette">
+            <visibleWhen
+                  checkEnabled="false">
+               <with
+                     variable="selection">
+                  <iterate
+                        ifEmpty="false"
+                        operator="and">
+                     <adapt
+                           type="org.eclipse.emf.ecore.EObject">
+                        <and>
+                           <instanceof
+                                 value="org.eclipse.sirius.viewpoint.DSemanticDecorator">
+                           </instanceof>
+                           <test
+                                 forcePluginActivation="true"
+                                 property="org.eclipse.intent.mapping.sirius.ide.ui.semanticElementIsLocation">
+                           </test>
+                        </and>
+                     </adapt>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+         <command
+               commandId="org.eclipse.intent.mapping.sirius.ide.ui.addSemanticElementToSynchronizationPalette"
+               label="Add semantic element location to synchronization palette"
+               style="push"
+               tooltip="Adds the selected location to synchronization palette">
+            <visibleWhen
+                  checkEnabled="false">
+               <with
+                     variable="selection">
+                  <iterate
+                        ifEmpty="false"
+                        operator="and">
+                     <adapt
+                           type="org.eclipse.emf.ecore.EObject">
+                        <and>
+                           <instanceof
+                                 value="org.eclipse.sirius.viewpoint.DSemanticDecorator">
+                           </instanceof>
+                           <test
+                                 forcePluginActivation="true"
+                                 property="org.eclipse.intent.mapping.sirius.ide.ui.semanticElementIsLocation">
+                           </test>
+                        </and>
+                     </adapt>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+         <command
+               commandId="org.eclipse.intent.mapping.sirius.ide.ui.removeSemanticElementFromSynchronizationPalette"
+               label="Remove semantic element location from synchronization palette"
+               style="push"
+               tooltip="Removes the selected location from the synchronization palette">
+            <visibleWhen
+                  checkEnabled="false">
+               <with
+                     variable="selection">
+                  <iterate
+                        ifEmpty="false"
+                        operator="and">
+                     <adapt
+                           type="org.eclipse.emf.ecore.EObject">
+                        <and>
+                           <instanceof
+                                 value="org.eclipse.sirius.viewpoint.DSemanticDecorator">
+                           </instanceof>
+                           <test
+                                 forcePluginActivation="true"
+                                 property="org.eclipse.intent.mapping.sirius.ide.ui.semanticElementIsLocation">
+                           </test>
+                        </and>
+                     </adapt>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.intent.mapping.sirius.ide.ui.command.AddSemanticElementToSynchronizationPaletteHandler"
+            commandId="org.eclipse.intent.mapping.sirius.ide.ui.addSemanticElementToSynchronizationPalette">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.sirius.ide.ui.command.RemoveSemanticElementFromSynchronizationPaletteHandler"
+            commandId="org.eclipse.intent.mapping.sirius.ide.ui.removeSemanticElementFromSynchronizationPalette">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.sirius.ide.ui.command.LinkSemanticElementAsSource"
+            commandId="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsSource">
+      </handler>
+      <handler
+            class="org.eclipse.intent.mapping.sirius.ide.ui.command.LinkSemanticElementAsTarget"
+            commandId="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsTarget">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Adds the selected semantic element location to synchronization palette"
+            id="org.eclipse.intent.mapping.sirius.ide.ui.addSemanticElementToSynchronizationPalette"
+            name="Add semantic element location to synchronization palette">
+      </command>
+      <command
+            description="Removes the selected semantic element location from the synchronization palette"
+            id="org.eclipse.intent.mapping.sirius.ide.ui.removeSemanticElementFromSynchronizationPalette"
+            name="Remove semantic element location from synchronization palette">
+      </command>
+      <command
+            description="Links the selected semantic element location as master source with activated locations from the synchronization palette"
+            id="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsSource"
+            name="Link semantic element as master source">
+      </command>
+      <command
+            description="Links the selected semantic element location as slave target with activated locations from the synchronization palette"
+            id="org.eclipse.intent.mapping.sirius.ide.ui.linkSemanticElementAsTarget"
+            name="Link semantic element as slave target">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <file-association
+            content-type="org.eclipse.emf.ecore.xmi"
+            file-extensions="aird">
+      </file-association>
+   </extension>
+   <extension
+         point="org.eclipse.core.expressions.propertyTesters">
+      <propertyTester
+            class="org.eclipse.intent.mapping.sirius.ide.ui.command.SemanticElementIsLocationPropertyTester"
+            id="org.eclipse.intent.mapping.sirius.ide.ui.semanticElementIsLocation"
+            namespace="org.eclipse.intent.mapping.sirius.ide.ui"
+            properties="semanticElementIsLocation"
+            type="java.lang.Object">
+      </propertyTester>
+   </extension>
+</plugin>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/pom.xml b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/pom.xml
new file mode 100644
index 0000000..a78f6f0
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.sirius.ide.ui</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping IDE UI</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/AddSemanticElementToSynchronizationPaletteHandler.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/AddSemanticElementToSynchronizationPaletteHandler.java
new file mode 100644
index 0000000..4269430
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/AddSemanticElementToSynchronizationPaletteHandler.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.intent.mapping.ide.ui.command.AddToSynchronizationPaletteHandler;
+
+/**
+ * Adds selected semantic {@link org.eclipse.intent.mapping.base.ILocationDescriptor ILocationDescriptor} to
+ * the {@link org.eclipse.intent.mapping.ide.IdeMappingUtils#getSynchronizationPalette() synchronization
+ * palette}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class AddSemanticElementToSynchronizationPaletteHandler extends AddToSynchronizationPaletteHandler {
+
+	@Override
+	protected Object getElementFromSelectedObject(Object selected) {
+		return SiriusMappingUtils.getSemanticElementFromSelectedObject(selected);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsSource.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsSource.java
new file mode 100644
index 0000000..59dfa5f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsSource.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.intent.mapping.ide.ui.command.LinkAsSource;
+
+/**
+ * Links the selection semantic elements as {@link org.eclipse.intent.mapping.base.ILink#getSource() source}
+ * of the active synchronization palette.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LinkSemanticElementAsSource extends LinkAsSource {
+
+	@Override
+	protected Object getElementFromSelectedObject(Object selected) {
+		return SiriusMappingUtils.getSemanticElementFromSelectedObject(selected);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsTarget.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsTarget.java
new file mode 100644
index 0000000..5edde9f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/LinkSemanticElementAsTarget.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.intent.mapping.ide.ui.command.LinkAsTarget;
+
+/**
+ * Links the selection semantic elements as {@link org.eclipse.intent.mapping.base.ILink#getTarget() target}
+ * of the active synchronization palette.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LinkSemanticElementAsTarget extends LinkAsTarget {
+
+	@Override
+	protected Object getElementFromSelectedObject(Object selected) {
+		return SiriusMappingUtils.getSemanticElementFromSelectedObject(selected);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/RemoveSemanticElementFromSynchronizationPaletteHandler.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/RemoveSemanticElementFromSynchronizationPaletteHandler.java
new file mode 100644
index 0000000..b70eec7
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/RemoveSemanticElementFromSynchronizationPaletteHandler.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.intent.mapping.ide.ui.command.RemoveFromSynchronizationPaletteHandler;
+
+/**
+ * Removes selected semantic elements {@link org.eclipse.intent.mapping.base.ILocationDescriptor
+ * ILocationDescriptor} from the
+ * {@link org.eclipse.intent.mapping.ide.IdeMappingUtils#getSynchronizationPalette() synchronization palette}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class RemoveSemanticElementFromSynchronizationPaletteHandler extends RemoveFromSynchronizationPaletteHandler {
+
+	@Override
+	protected Object getElementFromSelectedObject(Object selected) {
+		return SiriusMappingUtils.getSemanticElementFromSelectedObject(selected);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SemanticElementIsLocationPropertyTester.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SemanticElementIsLocationPropertyTester.java
new file mode 100644
index 0000000..62af12a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SemanticElementIsLocationPropertyTester.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.sirius.viewpoint.DSemanticDecorator;
+
+/**
+ * Tests if the {@link DSemanticDecorator}'s {@link DSemanticDecorator#getTarget() semantic element} can be
+ * located.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class SemanticElementIsLocationPropertyTester extends PropertyTester {
+
+	@Override
+	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+		final boolean res;
+
+		if (receiver instanceof DSemanticDecorator) {
+			final EObject element = ((DSemanticDecorator)receiver).getTarget();
+			final ILocationDescriptor locationDescriptor = IdeMappingUtils.adapt(element,
+					ILocationDescriptor.class);
+			if (locationDescriptor != null) {
+				locationDescriptor.dispose();
+				res = true;
+			} else {
+				res = false;
+			}
+		} else {
+			res = false;
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SiriusMappingUtils.java b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SiriusMappingUtils.java
new file mode 100644
index 0000000..e5b4043
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping.sirius.ide.ui/src/org/eclipse/intent/mapping/sirius/ide/ui/command/SiriusMappingUtils.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.sirius.ide.ui.command;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.sirius.viewpoint.DSemanticDecorator;
+
+/**
+ * Utility class for Sirius mapping.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class SiriusMappingUtils {
+
+	/**
+	 * Constructor.
+	 */
+	private SiriusMappingUtils() {
+		// nothing to do here
+	}
+
+	/**
+	 * Gets the {@link DSemanticDecorator#getTarget() semantic element} from the given selected {@link Object}
+	 * .
+	 * 
+	 * @param selected
+	 *            the selected {@link Object}
+	 * @return the {@link DSemanticDecorator#getTarget() semantic element} from the given selected
+	 *         {@link Object} if any, <code>null</code> otherwise
+	 */
+	public static Object getSemanticElementFromSelectedObject(Object selected) {
+		final Object res;
+
+		final EObject eObject = IdeMappingUtils.adapt(selected, EObject.class);
+		if (eObject instanceof DSemanticDecorator) {
+			res = ((DSemanticDecorator)eObject).getTarget();
+		} else {
+			res = null;
+		}
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/.checkstyle b/mapping/plugins/org.eclipse.intent.mapping/.checkstyle
new file mode 100644
index 0000000..b3e8ea9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/plugins/org.eclipse.intent.mapping/.classpath b/mapping/plugins/org.eclipse.intent.mapping/.classpath
new file mode 100644
index 0000000..530efee
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="google-diff-match-patch"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/plugins/org.eclipse.intent.mapping/.project b/mapping/plugins/org.eclipse.intent.mapping/.project
new file mode 100644
index 0000000..3f83280
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.core.prefs b/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.ui.prefs b/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..9c9d139
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;name;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/plugins/org.eclipse.intent.mapping/META-INF/MANIFEST.MF b/mapping/plugins/org.eclipse.intent.mapping/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c5d76ee
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mapper
+Bundle-SymbolicName: org.eclipse.intent.mapping
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.intent.mapping,
+ org.eclipse.intent.mapping.base,
+ org.eclipse.intent.mapping.connector,
+ org.eclipse.intent.mapping.content,
+ org.eclipse.intent.mapping.internal.base;x-friends:="org.eclipse.intent.mapping.tests",
+ org.eclipse.intent.mapping.internal.connector,
+ org.eclipse.intent.mapping.internal.content,
+ org.eclipse.intent.mapping.text
diff --git a/mapping/plugins/org.eclipse.intent.mapping/build.properties b/mapping/plugins/org.eclipse.intent.mapping/build.properties
new file mode 100644
index 0000000..5992857
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/build.properties
@@ -0,0 +1,4 @@
+source.. = src/,\
+           google-diff-match-patch/
+bin.includes = META-INF/,\
+               .
diff --git a/mapping/plugins/org.eclipse.intent.mapping/google-diff-match-patch/name/fraser/neil/plaintext/diff_match_patch.java b/mapping/plugins/org.eclipse.intent.mapping/google-diff-match-patch/name/fraser/neil/plaintext/diff_match_patch.java
new file mode 100644
index 0000000..753de1f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/google-diff-match-patch/name/fraser/neil/plaintext/diff_match_patch.java
@@ -0,0 +1,2514 @@
+/*
+ * Diff Match and Patch
+ *
+ * Copyright 2006 Google Inc.
+ * http://code.google.com/p/google-diff-match-patch/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package name.fraser.neil.plaintext;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Stack;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/*
+ * Functions for diff, match and patch.
+ * Computes the difference between two texts to create a patch.
+ * Applies the patch onto another text, allowing for errors.
+ *
+ * @author fraser@google.com (Neil Fraser)
+ */
+
+/**
+ * Class containing the diff, match and patch methods. Also contains the behavior settings.
+ * <p>
+ * <b>Note :</b> This is a copy of the diff_match_patch class
+ * https://code.google.com/p/google-diff-match-patch
+ * /source/browse/trunk/java/name/fraser/neil/plaintext/diff_match_patch.java?spec=svn89&r=106
+ * </p>
+ * Related CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=7404
+ */
+// CHECKSTYLE:OFF
+public class diff_match_patch {
+
+	// Defaults.
+	// Set these on your diff_match_patch instance to override the defaults.
+
+	/**
+	 * Number of seconds to map a diff before giving up (0 for infinity).
+	 */
+	public float Diff_Timeout = 1.0f;
+
+	/**
+	 * Cost of an empty edit operation in terms of edit characters.
+	 */
+	public short Diff_EditCost = 4;
+
+	/**
+	 * At what point is no match declared (0.0 = perfection, 1.0 = very loose).
+	 */
+	public float Match_Threshold = 0.5f;
+
+	/**
+	 * How far to search for a match (0 = exact location, 1000+ = broad match). A match this many characters
+	 * away from the expected location will add 1.0 to the score (0.0 is a perfect match).
+	 */
+	public int Match_Distance = 1000;
+
+	/**
+	 * When deleting a large block of text (over ~64 characters), how close do the contents have to be to
+	 * match the expected contents. (0.0 = perfection, 1.0 = very loose). Note that Match_Threshold controls
+	 * how closely the end points of a delete need to match.
+	 */
+	public float Patch_DeleteThreshold = 0.5f;
+
+	/**
+	 * Chunk size for context length.
+	 */
+	public short Patch_Margin = 4;
+
+	/**
+	 * The number of bits in an int.
+	 */
+	private short Match_MaxBits = 32;
+
+	/**
+	 * Internal class for returning results from diff_linesToChars(). Other less paranoid languages just use a
+	 * three-element array.
+	 */
+	protected static class LinesToCharsResult {
+		protected String chars1;
+
+		protected String chars2;
+
+		protected List<String> lineArray;
+
+		protected LinesToCharsResult(String chars1, String chars2, List<String> lineArray) {
+			this.chars1 = chars1;
+			this.chars2 = chars2;
+			this.lineArray = lineArray;
+		}
+	}
+
+	// DIFF FUNCTIONS
+
+	/**
+	 * The data structure representing a diff is a Linked list of Diff objects: {Diff(Operation.DELETE,
+	 * "Hello"), Diff(Operation.INSERT, "Goodbye"), Diff(Operation.EQUAL, " world.")} which means: delete
+	 * "Hello", add "Goodbye" and keep " world."
+	 */
+	public enum Operation {
+		DELETE, INSERT, EQUAL
+	}
+
+	/**
+	 * Find the differences between two texts. Run a faster, slightly less optimal diff. This method allows
+	 * the 'checklines' of diff_main() to be optional. Most of the time checklines is wanted, so default to
+	 * true.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @return Linked List of Diff objects.
+	 */
+	public LinkedList<Diff> diff_main(String text1, String text2) {
+		return diff_main(text1, text2, true);
+	}
+
+	/**
+	 * Find the differences between two texts.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param checklines
+	 *            Speedup flag. If false, then don't run a line-level diff first to identify the changed
+	 *            areas. If true, then run a faster slightly less optimal diff.
+	 * @return Linked List of Diff objects.
+	 */
+	public LinkedList<Diff> diff_main(String text1, String text2, boolean checklines) {
+		// Set a deadline by which time the diff must be complete.
+		long deadline;
+		if (Diff_Timeout <= 0) {
+			deadline = Long.MAX_VALUE;
+		} else {
+			deadline = System.currentTimeMillis() + (long)(Diff_Timeout * 1000);
+		}
+		return diff_main(text1, text2, checklines, deadline);
+	}
+
+	/**
+	 * Find the differences between two texts. Simplifies the problem by stripping any common prefix or suffix
+	 * off the texts before diffing.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param checklines
+	 *            Speedup flag. If false, then don't run a line-level diff first to identify the changed
+	 *            areas. If true, then run a faster slightly less optimal diff.
+	 * @param deadline
+	 *            Time when the diff should be complete by. Used internally for recursive calls. Users should
+	 *            set DiffTimeout instead.
+	 * @return Linked List of Diff objects.
+	 */
+	private LinkedList<Diff> diff_main(String text1, String text2, boolean checklines, long deadline) {
+		// Check for null inputs.
+		if (text1 == null || text2 == null) {
+			throw new IllegalArgumentException("Null inputs. (diff_main)");
+		}
+
+		// Check for equality (speedup).
+		LinkedList<Diff> diffs;
+		if (text1.equals(text2)) {
+			diffs = new LinkedList<Diff>();
+			if (text1.length() != 0) {
+				diffs.add(new Diff(Operation.EQUAL, text1));
+			}
+			return diffs;
+		}
+
+		// Trim off common prefix (speedup).
+		int commonlength = diff_commonPrefix(text1, text2);
+		String commonprefix = text1.substring(0, commonlength);
+		text1 = text1.substring(commonlength);
+		text2 = text2.substring(commonlength);
+
+		// Trim off common suffix (speedup).
+		commonlength = diff_commonSuffix(text1, text2);
+		String commonsuffix = text1.substring(text1.length() - commonlength);
+		text1 = text1.substring(0, text1.length() - commonlength);
+		text2 = text2.substring(0, text2.length() - commonlength);
+
+		// Compute the diff on the middle block.
+		diffs = diff_compute(text1, text2, checklines, deadline);
+
+		// Restore the prefix and suffix.
+		if (commonprefix.length() != 0) {
+			diffs.addFirst(new Diff(Operation.EQUAL, commonprefix));
+		}
+		if (commonsuffix.length() != 0) {
+			diffs.addLast(new Diff(Operation.EQUAL, commonsuffix));
+		}
+
+		diff_cleanupMerge(diffs);
+		return diffs;
+	}
+
+	/**
+	 * Find the differences between two texts. Assumes that the texts do not have any common prefix or suffix.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param checklines
+	 *            Speedup flag. If false, then don't run a line-level diff first to identify the changed
+	 *            areas. If true, then run a faster slightly less optimal diff.
+	 * @param deadline
+	 *            Time when the diff should be complete by.
+	 * @return Linked List of Diff objects.
+	 */
+	private LinkedList<Diff> diff_compute(String text1, String text2, boolean checklines, long deadline) {
+		LinkedList<Diff> diffs = new LinkedList<Diff>();
+
+		if (text1.length() == 0) {
+			// Just add some text (speedup).
+			diffs.add(new Diff(Operation.INSERT, text2));
+			return diffs;
+		}
+
+		if (text2.length() == 0) {
+			// Just delete some text (speedup).
+			diffs.add(new Diff(Operation.DELETE, text1));
+			return diffs;
+		}
+
+		String longtext = text1.length() > text2.length() ? text1 : text2;
+		String shorttext = text1.length() > text2.length() ? text2 : text1;
+		int i = longtext.indexOf(shorttext);
+		if (i != -1) {
+			// Shorter text is inside the longer text (speedup).
+			Operation op = (text1.length() > text2.length()) ? Operation.DELETE : Operation.INSERT;
+			diffs.add(new Diff(op, longtext.substring(0, i)));
+			diffs.add(new Diff(Operation.EQUAL, shorttext));
+			diffs.add(new Diff(op, longtext.substring(i + shorttext.length())));
+			return diffs;
+		}
+
+		if (shorttext.length() == 1) {
+			// Single character string.
+			// After the previous speedup, the character can't be an equality.
+			diffs.add(new Diff(Operation.DELETE, text1));
+			diffs.add(new Diff(Operation.INSERT, text2));
+			return diffs;
+		}
+
+		// Check to see if the problem can be split in two.
+		String[] hm = diff_halfMatch(text1, text2);
+		if (hm != null) {
+			// A half-match was found, sort out the return data.
+			String text1_a = hm[0];
+			String text1_b = hm[1];
+			String text2_a = hm[2];
+			String text2_b = hm[3];
+			String mid_common = hm[4];
+			// Send both pairs off for separate processing.
+			LinkedList<Diff> diffs_a = diff_main(text1_a, text2_a, checklines, deadline);
+			LinkedList<Diff> diffs_b = diff_main(text1_b, text2_b, checklines, deadline);
+			// Merge the results.
+			diffs = diffs_a;
+			diffs.add(new Diff(Operation.EQUAL, mid_common));
+			diffs.addAll(diffs_b);
+			return diffs;
+		}
+
+		if (checklines && text1.length() > 100 && text2.length() > 100) {
+			return diff_lineMode(text1, text2, deadline);
+		}
+
+		return diff_bisect(text1, text2, deadline);
+	}
+
+	/**
+	 * Do a quick line-level diff on both strings, then rediff the parts for greater accuracy. This speedup
+	 * can produce non-minimal diffs.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param deadline
+	 *            Time when the diff should be complete by.
+	 * @return Linked List of Diff objects.
+	 */
+	private LinkedList<Diff> diff_lineMode(String text1, String text2, long deadline) {
+		// Scan the text on a line-by-line basis first.
+		LinesToCharsResult b = diff_linesToChars(text1, text2);
+		text1 = b.chars1;
+		text2 = b.chars2;
+		List<String> linearray = b.lineArray;
+
+		LinkedList<Diff> diffs = diff_main(text1, text2, false, deadline);
+
+		// Convert the diff back to original text.
+		diff_charsToLines(diffs, linearray);
+		// Eliminate freak matches (e.g. blank lines)
+		diff_cleanupSemantic(diffs);
+
+		// Rediff any replacement blocks, this time character-by-character.
+		// Add a dummy entry at the end.
+		diffs.add(new Diff(Operation.EQUAL, ""));
+		int count_delete = 0;
+		int count_insert = 0;
+		String text_delete = "";
+		String text_insert = "";
+		ListIterator<Diff> pointer = diffs.listIterator();
+		Diff thisDiff = pointer.next();
+		while (thisDiff != null) {
+			switch (thisDiff.operation) {
+				case INSERT:
+					count_insert++;
+					text_insert += thisDiff.text;
+					break;
+				case DELETE:
+					count_delete++;
+					text_delete += thisDiff.text;
+					break;
+				case EQUAL:
+					// Upon reaching an equality, check for prior redundancies.
+					if (count_delete >= 1 && count_insert >= 1) {
+						// Delete the offending records and add the merged ones.
+						pointer.previous();
+						for (int j = 0; j < count_delete + count_insert; j++) {
+							pointer.previous();
+							pointer.remove();
+						}
+						for (Diff newDiff : diff_main(text_delete, text_insert, false, deadline)) {
+							pointer.add(newDiff);
+						}
+					}
+					count_insert = 0;
+					count_delete = 0;
+					text_delete = "";
+					text_insert = "";
+					break;
+			}
+			thisDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+		diffs.removeLast(); // Remove the dummy entry at the end.
+
+		return diffs;
+	}
+
+	/**
+	 * Find the 'middle snake' of a diff, split the problem in two and return the recursively constructed
+	 * diff. See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param deadline
+	 *            Time at which to bail if not yet complete.
+	 * @return LinkedList of Diff objects.
+	 */
+	protected LinkedList<Diff> diff_bisect(String text1, String text2, long deadline) {
+		// Cache the text lengths to prevent multiple calls.
+		int text1_length = text1.length();
+		int text2_length = text2.length();
+		int max_d = (text1_length + text2_length + 1) / 2;
+		int v_offset = max_d;
+		int v_length = 2 * max_d;
+		int[] v1 = new int[v_length];
+		int[] v2 = new int[v_length];
+		for (int x = 0; x < v_length; x++) {
+			v1[x] = -1;
+			v2[x] = -1;
+		}
+		v1[v_offset + 1] = 0;
+		v2[v_offset + 1] = 0;
+		int delta = text1_length - text2_length;
+		// If the total number of characters is odd, then the front path will
+		// collide with the reverse path.
+		boolean front = (delta % 2 != 0);
+		// Offsets for start and end of k loop.
+		// Prevents mapping of space beyond the grid.
+		int k1start = 0;
+		int k1end = 0;
+		int k2start = 0;
+		int k2end = 0;
+		for (int d = 0; d < max_d; d++) {
+			// Bail out if deadline is reached.
+			if (System.currentTimeMillis() > deadline) {
+				break;
+			}
+
+			// Walk the front path one step.
+			for (int k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
+				int k1_offset = v_offset + k1;
+				int x1;
+				if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {
+					x1 = v1[k1_offset + 1];
+				} else {
+					x1 = v1[k1_offset - 1] + 1;
+				}
+				int y1 = x1 - k1;
+				while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {
+					x1++;
+					y1++;
+				}
+				v1[k1_offset] = x1;
+				if (x1 > text1_length) {
+					// Ran off the right of the graph.
+					k1end += 2;
+				} else if (y1 > text2_length) {
+					// Ran off the bottom of the graph.
+					k1start += 2;
+				} else if (front) {
+					int k2_offset = v_offset + delta - k1;
+					if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
+						// Mirror x2 onto top-left coordinate system.
+						int x2 = text1_length - v2[k2_offset];
+						if (x1 >= x2) {
+							// Overlap detected.
+							return diff_bisectSplit(text1, text2, x1, y1, deadline);
+						}
+					}
+				}
+			}
+
+			// Walk the reverse path one step.
+			for (int k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
+				int k2_offset = v_offset + k2;
+				int x2;
+				if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {
+					x2 = v2[k2_offset + 1];
+				} else {
+					x2 = v2[k2_offset - 1] + 1;
+				}
+				int y2 = x2 - k2;
+				while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2
+						.charAt(text2_length - y2 - 1)) {
+					x2++;
+					y2++;
+				}
+				v2[k2_offset] = x2;
+				if (x2 > text1_length) {
+					// Ran off the left of the graph.
+					k2end += 2;
+				} else if (y2 > text2_length) {
+					// Ran off the top of the graph.
+					k2start += 2;
+				} else if (!front) {
+					int k1_offset = v_offset + delta - k2;
+					if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
+						int x1 = v1[k1_offset];
+						int y1 = v_offset + x1 - k1_offset;
+						// Mirror x2 onto top-left coordinate system.
+						x2 = text1_length - x2;
+						if (x1 >= x2) {
+							// Overlap detected.
+							return diff_bisectSplit(text1, text2, x1, y1, deadline);
+						}
+					}
+				}
+			}
+		}
+		// Diff took too long and hit the deadline or
+		// number of diffs equals number of characters, no commonality at all.
+		LinkedList<Diff> diffs = new LinkedList<Diff>();
+		diffs.add(new Diff(Operation.DELETE, text1));
+		diffs.add(new Diff(Operation.INSERT, text2));
+		return diffs;
+	}
+
+	/**
+	 * Given the location of the 'middle snake', split the diff in two parts and recurse.
+	 * 
+	 * @param text1
+	 *            Old string to be diffed.
+	 * @param text2
+	 *            New string to be diffed.
+	 * @param x
+	 *            Index of split point in text1.
+	 * @param y
+	 *            Index of split point in text2.
+	 * @param deadline
+	 *            Time at which to bail if not yet complete.
+	 * @return LinkedList of Diff objects.
+	 */
+	private LinkedList<Diff> diff_bisectSplit(String text1, String text2, int x, int y, long deadline) {
+		String text1a = text1.substring(0, x);
+		String text2a = text2.substring(0, y);
+		String text1b = text1.substring(x);
+		String text2b = text2.substring(y);
+
+		// Compute both diffs serially.
+		LinkedList<Diff> diffs = diff_main(text1a, text2a, false, deadline);
+		LinkedList<Diff> diffsb = diff_main(text1b, text2b, false, deadline);
+
+		diffs.addAll(diffsb);
+		return diffs;
+	}
+
+	/**
+	 * Split two texts into a list of strings. Reduce the texts to a string of hashes where each Unicode
+	 * character represents one line.
+	 * 
+	 * @param text1
+	 *            First string.
+	 * @param text2
+	 *            Second string.
+	 * @return An object containing the encoded text1, the encoded text2 and the List of unique strings. The
+	 *         zeroth element of the List of unique strings is intentionally blank.
+	 */
+	protected LinesToCharsResult diff_linesToChars(String text1, String text2) {
+		List<String> lineArray = new ArrayList<String>();
+		Map<String, Integer> lineHash = new HashMap<String, Integer>();
+		// e.g. linearray[4] == "Hello\n"
+		// e.g. linehash.get("Hello\n") == 4
+
+		// "\x00" is a valid character, but various debuggers don't like it.
+		// So we'll insert a junk entry to avoid generating a null character.
+		lineArray.add("");
+
+		String chars1 = diff_linesToCharsMunge(text1, lineArray, lineHash);
+		String chars2 = diff_linesToCharsMunge(text2, lineArray, lineHash);
+		return new LinesToCharsResult(chars1, chars2, lineArray);
+	}
+
+	/**
+	 * Split a text into a list of strings. Reduce the texts to a string of hashes where each Unicode
+	 * character represents one line.
+	 * 
+	 * @param text
+	 *            String to encode.
+	 * @param lineArray
+	 *            List of unique strings.
+	 * @param lineHash
+	 *            Map of strings to indices.
+	 * @return Encoded string.
+	 */
+	private String diff_linesToCharsMunge(String text, List<String> lineArray,
+			Map<String, Integer> lineHash) {
+		int lineStart = 0;
+		int lineEnd = -1;
+		String line;
+		StringBuilder chars = new StringBuilder();
+		// Walk the text, pulling out a substring for each line.
+		// text.split('\n') would would temporarily double our memory footprint.
+		// Modifying text would create many large strings to garbage collect.
+		while (lineEnd < text.length() - 1) {
+			lineEnd = text.indexOf('\n', lineStart);
+			if (lineEnd == -1) {
+				lineEnd = text.length() - 1;
+			}
+			line = text.substring(lineStart, lineEnd + 1);
+			lineStart = lineEnd + 1;
+
+			if (lineHash.containsKey(line)) {
+				chars.append(String.valueOf((char)(int)lineHash.get(line)));
+			} else {
+				lineArray.add(line);
+				lineHash.put(line, lineArray.size() - 1);
+				chars.append(String.valueOf((char)(lineArray.size() - 1)));
+			}
+		}
+		return chars.toString();
+	}
+
+	/**
+	 * Rehydrate the text in a diff from a string of line hashes to real lines of text.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @param lineArray
+	 *            List of unique strings.
+	 */
+	protected void diff_charsToLines(LinkedList<Diff> diffs, List<String> lineArray) {
+		StringBuilder text;
+		for (Diff diff : diffs) {
+			text = new StringBuilder();
+			for (int y = 0; y < diff.text.length(); y++) {
+				text.append(lineArray.get(diff.text.charAt(y)));
+			}
+			diff.text = text.toString();
+		}
+	}
+
+	/**
+	 * Determine the common prefix of two strings
+	 * 
+	 * @param text1
+	 *            First string.
+	 * @param text2
+	 *            Second string.
+	 * @return The number of characters common to the start of each string.
+	 */
+	public int diff_commonPrefix(String text1, String text2) {
+		// Performance analysis: http://neil.fraser.name/news/2007/10/09/
+		int n = Math.min(text1.length(), text2.length());
+		for (int i = 0; i < n; i++) {
+			if (text1.charAt(i) != text2.charAt(i)) {
+				return i;
+			}
+		}
+		return n;
+	}
+
+	/**
+	 * Determine the common suffix of two strings
+	 * 
+	 * @param text1
+	 *            First string.
+	 * @param text2
+	 *            Second string.
+	 * @return The number of characters common to the end of each string.
+	 */
+	public int diff_commonSuffix(String text1, String text2) {
+		// Performance analysis: http://neil.fraser.name/news/2007/10/09/
+		int text1_length = text1.length();
+		int text2_length = text2.length();
+		int n = Math.min(text1_length, text2_length);
+		for (int i = 1; i <= n; i++) {
+			if (text1.charAt(text1_length - i) != text2.charAt(text2_length - i)) {
+				return i - 1;
+			}
+		}
+		return n;
+	}
+
+	/**
+	 * Determine if the suffix of one string is the prefix of another.
+	 * 
+	 * @param text1
+	 *            First string.
+	 * @param text2
+	 *            Second string.
+	 * @return The number of characters common to the end of the first string and the start of the second
+	 *         string.
+	 */
+	protected int diff_commonOverlap(String text1, String text2) {
+		// Cache the text lengths to prevent multiple calls.
+		int text1_length = text1.length();
+		int text2_length = text2.length();
+		// Eliminate the null case.
+		if (text1_length == 0 || text2_length == 0) {
+			return 0;
+		}
+		// Truncate the longer string.
+		if (text1_length > text2_length) {
+			text1 = text1.substring(text1_length - text2_length);
+		} else if (text1_length < text2_length) {
+			text2 = text2.substring(0, text1_length);
+		}
+		int text_length = Math.min(text1_length, text2_length);
+		// Quick check for the worst case.
+		if (text1.equals(text2)) {
+			return text_length;
+		}
+
+		// Start by looking for a single character match
+		// and increase length until no match is found.
+		// Performance analysis: http://neil.fraser.name/news/2010/11/04/
+		int best = 0;
+		int length = 1;
+		while (true) {
+			String pattern = text1.substring(text_length - length);
+			int found = text2.indexOf(pattern);
+			if (found == -1) {
+				return best;
+			}
+			length += found;
+			if (found == 0 || text1.substring(text_length - length).equals(text2.substring(0, length))) {
+				best = length;
+				length++;
+			}
+		}
+	}
+
+	/**
+	 * Do the two texts share a substring which is at least half the length of the longer text? This speedup
+	 * can produce non-minimal diffs.
+	 * 
+	 * @param text1
+	 *            First string.
+	 * @param text2
+	 *            Second string.
+	 * @return Five element String array, containing the prefix of text1, the suffix of text1, the prefix of
+	 *         text2, the suffix of text2 and the common middle. Or null if there was no match.
+	 */
+	protected String[] diff_halfMatch(String text1, String text2) {
+		if (Diff_Timeout <= 0) {
+			// Don't risk returning a non-optimal diff if we have unlimited time.
+			return null;
+		}
+		String longtext = text1.length() > text2.length() ? text1 : text2;
+		String shorttext = text1.length() > text2.length() ? text2 : text1;
+		if (longtext.length() < 4 || shorttext.length() * 2 < longtext.length()) {
+			return null; // Pointless.
+		}
+
+		// First check if the second quarter is the seed for a half-match.
+		String[] hm1 = diff_halfMatchI(longtext, shorttext, (longtext.length() + 3) / 4);
+		// Check again based on the third quarter.
+		String[] hm2 = diff_halfMatchI(longtext, shorttext, (longtext.length() + 1) / 2);
+		String[] hm;
+		if (hm1 == null && hm2 == null) {
+			return null;
+		} else if (hm2 == null) {
+			hm = hm1;
+		} else if (hm1 == null) {
+			hm = hm2;
+		} else {
+			// Both matched. Select the longest.
+			hm = hm1[4].length() > hm2[4].length() ? hm1 : hm2;
+		}
+
+		// A half-match was found, sort out the return data.
+		if (text1.length() > text2.length()) {
+			return hm;
+			// return new String[]{hm[0], hm[1], hm[2], hm[3], hm[4]};
+		} else {
+			return new String[] {hm[2], hm[3], hm[0], hm[1], hm[4] };
+		}
+	}
+
+	/**
+	 * Does a substring of shorttext exist within longtext such that the substring is at least half the length
+	 * of longtext?
+	 * 
+	 * @param longtext
+	 *            Longer string.
+	 * @param shorttext
+	 *            Shorter string.
+	 * @param i
+	 *            Start index of quarter length substring within longtext.
+	 * @return Five element String array, containing the prefix of longtext, the suffix of longtext, the
+	 *         prefix of shorttext, the suffix of shorttext and the common middle. Or null if there was no
+	 *         match.
+	 */
+	private String[] diff_halfMatchI(String longtext, String shorttext, int i) {
+		// Start with a 1/4 length substring at position i as a seed.
+		String seed = longtext.substring(i, i + longtext.length() / 4);
+		int j = -1;
+		String best_common = "";
+		String best_longtext_a = "", best_longtext_b = "";
+		String best_shorttext_a = "", best_shorttext_b = "";
+		while ((j = shorttext.indexOf(seed, j + 1)) != -1) {
+			int prefixLength = diff_commonPrefix(longtext.substring(i), shorttext.substring(j));
+			int suffixLength = diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));
+			if (best_common.length() < suffixLength + prefixLength) {
+				best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j
+						+ prefixLength);
+				best_longtext_a = longtext.substring(0, i - suffixLength);
+				best_longtext_b = longtext.substring(i + prefixLength);
+				best_shorttext_a = shorttext.substring(0, j - suffixLength);
+				best_shorttext_b = shorttext.substring(j + prefixLength);
+			}
+		}
+		if (best_common.length() * 2 >= longtext.length()) {
+			return new String[] {best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b,
+					best_common };
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Reduce the number of edits by eliminating semantically trivial equalities.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 */
+	public void diff_cleanupSemantic(LinkedList<Diff> diffs) {
+		if (diffs.isEmpty()) {
+			return;
+		}
+		boolean changes = false;
+		Stack<Diff> equalities = new Stack<Diff>(); // Stack of qualities.
+		String lastequality = null; // Always equal to equalities.lastElement().text
+		ListIterator<Diff> pointer = diffs.listIterator();
+		// Number of characters that changed prior to the equality.
+		int length_insertions1 = 0;
+		int length_deletions1 = 0;
+		// Number of characters that changed after the equality.
+		int length_insertions2 = 0;
+		int length_deletions2 = 0;
+		Diff thisDiff = pointer.next();
+		while (thisDiff != null) {
+			if (thisDiff.operation == Operation.EQUAL) {
+				// Equality found.
+				equalities.push(thisDiff);
+				length_insertions1 = length_insertions2;
+				length_deletions1 = length_deletions2;
+				length_insertions2 = 0;
+				length_deletions2 = 0;
+				lastequality = thisDiff.text;
+			} else {
+				// An insertion or deletion.
+				if (thisDiff.operation == Operation.INSERT) {
+					length_insertions2 += thisDiff.text.length();
+				} else {
+					length_deletions2 += thisDiff.text.length();
+				}
+				// Eliminate an equality that is smaller or equal to the edits on both
+				// sides of it.
+				if (lastequality != null && (lastequality.length() <= Math.max(length_insertions1,
+						length_deletions1)) && (lastequality.length() <= Math.max(length_insertions2,
+								length_deletions2))) {
+					// System.out.println("Splitting: '" + lastequality + "'");
+					// Walk back to offending equality.
+					while (thisDiff != equalities.lastElement()) {
+						thisDiff = pointer.previous();
+					}
+					pointer.next();
+
+					// Replace equality with a delete.
+					pointer.set(new Diff(Operation.DELETE, lastequality));
+					// Insert a corresponding an insert.
+					pointer.add(new Diff(Operation.INSERT, lastequality));
+
+					equalities.pop(); // Throw away the equality we just deleted.
+					if (!equalities.empty()) {
+						// Throw away the previous equality (it needs to be reevaluated).
+						equalities.pop();
+					}
+					if (equalities.empty()) {
+						// There are no previous equalities, walk back to the start.
+						while (pointer.hasPrevious()) {
+							pointer.previous();
+						}
+					} else {
+						// There is a safe equality we can fall back to.
+						thisDiff = equalities.lastElement();
+						while (thisDiff != pointer.previous()) {
+							// Intentionally empty loop.
+						}
+					}
+
+					length_insertions1 = 0; // Reset the counters.
+					length_insertions2 = 0;
+					length_deletions1 = 0;
+					length_deletions2 = 0;
+					lastequality = null;
+					changes = true;
+				}
+			}
+			thisDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+
+		// Normalize the diff.
+		if (changes) {
+			diff_cleanupMerge(diffs);
+		}
+		diff_cleanupSemanticLossless(diffs);
+
+		// Find any overlaps between deletions and insertions.
+		// e.g: <del>abcxxx</del><ins>xxxdef</ins>
+		// -> <del>abc</del>xxx<ins>def</ins>
+		// e.g: <del>xxxabc</del><ins>defxxx</ins>
+		// -> <ins>def</ins>xxx<del>abc</del>
+		// Only extract an overlap if it is as big as the edit ahead or behind it.
+		pointer = diffs.listIterator();
+		Diff prevDiff = null;
+		thisDiff = null;
+		if (pointer.hasNext()) {
+			prevDiff = pointer.next();
+			if (pointer.hasNext()) {
+				thisDiff = pointer.next();
+			}
+		}
+		while (thisDiff != null) {
+			if (prevDiff.operation == Operation.DELETE && thisDiff.operation == Operation.INSERT) {
+				String deletion = prevDiff.text;
+				String insertion = thisDiff.text;
+				int overlap_length1 = this.diff_commonOverlap(deletion, insertion);
+				int overlap_length2 = this.diff_commonOverlap(insertion, deletion);
+				if (overlap_length1 >= overlap_length2) {
+					if (overlap_length1 >= deletion.length() / 2.0 || overlap_length1 >= insertion.length()
+							/ 2.0) {
+						// Overlap found. Insert an equality and trim the surrounding edits.
+						pointer.previous();
+						pointer.add(new Diff(Operation.EQUAL, insertion.substring(0, overlap_length1)));
+						prevDiff.text = deletion.substring(0, deletion.length() - overlap_length1);
+						thisDiff.text = insertion.substring(overlap_length1);
+						// pointer.add inserts the element before the cursor, so there is
+						// no need to step past the new element.
+					}
+				} else {
+					if (overlap_length2 >= deletion.length() / 2.0 || overlap_length2 >= insertion.length()
+							/ 2.0) {
+						// Reverse overlap found.
+						// Insert an equality and swap and trim the surrounding edits.
+						pointer.previous();
+						pointer.add(new Diff(Operation.EQUAL, deletion.substring(0, overlap_length2)));
+						prevDiff.operation = Operation.INSERT;
+						prevDiff.text = insertion.substring(0, insertion.length() - overlap_length2);
+						thisDiff.operation = Operation.DELETE;
+						thisDiff.text = deletion.substring(overlap_length2);
+						// pointer.add inserts the element before the cursor, so there is
+						// no need to step past the new element.
+					}
+				}
+				thisDiff = pointer.hasNext() ? pointer.next() : null;
+			}
+			prevDiff = thisDiff;
+			thisDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+	}
+
+	/**
+	 * Look for single edits surrounded on both sides by equalities which can be shifted sideways to align the
+	 * edit to a word boundary. e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 */
+	public void diff_cleanupSemanticLossless(LinkedList<Diff> diffs) {
+		String equality1, edit, equality2;
+		String commonString;
+		int commonOffset;
+		int score, bestScore;
+		String bestEquality1, bestEdit, bestEquality2;
+		// Create a new iterator at the start.
+		ListIterator<Diff> pointer = diffs.listIterator();
+		Diff prevDiff = pointer.hasNext() ? pointer.next() : null;
+		Diff thisDiff = pointer.hasNext() ? pointer.next() : null;
+		Diff nextDiff = pointer.hasNext() ? pointer.next() : null;
+		// Intentionally ignore the first and last element (don't need checking).
+		while (nextDiff != null) {
+			if (prevDiff.operation == Operation.EQUAL && nextDiff.operation == Operation.EQUAL) {
+				// This is a single edit surrounded by equalities.
+				equality1 = prevDiff.text;
+				edit = thisDiff.text;
+				equality2 = nextDiff.text;
+
+				// First, shift the edit as far left as possible.
+				commonOffset = diff_commonSuffix(equality1, edit);
+				if (commonOffset != 0) {
+					commonString = edit.substring(edit.length() - commonOffset);
+					equality1 = equality1.substring(0, equality1.length() - commonOffset);
+					edit = commonString + edit.substring(0, edit.length() - commonOffset);
+					equality2 = commonString + equality2;
+				}
+
+				// Second, step character by character right, looking for the best fit.
+				bestEquality1 = equality1;
+				bestEdit = edit;
+				bestEquality2 = equality2;
+				bestScore = diff_cleanupSemanticScore(equality1, edit) + diff_cleanupSemanticScore(edit,
+						equality2);
+				while (edit.length() != 0 && equality2.length() != 0 && edit.charAt(0) == equality2.charAt(
+						0)) {
+					equality1 += edit.charAt(0);
+					edit = edit.substring(1) + equality2.charAt(0);
+					equality2 = equality2.substring(1);
+					score = diff_cleanupSemanticScore(equality1, edit) + diff_cleanupSemanticScore(edit,
+							equality2);
+					// The >= encourages trailing rather than leading whitespace on edits.
+					if (score >= bestScore) {
+						bestScore = score;
+						bestEquality1 = equality1;
+						bestEdit = edit;
+						bestEquality2 = equality2;
+					}
+				}
+
+				if (!prevDiff.text.equals(bestEquality1)) {
+					// We have an improvement, save it back to the diff.
+					if (bestEquality1.length() != 0) {
+						prevDiff.text = bestEquality1;
+					} else {
+						pointer.previous(); // Walk past nextDiff.
+						pointer.previous(); // Walk past thisDiff.
+						pointer.previous(); // Walk past prevDiff.
+						pointer.remove(); // Delete prevDiff.
+						pointer.next(); // Walk past thisDiff.
+						pointer.next(); // Walk past nextDiff.
+					}
+					thisDiff.text = bestEdit;
+					if (bestEquality2.length() != 0) {
+						nextDiff.text = bestEquality2;
+					} else {
+						pointer.remove(); // Delete nextDiff.
+						nextDiff = thisDiff;
+						thisDiff = prevDiff;
+					}
+				}
+			}
+			prevDiff = thisDiff;
+			thisDiff = nextDiff;
+			nextDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+	}
+
+	/**
+	 * Given two strings, compute a score representing whether the internal boundary falls on logical
+	 * boundaries. Scores range from 6 (best) to 0 (worst).
+	 * 
+	 * @param one
+	 *            First string.
+	 * @param two
+	 *            Second string.
+	 * @return The score.
+	 */
+	private int diff_cleanupSemanticScore(String one, String two) {
+		if (one.length() == 0 || two.length() == 0) {
+			// Edges are the best.
+			return 6;
+		}
+
+		// Each port of this function behaves slightly differently due to
+		// subtle differences in each language's definition of things like
+		// 'whitespace'. Since this function's purpose is largely cosmetic,
+		// the choice has been made to use each language's native features
+		// rather than force total conformity.
+		char char1 = one.charAt(one.length() - 1);
+		char char2 = two.charAt(0);
+		boolean nonAlphaNumeric1 = !Character.isLetterOrDigit(char1);
+		boolean nonAlphaNumeric2 = !Character.isLetterOrDigit(char2);
+		boolean whitespace1 = nonAlphaNumeric1 && Character.isWhitespace(char1);
+		boolean whitespace2 = nonAlphaNumeric2 && Character.isWhitespace(char2);
+		boolean lineBreak1 = whitespace1 && Character.getType(char1) == Character.CONTROL;
+		boolean lineBreak2 = whitespace2 && Character.getType(char2) == Character.CONTROL;
+		boolean blankLine1 = lineBreak1 && BLANKLINEEND.matcher(one).find();
+		boolean blankLine2 = lineBreak2 && BLANKLINESTART.matcher(two).find();
+
+		if (blankLine1 || blankLine2) {
+			// Five points for blank lines.
+			return 5;
+		} else if (lineBreak1 || lineBreak2) {
+			// Four points for line breaks.
+			return 4;
+		} else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {
+			// Three points for end of sentences.
+			return 3;
+		} else if (whitespace1 || whitespace2) {
+			// Two points for whitespace.
+			return 2;
+		} else if (nonAlphaNumeric1 || nonAlphaNumeric2) {
+			// One point for non-alphanumeric.
+			return 1;
+		}
+		return 0;
+	}
+
+	// Define some regex patterns for matching boundaries.
+	private Pattern BLANKLINEEND = Pattern.compile("\\n\\r?\\n\\Z", Pattern.DOTALL);
+
+	private Pattern BLANKLINESTART = Pattern.compile("\\A\\r?\\n\\r?\\n", Pattern.DOTALL);
+
+	/**
+	 * Reduce the number of edits by eliminating operationally trivial equalities.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 */
+	public void diff_cleanupEfficiency(LinkedList<Diff> diffs) {
+		if (diffs.isEmpty()) {
+			return;
+		}
+		boolean changes = false;
+		Stack<Diff> equalities = new Stack<Diff>(); // Stack of equalities.
+		String lastequality = null; // Always equal to equalities.lastElement().text
+		ListIterator<Diff> pointer = diffs.listIterator();
+		// Is there an insertion operation before the last equality.
+		boolean pre_ins = false;
+		// Is there a deletion operation before the last equality.
+		boolean pre_del = false;
+		// Is there an insertion operation after the last equality.
+		boolean post_ins = false;
+		// Is there a deletion operation after the last equality.
+		boolean post_del = false;
+		Diff thisDiff = pointer.next();
+		Diff safeDiff = thisDiff; // The last Diff that is known to be unsplitable.
+		while (thisDiff != null) {
+			if (thisDiff.operation == Operation.EQUAL) {
+				// Equality found.
+				if (thisDiff.text.length() < Diff_EditCost && (post_ins || post_del)) {
+					// Candidate found.
+					equalities.push(thisDiff);
+					pre_ins = post_ins;
+					pre_del = post_del;
+					lastequality = thisDiff.text;
+				} else {
+					// Not a candidate, and can never become one.
+					equalities.clear();
+					lastequality = null;
+					safeDiff = thisDiff;
+				}
+				post_ins = post_del = false;
+			} else {
+				// An insertion or deletion.
+				if (thisDiff.operation == Operation.DELETE) {
+					post_del = true;
+				} else {
+					post_ins = true;
+				}
+				/*
+				 * Five types to be split: <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
+				 * <ins>A</ins>X<ins>C</ins><del>D</del> <ins>A</ins><del>B</del>X<ins>C</ins>
+				 * <ins>A</del>X<ins>C</ins><del>D</del> <ins>A</ins><del>B</del>X<del>C</del>
+				 */
+				if (lastequality != null && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality
+						.length() < Diff_EditCost / 2) && ((pre_ins ? 1 : 0) + (pre_del ? 1 : 0) + (post_ins
+								? 1
+								: 0) + (post_del ? 1 : 0)) == 3))) {
+					// System.out.println("Splitting: '" + lastequality + "'");
+					// Walk back to offending equality.
+					while (thisDiff != equalities.lastElement()) {
+						thisDiff = pointer.previous();
+					}
+					pointer.next();
+
+					// Replace equality with a delete.
+					pointer.set(new Diff(Operation.DELETE, lastequality));
+					// Insert a corresponding an insert.
+					pointer.add(thisDiff = new Diff(Operation.INSERT, lastequality));
+
+					equalities.pop(); // Throw away the equality we just deleted.
+					lastequality = null;
+					if (pre_ins && pre_del) {
+						// No changes made which could affect previous entry, keep going.
+						post_ins = post_del = true;
+						equalities.clear();
+						safeDiff = thisDiff;
+					} else {
+						if (!equalities.empty()) {
+							// Throw away the previous equality (it needs to be reevaluated).
+							equalities.pop();
+						}
+						if (equalities.empty()) {
+							// There are no previous questionable equalities,
+							// walk back to the last known safe diff.
+							thisDiff = safeDiff;
+						} else {
+							// There is an equality we can fall back to.
+							thisDiff = equalities.lastElement();
+						}
+						while (thisDiff != pointer.previous()) {
+							// Intentionally empty loop.
+						}
+						post_ins = post_del = false;
+					}
+
+					changes = true;
+				}
+			}
+			thisDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+
+		if (changes) {
+			diff_cleanupMerge(diffs);
+		}
+	}
+
+	/**
+	 * Reorder and merge like edit sections. Merge equalities. Any edit section can move as long as it doesn't
+	 * cross an equality.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 */
+	public void diff_cleanupMerge(LinkedList<Diff> diffs) {
+		diffs.add(new Diff(Operation.EQUAL, "")); // Add a dummy entry at the end.
+		ListIterator<Diff> pointer = diffs.listIterator();
+		int count_delete = 0;
+		int count_insert = 0;
+		String text_delete = "";
+		String text_insert = "";
+		Diff thisDiff = pointer.next();
+		Diff prevEqual = null;
+		int commonlength;
+		while (thisDiff != null) {
+			switch (thisDiff.operation) {
+				case INSERT:
+					count_insert++;
+					text_insert += thisDiff.text;
+					prevEqual = null;
+					break;
+				case DELETE:
+					count_delete++;
+					text_delete += thisDiff.text;
+					prevEqual = null;
+					break;
+				case EQUAL:
+					if (count_delete + count_insert > 1) {
+						boolean both_types = count_delete != 0 && count_insert != 0;
+						// Delete the offending records.
+						pointer.previous(); // Reverse direction.
+						while (count_delete-- > 0) {
+							pointer.previous();
+							pointer.remove();
+						}
+						while (count_insert-- > 0) {
+							pointer.previous();
+							pointer.remove();
+						}
+						if (both_types) {
+							// Factor out any common prefixies.
+							commonlength = diff_commonPrefix(text_insert, text_delete);
+							if (commonlength != 0) {
+								if (pointer.hasPrevious()) {
+									thisDiff = pointer.previous();
+									assert thisDiff.operation == Operation.EQUAL : "Previous diff should have been an equality.";
+									thisDiff.text += text_insert.substring(0, commonlength);
+									pointer.next();
+								} else {
+									pointer.add(new Diff(Operation.EQUAL, text_insert.substring(0,
+											commonlength)));
+								}
+								text_insert = text_insert.substring(commonlength);
+								text_delete = text_delete.substring(commonlength);
+							}
+							// Factor out any common suffixies.
+							commonlength = diff_commonSuffix(text_insert, text_delete);
+							if (commonlength != 0) {
+								thisDiff = pointer.next();
+								thisDiff.text = text_insert.substring(text_insert.length() - commonlength)
+										+ thisDiff.text;
+								text_insert = text_insert.substring(0, text_insert.length() - commonlength);
+								text_delete = text_delete.substring(0, text_delete.length() - commonlength);
+								pointer.previous();
+							}
+						}
+						// Insert the merged records.
+						if (text_delete.length() != 0) {
+							pointer.add(new Diff(Operation.DELETE, text_delete));
+						}
+						if (text_insert.length() != 0) {
+							pointer.add(new Diff(Operation.INSERT, text_insert));
+						}
+						// Step forward to the equality.
+						thisDiff = pointer.hasNext() ? pointer.next() : null;
+					} else if (prevEqual != null) {
+						// Merge this equality with the previous one.
+						prevEqual.text += thisDiff.text;
+						pointer.remove();
+						thisDiff = pointer.previous();
+						pointer.next(); // Forward direction
+					}
+					count_insert = 0;
+					count_delete = 0;
+					text_delete = "";
+					text_insert = "";
+					prevEqual = thisDiff;
+					break;
+			}
+			thisDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+		if (diffs.getLast().text.length() == 0) {
+			diffs.removeLast(); // Remove the dummy entry at the end.
+		}
+
+		/*
+		 * Second pass: look for single edits surrounded on both sides by equalities which can be shifted
+		 * sideways to eliminate an equality. e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
+		 */
+		boolean changes = false;
+		// Create a new iterator at the start.
+		// (As opposed to walking the current one back.)
+		pointer = diffs.listIterator();
+		Diff prevDiff = pointer.hasNext() ? pointer.next() : null;
+		thisDiff = pointer.hasNext() ? pointer.next() : null;
+		Diff nextDiff = pointer.hasNext() ? pointer.next() : null;
+		// Intentionally ignore the first and last element (don't need checking).
+		while (nextDiff != null) {
+			if (prevDiff.operation == Operation.EQUAL && nextDiff.operation == Operation.EQUAL) {
+				// This is a single edit surrounded by equalities.
+				if (thisDiff.text.endsWith(prevDiff.text)) {
+					// Shift the edit over the previous equality.
+					thisDiff.text = prevDiff.text + thisDiff.text.substring(0, thisDiff.text.length()
+							- prevDiff.text.length());
+					nextDiff.text = prevDiff.text + nextDiff.text;
+					pointer.previous(); // Walk past nextDiff.
+					pointer.previous(); // Walk past thisDiff.
+					pointer.previous(); // Walk past prevDiff.
+					pointer.remove(); // Delete prevDiff.
+					pointer.next(); // Walk past thisDiff.
+					thisDiff = pointer.next(); // Walk past nextDiff.
+					nextDiff = pointer.hasNext() ? pointer.next() : null;
+					changes = true;
+				} else if (thisDiff.text.startsWith(nextDiff.text)) {
+					// Shift the edit over the next equality.
+					prevDiff.text += nextDiff.text;
+					thisDiff.text = thisDiff.text.substring(nextDiff.text.length()) + nextDiff.text;
+					pointer.remove(); // Delete nextDiff.
+					nextDiff = pointer.hasNext() ? pointer.next() : null;
+					changes = true;
+				}
+			}
+			prevDiff = thisDiff;
+			thisDiff = nextDiff;
+			nextDiff = pointer.hasNext() ? pointer.next() : null;
+		}
+		// If shifts were made, the diff needs reordering and another shift sweep.
+		if (changes) {
+			diff_cleanupMerge(diffs);
+		}
+	}
+
+	/**
+	 * loc is a location in text1, compute and return the equivalent location in text2. e.g. "The cat" vs "The
+	 * big cat", 1->1, 5->8
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @param loc
+	 *            Location within text1.
+	 * @return Location within text2.
+	 */
+	public int diff_xIndex(LinkedList<Diff> diffs, int loc) {
+		int chars1 = 0;
+		int chars2 = 0;
+		int last_chars1 = 0;
+		int last_chars2 = 0;
+		Diff lastDiff = null;
+		for (Diff aDiff : diffs) {
+			if (aDiff.operation != Operation.INSERT) {
+				// Equality or deletion.
+				chars1 += aDiff.text.length();
+			}
+			if (aDiff.operation != Operation.DELETE) {
+				// Equality or insertion.
+				chars2 += aDiff.text.length();
+			}
+			if (chars1 > loc) {
+				// Overshot the location.
+				lastDiff = aDiff;
+				break;
+			}
+			last_chars1 = chars1;
+			last_chars2 = chars2;
+		}
+		if (lastDiff != null && lastDiff.operation == Operation.DELETE) {
+			// The location was deleted.
+			return last_chars2;
+		}
+		// Add the remaining character length.
+		return last_chars2 + (loc - last_chars1);
+	}
+
+	/**
+	 * Convert a Diff list into a pretty HTML report.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @return HTML representation.
+	 */
+	public String diff_prettyHtml(LinkedList<Diff> diffs) {
+		StringBuilder html = new StringBuilder();
+		for (Diff aDiff : diffs) {
+			String text = aDiff.text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace(
+					"\n", "&para;<br>");
+			switch (aDiff.operation) {
+				case INSERT:
+					html.append("<ins style=\"background:#e6ffe6;\">").append(text).append("</ins>");
+					break;
+				case DELETE:
+					html.append("<del style=\"background:#ffe6e6;\">").append(text).append("</del>");
+					break;
+				case EQUAL:
+					html.append("<span>").append(text).append("</span>");
+					break;
+			}
+		}
+		return html.toString();
+	}
+
+	/**
+	 * Compute and return the source text (all equalities and deletions).
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @return Source text.
+	 */
+	public String diff_text1(LinkedList<Diff> diffs) {
+		StringBuilder text = new StringBuilder();
+		for (Diff aDiff : diffs) {
+			if (aDiff.operation != Operation.INSERT) {
+				text.append(aDiff.text);
+			}
+		}
+		return text.toString();
+	}
+
+	/**
+	 * Compute and return the destination text (all equalities and insertions).
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @return Destination text.
+	 */
+	public String diff_text2(LinkedList<Diff> diffs) {
+		StringBuilder text = new StringBuilder();
+		for (Diff aDiff : diffs) {
+			if (aDiff.operation != Operation.DELETE) {
+				text.append(aDiff.text);
+			}
+		}
+		return text.toString();
+	}
+
+	/**
+	 * Compute the Levenshtein distance; the number of inserted, deleted or substituted characters.
+	 * 
+	 * @param diffs
+	 *            LinkedList of Diff objects.
+	 * @return Number of changes.
+	 */
+	public int diff_levenshtein(LinkedList<Diff> diffs) {
+		int levenshtein = 0;
+		int insertions = 0;
+		int deletions = 0;
+		for (Diff aDiff : diffs) {
+			switch (aDiff.operation) {
+				case INSERT:
+					insertions += aDiff.text.length();
+					break;
+				case DELETE:
+					deletions += aDiff.text.length();
+					break;
+				case EQUAL:
+					// A deletion and an insertion is one substitution.
+					levenshtein += Math.max(insertions, deletions);
+					insertions = 0;
+					deletions = 0;
+					break;
+			}
+		}
+		levenshtein += Math.max(insertions, deletions);
+		return levenshtein;
+	}
+
+	/**
+	 * Crush the diff into an encoded string which describes the operations required to transform text1 into
+	 * text2. E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. Operations are tab-separated.
+	 * Inserted text is escaped using %xx notation.
+	 * 
+	 * @param diffs
+	 *            Array of Diff objects.
+	 * @return Delta text.
+	 */
+	public String diff_toDelta(LinkedList<Diff> diffs) {
+		StringBuilder text = new StringBuilder();
+		for (Diff aDiff : diffs) {
+			switch (aDiff.operation) {
+				case INSERT:
+					try {
+						text.append("+").append(URLEncoder.encode(aDiff.text, "UTF-8").replace('+', ' '))
+								.append("\t");
+					} catch (UnsupportedEncodingException e) {
+						// Not likely on modern system.
+						throw new Error("This system does not support UTF-8.", e);
+					}
+					break;
+				case DELETE:
+					text.append("-").append(aDiff.text.length()).append("\t");
+					break;
+				case EQUAL:
+					text.append("=").append(aDiff.text.length()).append("\t");
+					break;
+			}
+		}
+		String delta = text.toString();
+		if (delta.length() != 0) {
+			// Strip off trailing tab character.
+			delta = delta.substring(0, delta.length() - 1);
+			delta = unescapeForEncodeUriCompatability(delta);
+		}
+		return delta;
+	}
+
+	/**
+	 * Given the original text1, and an encoded string which describes the operations required to transform
+	 * text1 into text2, compute the full diff.
+	 * 
+	 * @param text1
+	 *            Source string for the diff.
+	 * @param delta
+	 *            Delta text.
+	 * @return Array of Diff objects or null if invalid.
+	 * @throws IllegalArgumentException
+	 *             If invalid input.
+	 */
+	public LinkedList<Diff> diff_fromDelta(String text1, String delta) throws IllegalArgumentException {
+		LinkedList<Diff> diffs = new LinkedList<Diff>();
+		int pointer = 0; // Cursor in text1
+		String[] tokens = delta.split("\t");
+		for (String token : tokens) {
+			if (token.length() == 0) {
+				// Blank tokens are ok (from a trailing \t).
+				continue;
+			}
+			// Each token begins with a one character parameter which specifies the
+			// operation of this token (delete, insert, equality).
+			String param = token.substring(1);
+			switch (token.charAt(0)) {
+				case '+':
+					// decode would change all "+" to " "
+					param = param.replace("+", "%2B");
+					try {
+						param = URLDecoder.decode(param, "UTF-8");
+					} catch (UnsupportedEncodingException e) {
+						// Not likely on modern system.
+						throw new Error("This system does not support UTF-8.", e);
+					} catch (IllegalArgumentException e) {
+						// Malformed URI sequence.
+						throw new IllegalArgumentException("Illegal escape in diff_fromDelta: " + param, e);
+					}
+					diffs.add(new Diff(Operation.INSERT, param));
+					break;
+				case '-':
+					// Fall through.
+				case '=':
+					int n;
+					try {
+						n = Integer.parseInt(param);
+					} catch (NumberFormatException e) {
+						throw new IllegalArgumentException("Invalid number in diff_fromDelta: " + param, e);
+					}
+					if (n < 0) {
+						throw new IllegalArgumentException("Negative number in diff_fromDelta: " + param);
+					}
+					String text;
+					try {
+						text = text1.substring(pointer, pointer += n);
+					} catch (StringIndexOutOfBoundsException e) {
+						throw new IllegalArgumentException("Delta length (" + pointer
+								+ ") larger than source text length (" + text1.length() + ").", e);
+					}
+					if (token.charAt(0) == '=') {
+						diffs.add(new Diff(Operation.EQUAL, text));
+					} else {
+						diffs.add(new Diff(Operation.DELETE, text));
+					}
+					break;
+				default:
+					// Anything else is an error.
+					throw new IllegalArgumentException("Invalid diff operation in diff_fromDelta: " + token
+							.charAt(0));
+			}
+		}
+		if (pointer != text1.length()) {
+			throw new IllegalArgumentException("Delta length (" + pointer
+					+ ") smaller than source text length (" + text1.length() + ").");
+		}
+		return diffs;
+	}
+
+	// MATCH FUNCTIONS
+
+	/**
+	 * Locate the best instance of 'pattern' in 'text' near 'loc'. Returns -1 if no match found.
+	 * 
+	 * @param text
+	 *            The text to search.
+	 * @param pattern
+	 *            The pattern to search for.
+	 * @param loc
+	 *            The location to search around.
+	 * @return Best match index or -1.
+	 */
+	public int match_main(String text, String pattern, int loc) {
+		// Check for null inputs.
+		if (text == null || pattern == null) {
+			throw new IllegalArgumentException("Null inputs. (match_main)");
+		}
+
+		loc = Math.max(0, Math.min(loc, text.length()));
+		if (text.equals(pattern)) {
+			// Shortcut (potentially not guaranteed by the algorithm)
+			return 0;
+		} else if (text.length() == 0) {
+			// Nothing to match.
+			return -1;
+		} else if (loc + pattern.length() <= text.length() && text.substring(loc, loc + pattern.length())
+				.equals(pattern)) {
+			// Perfect match at the perfect spot! (Includes case of null pattern)
+			return loc;
+		} else {
+			// Do a fuzzy compare.
+			return match_bitap(text, pattern, loc);
+		}
+	}
+
+	/**
+	 * Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. Returns -1 if no
+	 * match found.
+	 * 
+	 * @param text
+	 *            The text to search.
+	 * @param pattern
+	 *            The pattern to search for.
+	 * @param loc
+	 *            The location to search around.
+	 * @return Best match index or -1.
+	 */
+	protected int match_bitap(String text, String pattern, int loc) {
+		assert (Match_MaxBits == 0 || pattern
+				.length() <= Match_MaxBits) : "Pattern too long for this application.";
+
+		// Initialise the alphabet.
+		Map<Character, Integer> s = match_alphabet(pattern);
+
+		// Highest score beyond which we give up.
+		double score_threshold = Match_Threshold;
+		// Is there a nearby exact match? (speedup)
+		int best_loc = text.indexOf(pattern, loc);
+		if (best_loc != -1) {
+			score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), score_threshold);
+			// What about in the other direction? (speedup)
+			best_loc = text.lastIndexOf(pattern, loc + pattern.length());
+			if (best_loc != -1) {
+				score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), score_threshold);
+			}
+		}
+
+		// Initialise the bit arrays.
+		int matchmask = 1 << (pattern.length() - 1);
+		best_loc = -1;
+
+		int bin_min, bin_mid;
+		int bin_max = pattern.length() + text.length();
+		// Empty initialization added to appease Java compiler.
+		int[] last_rd = new int[0];
+		for (int d = 0; d < pattern.length(); d++) {
+			// Scan for the best match; each iteration allows for one more error.
+			// Run a binary search to determine how far from 'loc' we can stray at
+			// this error level.
+			bin_min = 0;
+			bin_mid = bin_max;
+			while (bin_min < bin_mid) {
+				if (match_bitapScore(d, loc + bin_mid, loc, pattern) <= score_threshold) {
+					bin_min = bin_mid;
+				} else {
+					bin_max = bin_mid;
+				}
+				bin_mid = (bin_max - bin_min) / 2 + bin_min;
+			}
+			// Use the result from this iteration as the maximum for the next.
+			bin_max = bin_mid;
+			int start = Math.max(1, loc - bin_mid + 1);
+			int finish = Math.min(loc + bin_mid, text.length()) + pattern.length();
+
+			int[] rd = new int[finish + 2];
+			rd[finish + 1] = (1 << d) - 1;
+			for (int j = finish; j >= start; j--) {
+				int charMatch;
+				if (text.length() <= j - 1 || !s.containsKey(text.charAt(j - 1))) {
+					// Out of range.
+					charMatch = 0;
+				} else {
+					charMatch = s.get(text.charAt(j - 1));
+				}
+				if (d == 0) {
+					// First pass: exact match.
+					rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;
+				} else {
+					// Subsequent passes: fuzzy match.
+					rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | (((last_rd[j + 1] | last_rd[j]) << 1) | 1)
+							| last_rd[j + 1];
+				}
+				if ((rd[j] & matchmask) != 0) {
+					double score = match_bitapScore(d, j - 1, loc, pattern);
+					// This match will almost certainly be better than any existing
+					// match. But check anyway.
+					if (score <= score_threshold) {
+						// Told you so.
+						score_threshold = score;
+						best_loc = j - 1;
+						if (best_loc > loc) {
+							// When passing loc, don't exceed our current distance from loc.
+							start = Math.max(1, 2 * loc - best_loc);
+						} else {
+							// Already passed loc, downhill from here on in.
+							break;
+						}
+					}
+				}
+			}
+			if (match_bitapScore(d + 1, loc, loc, pattern) > score_threshold) {
+				// No hope for a (better) match at greater error levels.
+				break;
+			}
+			last_rd = rd;
+		}
+		return best_loc;
+	}
+
+	/**
+	 * Compute and return the score for a match with e errors and x location.
+	 * 
+	 * @param e
+	 *            Number of errors in match.
+	 * @param x
+	 *            Location of match.
+	 * @param loc
+	 *            Expected location of match.
+	 * @param pattern
+	 *            Pattern being sought.
+	 * @return Overall score for match (0.0 = good, 1.0 = bad).
+	 */
+	private double match_bitapScore(int e, int x, int loc, String pattern) {
+		float accuracy = (float)e / pattern.length();
+		int proximity = Math.abs(loc - x);
+		if (Match_Distance == 0) {
+			// Dodge divide by zero error.
+			return proximity == 0 ? accuracy : 1.0;
+		}
+		return accuracy + (proximity / (float)Match_Distance);
+	}
+
+	/**
+	 * Initialise the alphabet for the Bitap algorithm.
+	 * 
+	 * @param pattern
+	 *            The text to encode.
+	 * @return Hash of character locations.
+	 */
+	protected Map<Character, Integer> match_alphabet(String pattern) {
+		Map<Character, Integer> s = new HashMap<Character, Integer>();
+		char[] char_pattern = pattern.toCharArray();
+		for (char c : char_pattern) {
+			s.put(c, 0);
+		}
+		int i = 0;
+		for (char c : char_pattern) {
+			s.put(c, s.get(c) | (1 << (pattern.length() - i - 1)));
+			i++;
+		}
+		return s;
+	}
+
+	// PATCH FUNCTIONS
+
+	/**
+	 * Increase the context until it is unique, but don't let the pattern expand beyond Match_MaxBits.
+	 * 
+	 * @param patch
+	 *            The patch to grow.
+	 * @param text
+	 *            Source text.
+	 */
+	protected void patch_addContext(Patch patch, String text) {
+		if (text.length() == 0) {
+			return;
+		}
+		String pattern = text.substring(patch.start2, patch.start2 + patch.length1);
+		int padding = 0;
+
+		// Look for the first and last matches of pattern in text. If two different
+		// matches are found, increase the pattern length.
+		while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length() < Match_MaxBits
+				- Patch_Margin - Patch_Margin) {
+			padding += Patch_Margin;
+			pattern = text.substring(Math.max(0, patch.start2 - padding), Math.min(text.length(), patch.start2
+					+ patch.length1 + padding));
+		}
+		// Add one chunk for good luck.
+		padding += Patch_Margin;
+
+		// Add the prefix.
+		String prefix = text.substring(Math.max(0, patch.start2 - padding), patch.start2);
+		if (prefix.length() != 0) {
+			patch.diffs.addFirst(new Diff(Operation.EQUAL, prefix));
+		}
+		// Add the suffix.
+		String suffix = text.substring(patch.start2 + patch.length1, Math.min(text.length(), patch.start2
+				+ patch.length1 + padding));
+		if (suffix.length() != 0) {
+			patch.diffs.addLast(new Diff(Operation.EQUAL, suffix));
+		}
+
+		// Roll back the start points.
+		patch.start1 -= prefix.length();
+		patch.start2 -= prefix.length();
+		// Extend the lengths.
+		patch.length1 += prefix.length() + suffix.length();
+		patch.length2 += prefix.length() + suffix.length();
+	}
+
+	/**
+	 * Compute a list of patches to turn text1 into text2. A set of diffs will be computed.
+	 * 
+	 * @param text1
+	 *            Old text.
+	 * @param text2
+	 *            New text.
+	 * @return LinkedList of Patch objects.
+	 */
+	public LinkedList<Patch> patch_make(String text1, String text2) {
+		if (text1 == null || text2 == null) {
+			throw new IllegalArgumentException("Null inputs. (patch_make)");
+		}
+		// No diffs provided, compute our own.
+		LinkedList<Diff> diffs = diff_main(text1, text2, true);
+		if (diffs.size() > 2) {
+			diff_cleanupSemantic(diffs);
+			diff_cleanupEfficiency(diffs);
+		}
+		return patch_make(text1, diffs);
+	}
+
+	/**
+	 * Compute a list of patches to turn text1 into text2. text1 will be derived from the provided diffs.
+	 * 
+	 * @param diffs
+	 *            Array of Diff objects for text1 to text2.
+	 * @return LinkedList of Patch objects.
+	 */
+	public LinkedList<Patch> patch_make(LinkedList<Diff> diffs) {
+		if (diffs == null) {
+			throw new IllegalArgumentException("Null inputs. (patch_make)");
+		}
+		// No origin string provided, compute our own.
+		String text1 = diff_text1(diffs);
+		return patch_make(text1, diffs);
+	}
+
+	/**
+	 * Compute a list of patches to turn text1 into text2. text2 is ignored, diffs are the delta between text1
+	 * and text2.
+	 * 
+	 * @param text1
+	 *            Old text
+	 * @param text2
+	 *            Ignored.
+	 * @param diffs
+	 *            Array of Diff objects for text1 to text2.
+	 * @return LinkedList of Patch objects.
+	 * @deprecated Prefer patch_make(String text1, LinkedList<Diff> diffs).
+	 */
+	public LinkedList<Patch> patch_make(String text1, String text2, LinkedList<Diff> diffs) {
+		return patch_make(text1, diffs);
+	}
+
+	/**
+	 * Compute a list of patches to turn text1 into text2. text2 is not provided, diffs are the delta between
+	 * text1 and text2.
+	 * 
+	 * @param text1
+	 *            Old text.
+	 * @param diffs
+	 *            Array of Diff objects for text1 to text2.
+	 * @return LinkedList of Patch objects.
+	 */
+	public LinkedList<Patch> patch_make(String text1, LinkedList<Diff> diffs) {
+		if (text1 == null || diffs == null) {
+			throw new IllegalArgumentException("Null inputs. (patch_make)");
+		}
+
+		LinkedList<Patch> patches = new LinkedList<Patch>();
+		if (diffs.isEmpty()) {
+			return patches; // Get rid of the null case.
+		}
+		Patch patch = new Patch();
+		int char_count1 = 0; // Number of characters into the text1 string.
+		int char_count2 = 0; // Number of characters into the text2 string.
+		// Start with text1 (prepatch_text) and apply the diffs until we arrive at
+		// text2 (postpatch_text). We recreate the patches one by one to determine
+		// context info.
+		String prepatch_text = text1;
+		String postpatch_text = text1;
+		for (Diff aDiff : diffs) {
+			if (patch.diffs.isEmpty() && aDiff.operation != Operation.EQUAL) {
+				// A new patch starts here.
+				patch.start1 = char_count1;
+				patch.start2 = char_count2;
+			}
+
+			switch (aDiff.operation) {
+				case INSERT:
+					patch.diffs.add(aDiff);
+					patch.length2 += aDiff.text.length();
+					postpatch_text = postpatch_text.substring(0, char_count2) + aDiff.text + postpatch_text
+							.substring(char_count2);
+					break;
+				case DELETE:
+					patch.length1 += aDiff.text.length();
+					patch.diffs.add(aDiff);
+					postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(
+							char_count2 + aDiff.text.length());
+					break;
+				case EQUAL:
+					if (aDiff.text.length() <= 2 * Patch_Margin && !patch.diffs.isEmpty() && aDiff != diffs
+							.getLast()) {
+						// Small equality inside a patch.
+						patch.diffs.add(aDiff);
+						patch.length1 += aDiff.text.length();
+						patch.length2 += aDiff.text.length();
+					}
+
+					if (aDiff.text.length() >= 2 * Patch_Margin) {
+						// Time for a new patch.
+						if (!patch.diffs.isEmpty()) {
+							patch_addContext(patch, prepatch_text);
+							patches.add(patch);
+							patch = new Patch();
+							// Unlike Unidiff, our patch lists have a rolling context.
+							// http://code.google.com/p/google-diff-match-patch/wiki/Unidiff
+							// Update prepatch text & pos to reflect the application of the
+							// just completed patch.
+							prepatch_text = postpatch_text;
+							char_count1 = char_count2;
+						}
+					}
+					break;
+			}
+
+			// Update the current character count.
+			if (aDiff.operation != Operation.INSERT) {
+				char_count1 += aDiff.text.length();
+			}
+			if (aDiff.operation != Operation.DELETE) {
+				char_count2 += aDiff.text.length();
+			}
+		}
+		// Pick up the leftover patch if not empty.
+		if (!patch.diffs.isEmpty()) {
+			patch_addContext(patch, prepatch_text);
+			patches.add(patch);
+		}
+
+		return patches;
+	}
+
+	/**
+	 * Given an array of patches, return another array that is identical.
+	 * 
+	 * @param patches
+	 *            Array of Patch objects.
+	 * @return Array of Patch objects.
+	 */
+	public LinkedList<Patch> patch_deepCopy(LinkedList<Patch> patches) {
+		LinkedList<Patch> patchesCopy = new LinkedList<Patch>();
+		for (Patch aPatch : patches) {
+			Patch patchCopy = new Patch();
+			for (Diff aDiff : aPatch.diffs) {
+				Diff diffCopy = new Diff(aDiff.operation, aDiff.text);
+				patchCopy.diffs.add(diffCopy);
+			}
+			patchCopy.start1 = aPatch.start1;
+			patchCopy.start2 = aPatch.start2;
+			patchCopy.length1 = aPatch.length1;
+			patchCopy.length2 = aPatch.length2;
+			patchesCopy.add(patchCopy);
+		}
+		return patchesCopy;
+	}
+
+	/**
+	 * Merge a set of patches onto the text. Return a patched text, as well as an array of true/false values
+	 * indicating which patches were applied.
+	 * 
+	 * @param patches
+	 *            Array of Patch objects
+	 * @param text
+	 *            Old text.
+	 * @return Two element Object array, containing the new text and an array of boolean values.
+	 */
+	public Object[] patch_apply(LinkedList<Patch> patches, String text) {
+		if (patches.isEmpty()) {
+			return new Object[] {text, new boolean[0] };
+		}
+
+		// Deep copy the patches so that no changes are made to originals.
+		patches = patch_deepCopy(patches);
+
+		String nullPadding = patch_addPadding(patches);
+		text = nullPadding + text + nullPadding;
+		patch_splitMax(patches);
+
+		int x = 0;
+		// delta keeps track of the offset between the expected and actual location
+		// of the previous patch. If there are patches expected at positions 10 and
+		// 20, but the first patch was found at 12, delta is 2 and the second patch
+		// has an effective expected position of 22.
+		int delta = 0;
+		boolean[] results = new boolean[patches.size()];
+		for (Patch aPatch : patches) {
+			int expected_loc = aPatch.start2 + delta;
+			String text1 = diff_text1(aPatch.diffs);
+			int start_loc;
+			int end_loc = -1;
+			if (text1.length() > this.Match_MaxBits) {
+				// patch_splitMax will only provide an oversized pattern in the case of
+				// a monster delete.
+				start_loc = match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);
+				if (start_loc != -1) {
+					end_loc = match_main(text, text1.substring(text1.length() - this.Match_MaxBits),
+							expected_loc + text1.length() - this.Match_MaxBits);
+					if (end_loc == -1 || start_loc >= end_loc) {
+						// Can't find valid trailing context. Drop this patch.
+						start_loc = -1;
+					}
+				}
+			} else {
+				start_loc = match_main(text, text1, expected_loc);
+			}
+			if (start_loc == -1) {
+				// No match found. :(
+				results[x] = false;
+				// Subtract the delta for this failed patch from subsequent patches.
+				delta -= aPatch.length2 - aPatch.length1;
+			} else {
+				// Found a match. :)
+				results[x] = true;
+				delta = start_loc - expected_loc;
+				String text2;
+				if (end_loc == -1) {
+					text2 = text.substring(start_loc, Math.min(start_loc + text1.length(), text.length()));
+				} else {
+					text2 = text.substring(start_loc, Math.min(end_loc + this.Match_MaxBits, text.length()));
+				}
+				if (text1.equals(text2)) {
+					// Perfect match, just shove the replacement text in.
+					text = text.substring(0, start_loc) + diff_text2(aPatch.diffs) + text.substring(start_loc
+							+ text1.length());
+				} else {
+					// Imperfect match. Run a diff to get a framework of equivalent
+					// indices.
+					LinkedList<Diff> diffs = diff_main(text1, text2, false);
+					if (text1.length() > this.Match_MaxBits && diff_levenshtein(diffs) / (float)text1
+							.length() > this.Patch_DeleteThreshold) {
+						// The end points match, but the content is unacceptably bad.
+						results[x] = false;
+					} else {
+						diff_cleanupSemanticLossless(diffs);
+						int index1 = 0;
+						for (Diff aDiff : aPatch.diffs) {
+							if (aDiff.operation != Operation.EQUAL) {
+								int index2 = diff_xIndex(diffs, index1);
+								if (aDiff.operation == Operation.INSERT) {
+									// Insertion
+									text = text.substring(0, start_loc + index2) + aDiff.text + text
+											.substring(start_loc + index2);
+								} else if (aDiff.operation == Operation.DELETE) {
+									// Deletion
+									text = text.substring(0, start_loc + index2) + text.substring(start_loc
+											+ diff_xIndex(diffs, index1 + aDiff.text.length()));
+								}
+							}
+							if (aDiff.operation != Operation.DELETE) {
+								index1 += aDiff.text.length();
+							}
+						}
+					}
+				}
+			}
+			x++;
+		}
+		// Strip the padding off.
+		text = text.substring(nullPadding.length(), text.length() - nullPadding.length());
+		return new Object[] {text, results };
+	}
+
+	/**
+	 * Add some padding on text start and end so that edges can match something. Intended to be called only
+	 * from within patch_apply.
+	 * 
+	 * @param patches
+	 *            Array of Patch objects.
+	 * @return The padding string added to each side.
+	 */
+	public String patch_addPadding(LinkedList<Patch> patches) {
+		short paddingLength = this.Patch_Margin;
+		String nullPadding = "";
+		for (short x = 1; x <= paddingLength; x++) {
+			nullPadding += String.valueOf((char)x);
+		}
+
+		// Bump all the patches forward.
+		for (Patch aPatch : patches) {
+			aPatch.start1 += paddingLength;
+			aPatch.start2 += paddingLength;
+		}
+
+		// Add some padding on start of first diff.
+		Patch patch = patches.getFirst();
+		LinkedList<Diff> diffs = patch.diffs;
+		if (diffs.isEmpty() || diffs.getFirst().operation != Operation.EQUAL) {
+			// Add nullPadding equality.
+			diffs.addFirst(new Diff(Operation.EQUAL, nullPadding));
+			patch.start1 -= paddingLength; // Should be 0.
+			patch.start2 -= paddingLength; // Should be 0.
+			patch.length1 += paddingLength;
+			patch.length2 += paddingLength;
+		} else if (paddingLength > diffs.getFirst().text.length()) {
+			// Grow first equality.
+			Diff firstDiff = diffs.getFirst();
+			int extraLength = paddingLength - firstDiff.text.length();
+			firstDiff.text = nullPadding.substring(firstDiff.text.length()) + firstDiff.text;
+			patch.start1 -= extraLength;
+			patch.start2 -= extraLength;
+			patch.length1 += extraLength;
+			patch.length2 += extraLength;
+		}
+
+		// Add some padding on end of last diff.
+		patch = patches.getLast();
+		diffs = patch.diffs;
+		if (diffs.isEmpty() || diffs.getLast().operation != Operation.EQUAL) {
+			// Add nullPadding equality.
+			diffs.addLast(new Diff(Operation.EQUAL, nullPadding));
+			patch.length1 += paddingLength;
+			patch.length2 += paddingLength;
+		} else if (paddingLength > diffs.getLast().text.length()) {
+			// Grow last equality.
+			Diff lastDiff = diffs.getLast();
+			int extraLength = paddingLength - lastDiff.text.length();
+			lastDiff.text += nullPadding.substring(0, extraLength);
+			patch.length1 += extraLength;
+			patch.length2 += extraLength;
+		}
+
+		return nullPadding;
+	}
+
+	/**
+	 * Look through the patches and break up any which are longer than the maximum limit of the match
+	 * algorithm. Intended to be called only from within patch_apply.
+	 * 
+	 * @param patches
+	 *            LinkedList of Patch objects.
+	 */
+	public void patch_splitMax(LinkedList<Patch> patches) {
+		short patch_size = Match_MaxBits;
+		String precontext, postcontext;
+		Patch patch;
+		int start1, start2;
+		boolean empty;
+		Operation diff_type;
+		String diff_text;
+		ListIterator<Patch> pointer = patches.listIterator();
+		Patch bigpatch = pointer.hasNext() ? pointer.next() : null;
+		while (bigpatch != null) {
+			if (bigpatch.length1 <= Match_MaxBits) {
+				bigpatch = pointer.hasNext() ? pointer.next() : null;
+				continue;
+			}
+			// Remove the big old patch.
+			pointer.remove();
+			start1 = bigpatch.start1;
+			start2 = bigpatch.start2;
+			precontext = "";
+			while (!bigpatch.diffs.isEmpty()) {
+				// Create one of several smaller patches.
+				patch = new Patch();
+				empty = true;
+				patch.start1 = start1 - precontext.length();
+				patch.start2 = start2 - precontext.length();
+				if (precontext.length() != 0) {
+					patch.length1 = patch.length2 = precontext.length();
+					patch.diffs.add(new Diff(Operation.EQUAL, precontext));
+				}
+				while (!bigpatch.diffs.isEmpty() && patch.length1 < patch_size - Patch_Margin) {
+					diff_type = bigpatch.diffs.getFirst().operation;
+					diff_text = bigpatch.diffs.getFirst().text;
+					if (diff_type == Operation.INSERT) {
+						// Insertions are harmless.
+						patch.length2 += diff_text.length();
+						start2 += diff_text.length();
+						patch.diffs.addLast(bigpatch.diffs.removeFirst());
+						empty = false;
+					} else if (diff_type == Operation.DELETE && patch.diffs.size() == 1 && patch.diffs
+							.getFirst().operation == Operation.EQUAL && diff_text.length() > 2 * patch_size) {
+						// This is a large deletion. Let it pass in one chunk.
+						patch.length1 += diff_text.length();
+						start1 += diff_text.length();
+						empty = false;
+						patch.diffs.add(new Diff(diff_type, diff_text));
+						bigpatch.diffs.removeFirst();
+					} else {
+						// Deletion or equality. Only take as much as we can stomach.
+						diff_text = diff_text.substring(0, Math.min(diff_text.length(), patch_size
+								- patch.length1 - Patch_Margin));
+						patch.length1 += diff_text.length();
+						start1 += diff_text.length();
+						if (diff_type == Operation.EQUAL) {
+							patch.length2 += diff_text.length();
+							start2 += diff_text.length();
+						} else {
+							empty = false;
+						}
+						patch.diffs.add(new Diff(diff_type, diff_text));
+						if (diff_text.equals(bigpatch.diffs.getFirst().text)) {
+							bigpatch.diffs.removeFirst();
+						} else {
+							bigpatch.diffs.getFirst().text = bigpatch.diffs.getFirst().text.substring(
+									diff_text.length());
+						}
+					}
+				}
+				// Compute the head context for the next patch.
+				precontext = diff_text2(patch.diffs);
+				precontext = precontext.substring(Math.max(0, precontext.length() - Patch_Margin));
+				// Append the end context for this patch.
+				if (diff_text1(bigpatch.diffs).length() > Patch_Margin) {
+					postcontext = diff_text1(bigpatch.diffs).substring(0, Patch_Margin);
+				} else {
+					postcontext = diff_text1(bigpatch.diffs);
+				}
+				if (postcontext.length() != 0) {
+					patch.length1 += postcontext.length();
+					patch.length2 += postcontext.length();
+					if (!patch.diffs.isEmpty() && patch.diffs.getLast().operation == Operation.EQUAL) {
+						patch.diffs.getLast().text += postcontext;
+					} else {
+						patch.diffs.add(new Diff(Operation.EQUAL, postcontext));
+					}
+				}
+				if (!empty) {
+					pointer.add(patch);
+				}
+			}
+			bigpatch = pointer.hasNext() ? pointer.next() : null;
+		}
+	}
+
+	/**
+	 * Take a list of patches and return a textual representation.
+	 * 
+	 * @param patches
+	 *            List of Patch objects.
+	 * @return Text representation of patches.
+	 */
+	public String patch_toText(List<Patch> patches) {
+		StringBuilder text = new StringBuilder();
+		for (Patch aPatch : patches) {
+			text.append(aPatch);
+		}
+		return text.toString();
+	}
+
+	/**
+	 * Parse a textual representation of patches and return a List of Patch objects.
+	 * 
+	 * @param textline
+	 *            Text representation of patches.
+	 * @return List of Patch objects.
+	 * @throws IllegalArgumentException
+	 *             If invalid input.
+	 */
+	public List<Patch> patch_fromText(String textline) throws IllegalArgumentException {
+		List<Patch> patches = new LinkedList<Patch>();
+		if (textline.length() == 0) {
+			return patches;
+		}
+		List<String> textList = Arrays.asList(textline.split("\n"));
+		LinkedList<String> text = new LinkedList<String>(textList);
+		Patch patch;
+		Pattern patchHeader = Pattern.compile("^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$");
+		Matcher m;
+		char sign;
+		String line;
+		while (!text.isEmpty()) {
+			m = patchHeader.matcher(text.getFirst());
+			if (!m.matches()) {
+				throw new IllegalArgumentException("Invalid patch string: " + text.getFirst());
+			}
+			patch = new Patch();
+			patches.add(patch);
+			patch.start1 = Integer.parseInt(m.group(1));
+			if (m.group(2).length() == 0) {
+				patch.start1--;
+				patch.length1 = 1;
+			} else if (m.group(2).equals("0")) {
+				patch.length1 = 0;
+			} else {
+				patch.start1--;
+				patch.length1 = Integer.parseInt(m.group(2));
+			}
+
+			patch.start2 = Integer.parseInt(m.group(3));
+			if (m.group(4).length() == 0) {
+				patch.start2--;
+				patch.length2 = 1;
+			} else if (m.group(4).equals("0")) {
+				patch.length2 = 0;
+			} else {
+				patch.start2--;
+				patch.length2 = Integer.parseInt(m.group(4));
+			}
+			text.removeFirst();
+
+			while (!text.isEmpty()) {
+				try {
+					sign = text.getFirst().charAt(0);
+				} catch (IndexOutOfBoundsException e) {
+					// Blank line? Whatever.
+					text.removeFirst();
+					continue;
+				}
+				line = text.getFirst().substring(1);
+				line = line.replace("+", "%2B"); // decode would change all "+" to " "
+				try {
+					line = URLDecoder.decode(line, "UTF-8");
+				} catch (UnsupportedEncodingException e) {
+					// Not likely on modern system.
+					throw new Error("This system does not support UTF-8.", e);
+				} catch (IllegalArgumentException e) {
+					// Malformed URI sequence.
+					throw new IllegalArgumentException("Illegal escape in patch_fromText: " + line, e);
+				}
+				if (sign == '-') {
+					// Deletion.
+					patch.diffs.add(new Diff(Operation.DELETE, line));
+				} else if (sign == '+') {
+					// Insertion.
+					patch.diffs.add(new Diff(Operation.INSERT, line));
+				} else if (sign == ' ') {
+					// Minor equality.
+					patch.diffs.add(new Diff(Operation.EQUAL, line));
+				} else if (sign == '@') {
+					// Start of next patch.
+					break;
+				} else {
+					// WTF?
+					throw new IllegalArgumentException("Invalid patch mode '" + sign + "' in: " + line);
+				}
+				text.removeFirst();
+			}
+		}
+		return patches;
+	}
+
+	/**
+	 * Class representing one diff operation.
+	 */
+	public static class Diff {
+		/**
+		 * One of: INSERT, DELETE or EQUAL.
+		 */
+		public Operation operation;
+
+		/**
+		 * The text associated with this diff operation.
+		 */
+		public String text;
+
+		/**
+		 * Constructor. Initializes the diff with the provided values.
+		 * 
+		 * @param operation
+		 *            One of INSERT, DELETE or EQUAL.
+		 * @param text
+		 *            The text being applied.
+		 */
+		public Diff(Operation operation, String text) {
+			// Construct a diff with the specified operation and text.
+			this.operation = operation;
+			this.text = text;
+		}
+
+		/**
+		 * Display a human-readable version of this Diff.
+		 * 
+		 * @return text version.
+		 */
+		public String toString() {
+			String prettyText = this.text.replace('\n', '\u00b6');
+			return "Diff(" + this.operation + ",\"" + prettyText + "\")";
+		}
+
+		/**
+		 * Create a numeric hash value for a Diff. This function is not used by DMP.
+		 * 
+		 * @return Hash value.
+		 */
+		@Override
+		public int hashCode() {
+			final int prime = 31;
+			int result = (operation == null) ? 0 : operation.hashCode();
+			result += prime * ((text == null) ? 0 : text.hashCode());
+			return result;
+		}
+
+		/**
+		 * Is this Diff equivalent to another Diff?
+		 * 
+		 * @param obj
+		 *            Another Diff to compare against.
+		 * @return true or false.
+		 */
+		@Override
+		public boolean equals(Object obj) {
+			if (this == obj) {
+				return true;
+			}
+			if (obj == null) {
+				return false;
+			}
+			if (getClass() != obj.getClass()) {
+				return false;
+			}
+			Diff other = (Diff)obj;
+			if (operation != other.operation) {
+				return false;
+			}
+			if (text == null) {
+				if (other.text != null) {
+					return false;
+				}
+			} else if (!text.equals(other.text)) {
+				return false;
+			}
+			return true;
+		}
+	}
+
+	/**
+	 * Class representing one patch operation.
+	 */
+	public static class Patch {
+		public LinkedList<Diff> diffs;
+
+		public int start1;
+
+		public int start2;
+
+		public int length1;
+
+		public int length2;
+
+		/**
+		 * Constructor. Initializes with an empty list of diffs.
+		 */
+		public Patch() {
+			this.diffs = new LinkedList<Diff>();
+		}
+
+		/**
+		 * Emmulate GNU diff's format. Header: @@ -382,8 +481,9 @@ Indicies are printed as 1-based, not
+		 * 0-based.
+		 * 
+		 * @return The GNU diff string.
+		 */
+		public String toString() {
+			String coords1, coords2;
+			if (this.length1 == 0) {
+				coords1 = this.start1 + ",0";
+			} else if (this.length1 == 1) {
+				coords1 = Integer.toString(this.start1 + 1);
+			} else {
+				coords1 = (this.start1 + 1) + "," + this.length1;
+			}
+			if (this.length2 == 0) {
+				coords2 = this.start2 + ",0";
+			} else if (this.length2 == 1) {
+				coords2 = Integer.toString(this.start2 + 1);
+			} else {
+				coords2 = (this.start2 + 1) + "," + this.length2;
+			}
+			StringBuilder text = new StringBuilder();
+			text.append("@@ -").append(coords1).append(" +").append(coords2).append(" @@\n");
+			// Escape the body of the patch with %xx notation.
+			for (Diff aDiff : this.diffs) {
+				switch (aDiff.operation) {
+					case INSERT:
+						text.append('+');
+						break;
+					case DELETE:
+						text.append('-');
+						break;
+					case EQUAL:
+						text.append(' ');
+						break;
+				}
+				try {
+					text.append(URLEncoder.encode(aDiff.text, "UTF-8").replace('+', ' ')).append("\n");
+				} catch (UnsupportedEncodingException e) {
+					// Not likely on modern system.
+					throw new Error("This system does not support UTF-8.", e);
+				}
+			}
+			return unescapeForEncodeUriCompatability(text.toString());
+		}
+	}
+
+	/**
+	 * Unescape selected chars for compatability with JavaScript's encodeURI. In speed critical applications
+	 * this could be dropped since the receiving application will certainly decode these fine. Note that this
+	 * function is case-sensitive. Thus "%3f" would not be unescaped. But this is ok because it is only called
+	 * with the output of URLEncoder.encode which returns uppercase hex. Example: "%3F" -> "?", "%24" -> "$",
+	 * etc.
+	 * 
+	 * @param str
+	 *            The string to escape.
+	 * @return The escaped string.
+	 */
+	private static String unescapeForEncodeUriCompatability(String str) {
+		return str.replace("%21", "!").replace("%7E", "~").replace("%27", "'").replace("%28", "(").replace(
+				"%29", ")").replace("%3B", ";").replace("%2F", "/").replace("%3F", "?").replace("%3A", ":")
+				.replace("%40", "@").replace("%26", "&").replace("%3D", "=").replace("%2B", "+").replace(
+						"%24", "$").replace("%2C", ",").replace("%23", "#");
+	}
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/pom.xml b/mapping/plugins/org.eclipse.intent.mapping/pom.xml
new file mode 100644
index 0000000..9ead52a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+
+  <name>Mapping</name>
+
+  <build>
+   <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/MappingUtils.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/MappingUtils.java
new file mode 100644
index 0000000..1fbbf47
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/MappingUtils.java
@@ -0,0 +1,769 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import name.fraser.neil.plaintext.diff_match_patch;
+import name.fraser.neil.plaintext.diff_match_patch.Diff;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory.IFactoryDescriptor;
+import org.eclipse.intent.mapping.base.ContainerProviderFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseRegistry;
+import org.eclipse.intent.mapping.base.IBaseRegistryListener;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.connector.IConnectorRegistry;
+import org.eclipse.intent.mapping.content.IFileTypeRegistry;
+import org.eclipse.intent.mapping.internal.base.BaseRegistry;
+import org.eclipse.intent.mapping.internal.connector.ConnectorRegistry;
+import org.eclipse.intent.mapping.internal.content.FileTypeRegistry;
+
+/**
+ * Mapping utility class.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class MappingUtils {
+
+	/**
+	 * Diff and match wrapping class.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static final class DiffMatch {
+
+		/**
+		 * The list of differences.
+		 */
+		final LinkedList<Diff> diffs;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param txt1
+		 *            the first text
+		 * @param txt2
+		 *            the second text
+		 */
+		private DiffMatch(String txt1, String txt2) {
+			diffs = DIFF_MATCH_PATCH.diff_main(txt1, txt2);
+		}
+
+		/**
+		 * Reduce the number of edits by eliminating operationally trivial equalities.
+		 */
+		public void cleanupEfficdiency() {
+			DIFF_MATCH_PATCH.diff_cleanupEfficiency(diffs);
+		}
+
+		/**
+		 * Reorder and merge like edit sections. Merge equalities. Any edit section can move as long as it
+		 * doesn't cross an equality.
+		 */
+		public void cleanupMerge() {
+			DIFF_MATCH_PATCH.diff_cleanupMerge(diffs);
+		}
+
+		/**
+		 * Reduce the number of edits by eliminating semantically trivial equalities.
+		 */
+		public void cleanupSemantic() {
+			DIFF_MATCH_PATCH.diff_cleanupSemantic(diffs);
+		}
+
+		/**
+		 * Look for single edits surrounded on both sides by equalities which can be shifted sideways to align
+		 * the edit to a word boundary. e.g: "The c<ins>at c</ins>ame." -> "The <ins>cat </ins>came".
+		 */
+		public void cleanupSemanticLossless() {
+			DIFF_MATCH_PATCH.diff_cleanupSemanticLossless(diffs);
+		}
+
+		/**
+		 * Gets the <a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein Distance</a>.
+		 * 
+		 * @return the <a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein Distance</a>
+		 */
+		public int getLevenshteinDistance() {
+			return DIFF_MATCH_PATCH.diff_levenshtein(diffs);
+		}
+
+		/**
+		 * Gets the index in text2 from corresponding to the index in text1.
+		 * 
+		 * @param index
+		 *            the index in text1
+		 * @return the index in text2 from corresponding to the index in text1
+		 */
+		public int getIndex(int index) {
+			return DIFF_MATCH_PATCH.diff_xIndex(diffs, index);
+		}
+
+	}
+
+	/**
+	 * The {@link IBaseRegistry}.
+	 */
+	private static final BaseRegistry BASE_REGISTRY = initBaseRegistry();
+
+	/**
+	 * The {@link IConnectorRegistry}.
+	 */
+	private static final ConnectorRegistry CONNECTOR_REGISTRY = new ConnectorRegistry();
+
+	/**
+	 * {@link IBase} kind to {@link ILocation} interface/implementation mapping.
+	 */
+	private static final Map<Class<? extends IBase>, Map<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>>> LOCATION_IMPLEMENTATIONS = new HashMap<Class<? extends IBase>, Map<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>>>();
+
+	/**
+	 * Diff match patch instance.
+	 */
+	private static final diff_match_patch DIFF_MATCH_PATCH = new diff_match_patch();
+
+	/**
+	 * The {@link ContainerProviderFactory}.
+	 */
+	private static final ContainerProviderFactory CONTAINER_PROVIDER_FACTORY = new ContainerProviderFactory();
+
+	/**
+	 * The {@link IFileTypeRegistry}.
+	 */
+	private static IFileTypeRegistry fileTypeRegistry = new FileTypeRegistry();
+
+	/**
+	 * Constructor.
+	 */
+	private MappingUtils() {
+		// nothing to do here
+	}
+
+	/**
+	 * Initialize the {@link BaseRegistry}.
+	 * 
+	 * @return the {@link BaseRegistry}
+	 */
+	private static BaseRegistry initBaseRegistry() {
+		final BaseRegistry res = new BaseRegistry();
+
+		res.addListener(new IBaseRegistryListener.Stub() {
+
+			@Override
+			@SuppressWarnings("unchecked")
+			public void baseRegistred(IBase base) {
+				for (Entry<Class<? extends IBase>, Map<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>>> entry : LOCATION_IMPLEMENTATIONS
+						.entrySet()) {
+					if (entry.getKey().isAssignableFrom(base.getClass())) {
+						for (Entry<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>> locationEntry : entry
+								.getValue().entrySet()) {
+							base.getFactory().addDescriptor((Class<ILocation>)locationEntry.getKey(),
+									locationEntry.getValue());
+						}
+					}
+				}
+			}
+
+		});
+
+		return res;
+	}
+
+	/**
+	 * Gets a {@link DiffMatch} for the two given {@link String}.
+	 * 
+	 * @param txt1
+	 *            the first text
+	 * @param txt2
+	 *            the second text
+	 * @return a {@link DiffMatch} for the two given {@link String}
+	 */
+	public static DiffMatch getDiffMatch(String txt1, String txt2) {
+		return new DiffMatch(txt1, txt2);
+	}
+
+	/**
+	 * Gets the {@link IBaseRegistry}.
+	 * 
+	 * @return the {@link IBaseRegistry}
+	 */
+	public static IBaseRegistry getMappingRegistry() {
+		return BASE_REGISTRY;
+	}
+
+	/**
+	 * Gets the {@link IConnectorRegistry}.
+	 * 
+	 * @return the {@link IConnectorRegistry}
+	 */
+	public static IConnectorRegistry getConnectorRegistry() {
+		return CONNECTOR_REGISTRY;
+	}
+
+	/**
+	 * Registers the given {@link ILocation} implementation to instantiate the given {@link ILocation}
+	 * interface for the given {@link IBase} kind.
+	 * 
+	 * @param baseClass
+	 *            the {@link IBase} kind
+	 * @param locationInterface
+	 *            the {@link ILocation} interface
+	 * @param descriptor
+	 *            the {@link ILocation} implementation for the {@link IBase} kind
+	 * @param <L>
+	 *            the {@link ILocation} interface kind
+	 */
+	public static <L extends ILocation> void registerLocationImplementation(Class<? extends IBase> baseClass,
+			Class<L> locationInterface, IFactoryDescriptor<? extends L> descriptor) {
+		synchronized(getMappingRegistry()) {
+			Map<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>> implementations = LOCATION_IMPLEMENTATIONS
+					.get(baseClass);
+			if (implementations == null) {
+				implementations = new HashMap<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>>();
+				LOCATION_IMPLEMENTATIONS.put(baseClass, implementations);
+			}
+			implementations.put(locationInterface, descriptor);
+			for (IBase base : getMappingRegistry().getBases()) {
+				if (baseClass.isAssignableFrom(base.getClass())) {
+					base.getFactory().addDescriptor(locationInterface, descriptor);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Removes the given {@link ILocation} interface instantiation {@link Class} for the given {@link IBase}.
+	 * 
+	 * @param baseClass
+	 *            the {@link IBase} kind
+	 * @param locationInterface
+	 *            the {@link ILocation} interface
+	 */
+	public static void unregisterLocationImplementation(Class<? extends IBase> baseClass,
+			Class<? extends ILocation> locationInterface) {
+		synchronized(getMappingRegistry()) {
+			Map<Class<? extends ILocation>, IFactoryDescriptor<? extends ILocation>> implementations = LOCATION_IMPLEMENTATIONS
+					.get(baseClass);
+			if (implementations != null) {
+				implementations.remove(locationInterface);
+			}
+			for (IBase base : getMappingRegistry().getBases()) {
+				if (baseClass.isAssignableFrom(base.getClass())) {
+					base.getFactory().removeDescriptor(locationInterface);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Gets the {@link IBase} containing the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the {@link IBase} containing the given {@link ILocation} if nay, <code>null</code> otherwise
+	 */
+	public static IBase getBase(ILocation location) {
+		IBase res = null;
+
+		ILocationContainer conainer = location.getContainer();
+		while (conainer != null) {
+			if (conainer instanceof IBase) {
+				res = (IBase)conainer;
+				break;
+			} else if (conainer instanceof ILocation) {
+				conainer = ((ILocation)conainer).getContainer();
+			} else {
+				break;
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the containing {@link IBase} of the given {@link ILocationContainer}.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}
+	 * @return the containing {@link IBase} of the given {@link ILocationContainer} if any, <code>null</code>
+	 *         otherwise
+	 */
+	public static IBase getBase(ILocationContainer container) {
+		final IBase res;
+
+		if (container instanceof IBase) {
+			res = (IBase)container;
+		} else if (container instanceof ILocation) {
+			res = getBase((ILocation)container);
+		} else {
+			throw new IllegalStateException("new ILocationContainer sub type ?");
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the {@link ILink} between {@link ILocation source} and {@link ILocation target}.
+	 * 
+	 * @param source
+	 *            the {@link ILocation source}
+	 * @param target
+	 *            the {@link ILocation target}
+	 * @return the {@link ILink} between {@link ILocation source} and {@link ILocation target} if any,
+	 *         <code>null</code> otherwise
+	 */
+	public static ILink getLink(ILocation source, ILocation target) {
+		ILink res = null;
+
+		if (source.getTargetLinks().size() > target.getSourceLinks().size()) {
+			for (ILink link : target.getSourceLinks()) {
+				if (source.equals(link.getSource())) {
+					res = link;
+					break;
+				}
+			}
+		} else {
+			for (ILink link : source.getTargetLinks()) {
+				if (target.equals(link.getTarget())) {
+					res = link;
+					break;
+				}
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * Tells if an {@link ILink} can be {@link MappingUtils#createLink(ILocation, ILocation) created} between
+	 * the given {@link ILocation source} and {@link ILocation target}.
+	 * 
+	 * @param source
+	 *            the source {@link ILocation}
+	 * @param target
+	 *            the target {@link ILocation}
+	 * @return <code>true</code> if an {@link ILink} can be
+	 *         {@link MappingUtils#createLink(ILocation, ILocation) created} between the given
+	 *         {@link ILocation source} and {@link ILocation target}, <code>false</code> otherwise
+	 */
+	public static boolean canCreateLink(ILocation source, ILocation target) {
+		return !source.isMarkedAsDeleted() && !target.isMarkedAsDeleted() && !source.equals(target)
+				&& MappingUtils.getLink(source, target) == null;
+	}
+
+	/**
+	 * Tells if an {@link ILink} can be
+	 * {@link MappingUtils#createLink(ILocationDescriptor, ILocationDescriptor) created} between the given
+	 * {@link ILocationDescriptor sourceDescriptor} and {@link ILocationDescriptor targetDescriptor}.
+	 * 
+	 * @param sourceDescriptor
+	 *            the source {@link ILocationDescriptor}
+	 * @param targetDescriptor
+	 *            the target {@link ILocationDescriptor}
+	 * @return <code>true</code> if an {@link ILink} can be
+	 *         {@link MappingUtils#createLink(ILocationDescriptor, ILocationDescriptor) created} between the
+	 *         given {@link ILocationDescriptor sourceDescriptor} and {@link ILocationDescriptor
+	 *         targetDescriptor}, <code>false</code> otherwise
+	 */
+	public static boolean canCreateLink(ILocationDescriptor sourceDescriptor,
+			ILocationDescriptor targetDescriptor) {
+		return !sourceDescriptor.exists() || !targetDescriptor.exists() || MappingUtils.canCreateLink(
+				sourceDescriptor.getLocation(), targetDescriptor.getLocation());
+	}
+
+	/**
+	 * Creates an {@link ILink} between the given {@link ILink#getSource() source} and
+	 * {@link ILink#getTarget() target}.
+	 * 
+	 * @param source
+	 *            the {@link ILink#getSource() source} {@link ILocation}
+	 * @param target
+	 *            the {@link ILink#getTarget() target} {@link ILocation}
+	 * @return the created {@link ILink}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public static ILink createLink(ILocation source, ILocation target) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final ILink res;
+
+		if (canCreateLink(source, target)) {
+			final IBase base = getBase(source);
+			res = base.getFactory().createElement(ILink.class);
+			res.setSource(source);
+			res.setTarget(target);
+		} else {
+			throw new IllegalStateException("can't create the Link.");
+		}
+
+		return res;
+	}
+
+	/**
+	 * Creates an {@link ILink} between the given {@link ILink#getSource() source} and
+	 * {@link ILink#getTarget() target}.
+	 * 
+	 * @param sourceDescriptor
+	 *            the {@link ILink#getSource() source} {@link ILocationDescriptor}
+	 * @param targetDescriptor
+	 *            the {@link ILink#getTarget() target} {@link ILocationDescriptor}
+	 * @return the created {@link ILink}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public static ILink createLink(ILocationDescriptor sourceDescriptor, ILocationDescriptor targetDescriptor)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILink res;
+
+		if (canCreateLink(sourceDescriptor, targetDescriptor)) {
+			res = MappingUtils.createLink(sourceDescriptor.getOrCreate(), targetDescriptor.getOrCreate());
+		} else {
+			throw new IllegalStateException("can't create the Link.");
+		}
+
+		return res;
+	}
+
+	/**
+	 * Gets the content of the given {@link File}.
+	 * 
+	 * @param file
+	 *            the {@link File}
+	 * @param charsetName
+	 *            The name of a supported {@link java.nio.charset.Charset </code>charset<code>}
+	 * @return a {@link String} of the content of the given {@link File}
+	 * @throws IOException
+	 *             if the {@link File} can't be read
+	 */
+	public static String getContent(File file, String charsetName) throws IOException {
+		if (!file.exists()) {
+			throw new IOException(file.getAbsolutePath() + " doesn't exists.");
+		} else if (file.isDirectory()) {
+			throw new IOException(file.getAbsolutePath() + " is a directory.");
+		} else if (!file.canRead()) {
+			throw new IOException(file.getAbsolutePath() + " is not readable.");
+		}
+		int len = (int)file.length();
+		final String res;
+		if (len != 0) {
+			res = getContent(len, new FileInputStream(file));
+		} else {
+			res = "";
+		}
+		return res;
+	}
+
+	/**
+	 * Gets the content of the given {@link File}.
+	 * 
+	 * @param length
+	 *            the {@link InputStream} size
+	 * @param inputStream
+	 *            the {@link InputStream}
+	 * @return a {@link String} of the content of the given {@link File}
+	 * @throws IOException
+	 *             if the {@link InputStream} can't be read
+	 */
+	public static String getContent(int length, InputStream inputStream) throws IOException {
+		final StringBuilder res = new StringBuilder(length);
+		final InputStreamReader input = new InputStreamReader(new BufferedInputStream(inputStream));
+
+		final char[] buffer = new char[length];
+		int len = input.read(buffer);
+		while (len != -1) {
+			res.append(buffer, 0, len);
+			len = input.read(buffer);
+		}
+		input.close();
+
+		return res.toString();
+	}
+
+	/**
+	 * Tells if the given {@link ILink} can be deleted.
+	 * 
+	 * @param link
+	 *            the {@link ILink} to check
+	 * @return <code>true</code> if the given {@link ILink} can be deleted, <code>false</code> otherwise
+	 */
+	public static boolean canDeleteLink(ILink link) {
+		return link.getReports().isEmpty();
+	}
+
+	/**
+	 * Deletes the given {@link ILink}.
+	 * 
+	 * @param link
+	 *            the {@link ILink} to delete
+	 */
+	public static void deleteLink(ILink link) {
+		if (canDeleteLink(link)) {
+			final ILocation source = link.getSource();
+			link.setSource(null);
+			if (source != null && source.isMarkedAsDeleted() && canDeleteLocation(source)) {
+				deleteLocation(source);
+			}
+			final ILocation target = link.getTarget();
+			link.setTarget(null);
+			if (target != null && target.isMarkedAsDeleted() && canDeleteLocation(target)) {
+				deleteLocation(target);
+			}
+		} else {
+			throw new IllegalStateException("can't delete a link with report.");
+		}
+	}
+
+	/**
+	 * Tells if the given {@link ILocation} can be deleted.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to check
+	 * @return <code>true</code> if the given {@link ILocation} can be deleted, <code>false</code> otherwise
+	 */
+	public static boolean canDeleteLocation(ILocation location) {
+		return location.getSourceLinks().isEmpty() && location.getTargetLinks().isEmpty() && location
+				.getContents().isEmpty();
+	}
+
+	/**
+	 * Deletes the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to delete
+	 */
+	public static void deleteLocation(ILocation location) {
+		if (canDeleteLocation(location)) {
+			final ILocationContainer container = location.getContainer();
+			location.setContainer(null);
+			if (container instanceof ILocation && ((ILocation)container).isMarkedAsDeleted()
+					&& canDeleteLocation((ILocation)container)) {
+				deleteLocation((ILocation)container);
+			}
+		} else {
+			throw new IllegalStateException("can't delete a location with links or contained locations.");
+		}
+	}
+
+	/**
+	 * Deletes the given {@link IReport}.
+	 * 
+	 * @param report
+	 *            the {@link IReport} to delete
+	 */
+	public static void deleteReport(IReport report) {
+		final IBase base = getBase(report.getLink().getSource());
+		base.getReports().remove(report);
+		report.setLink(null);
+	}
+
+	/**
+	 * {@link MappingUtils#deleteLocation(ILocation) Deletes} if
+	 * {@link MappingUtils#canDeleteLocation(ILocation) possible} or
+	 * {@link ILocation#setMarkedAsDeleted(boolean) mark as deleted} the given location. In the latest case an
+	 * {@link IReport} is created with the given {@link IReport#getDescription() description}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 * @return the {@link List} of creates {@link IReport}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public static List<IReport> markAsDeletedOrDelete(ILocation location, String reportDescription)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final List<IReport> res;
+
+		if (MappingUtils.canDeleteLocation(location)) {
+			MappingUtils.deleteLocation(location);
+			res = Collections.emptyList();
+		} else {
+			location.setMarkedAsDeleted(true);
+			res = createReportsForLinks(location, reportDescription);
+		}
+
+		return res;
+	}
+
+	/**
+	 * Marks the given location as changed and {@link IReport} are created.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 * @return the {@link List} of creates {@link IReport}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public static List<IReport> markAsChanged(ILocation location, String reportDescription)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		location.change(reportDescription);
+		return createReportsForLinks(location, reportDescription);
+	}
+
+	/**
+	 * Creates {@link IReport} for the given {@link ILocation} with the given {@link IReport}
+	 * {@link IReport#getDescription() description}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 * @return the {@link List} of creates {@link IReport}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	private static List<IReport> createReportsForLinks(ILocation location, String reportDescription)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final List<IReport> res = new ArrayList<IReport>();
+
+		final IBase base = MappingUtils.getBase(location);
+		for (ILink link : location.getSourceLinks()) {
+			res.add(createReport(base, link, reportDescription));
+		}
+		for (ILink link : location.getTargetLinks()) {
+			res.add(createReport(base, link, reportDescription));
+		}
+
+		return res;
+	}
+
+	/**
+	 * Creates an {@link IReport} for the given {@link ILink} with the given description.
+	 * 
+	 * @param link
+	 *            the {@link ILink}
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 * @return the created {@link IReport}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public static IReport createReport(ILink link, String reportDescription) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final IBase base = MappingUtils.getBase(link.getSource());
+
+		return createReport(base, link, reportDescription);
+	}
+
+	/**
+	 * Creates an {@link IReport} for the given {@link ILink} with the given description.
+	 * 
+	 * @param base
+	 *            the {@link IBase}
+	 * @param link
+	 *            the {@link ILink}
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 * @return the created {@link IReport}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	private static IReport createReport(final IBase base, ILink link, String reportDescription)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final IReport res = base.getFactory().createElement(IReport.class);
+
+		res.setLink(link);
+		res.setDescription(reportDescription);
+		base.getReports().add(res);
+
+		return res;
+	}
+
+	/**
+	 * Gets the {@link IFileTypeRegistry}.
+	 * 
+	 * @return the {@link IFileTypeRegistry}
+	 */
+	public static IFileTypeRegistry getFileTypeRegistry() {
+		return fileTypeRegistry;
+	}
+
+	/**
+	 * Sets the {@link IFileTypeRegistry}.
+	 * 
+	 * @param registry
+	 *            the new {@link IFileTypeRegistry}
+	 */
+	public static void setFileTypeRegistry(IFileTypeRegistry registry) {
+		fileTypeRegistry = registry;
+	}
+
+	/**
+	 * Gets the {@link ContainerProviderFactory}.
+	 * 
+	 * @return the {@link ContainerProviderFactory}
+	 */
+	public static ContainerProviderFactory getContainerProviderFactory() {
+		return CONTAINER_PROVIDER_FACTORY;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/BaseElementFactory.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/BaseElementFactory.java
new file mode 100644
index 0000000..45a702f
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/BaseElementFactory.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Creates instances of {@link IBaseElement}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class BaseElementFactory {
+
+	/**
+	 * Describe creation of an {@link IBaseElement}.
+	 * 
+	 * @param <T>
+	 *            the kind of {@link IBaseElement} described.
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface IFactoryDescriptor<T extends IBaseElement> {
+
+		/**
+		 * Creates a new instance of {@link IBaseElement}.
+		 * 
+		 * @return the created instance of {@link IBaseElement}
+		 * @throws IllegalAccessException
+		 *             if the class or its nullary constructor is not accessible
+		 * @throws InstantiationException
+		 *             if this Class represents an abstract class, an interface, an array class, a primitive
+		 *             type, or void; or if the class has no nullary constructor; or if the instantiation
+		 *             fails for some other reason
+		 * @throws ClassNotFoundException
+		 *             if the {@link Class} can't be found in the {@link ClassLoader}
+		 */
+		T createElement() throws InstantiationException, IllegalAccessException, ClassNotFoundException;
+	}
+
+	/**
+	 * Describe creation of an {@link IBaseElement}.
+	 * 
+	 * @param <T>
+	 *            the kind of {@link IBaseElement} described.
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static final class FactoryDescriptor<T extends IBaseElement> implements IFactoryDescriptor<T> {
+
+		/**
+		 * The {@link Class}.
+		 */
+		private final Class<T> clazz;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param clazz
+		 *            the {@link Class}
+		 */
+		public FactoryDescriptor(Class<T> clazz) {
+			this.clazz = clazz;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.BaseElementFactory.IFactoryDescriptor#createElement()
+		 */
+		public T createElement() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException {
+			return clazz.newInstance();
+		}
+
+	}
+
+	/**
+	 * Mapping from interfaces to instance classes.
+	 */
+	private final Map<Class<? extends IBaseElement>, IFactoryDescriptor<?>> descriptorMapping = new HashMap<Class<? extends IBaseElement>, IFactoryDescriptor<?>>();
+
+	/**
+	 * Gets the instance {@link IFactoryDescriptor} for the given interface {@link Class} from the
+	 * {@link BaseElementFactory#descriptorMapping mapping}.
+	 * 
+	 * @param cls
+	 *            the interface class
+	 * @param <T>
+	 *            the {@link IBaseElement} kind
+	 * @return the instance {@link Class} of the given interface {@link Class} from the
+	 *         {@link BaseElementFactory#descriptorMapping mapping}
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	@SuppressWarnings("unchecked")
+	private <T extends IBaseElement> IFactoryDescriptor<T> getDescriptor(Class<T> cls)
+			throws ClassNotFoundException {
+		return (IFactoryDescriptor<T>)descriptorMapping.get(cls);
+	}
+
+	/**
+	 * Creates an instance of {@link IBaseElement} for the given interface {@link Class}.
+	 * 
+	 * @param interfaceCls
+	 *            the interface class
+	 * @param <T>
+	 *            the {@link IBaseElement} kind
+	 * @return the created instance of {@link IBaseElement} for the given interface {@link Class} if an
+	 *         instance {@link Class} has been {@link BaseElementFactory#addDescriptor(Class, Class) added}
+	 *         for the interface {@link Class}, <code>null</code> otherwise
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public <T extends IBaseElement> T createElement(Class<T> interfaceCls) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final T res;
+
+		final IFactoryDescriptor<T> descriptor = getDescriptor(interfaceCls);
+		if (descriptor != null) {
+			res = descriptor.createElement();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Add an instance {@link Class} for the given interface {@link Class}.
+	 * 
+	 * @param interfaceCls
+	 *            the interface {@link Class}
+	 * @param descriptor
+	 *            the {@link IFactoryDescriptor}
+	 * @param <T>
+	 *            the {@link IBaseElement} kind
+	 */
+	public <T extends IBaseElement> void addDescriptor(Class<T> interfaceCls,
+			IFactoryDescriptor<? extends T> descriptor) {
+		descriptorMapping.put(interfaceCls, descriptor);
+	}
+
+	/**
+	 * Removes the instance {@link Class} of the given interface {@link Class}.
+	 * 
+	 * @param interfaceCls
+	 *            the interface {@link Class}
+	 */
+	public void removeDescriptor(Class<?> interfaceCls) {
+		descriptorMapping.remove(interfaceCls);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderFactory.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderFactory.java
new file mode 100644
index 0000000..e780688
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderFactory.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * Creates instances of {@link IContainerProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ContainerProviderFactory {
+
+	/**
+	 * Describe creation of an {@link IBaseElement}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface IFactoryDescriptor {
+
+		/**
+		 * Gets the {@link IContainerProvider} {@link Class#getCanonicalName() class name}.
+		 * 
+		 * @return the {@link IContainerProvider} {@link Class#getCanonicalName() class name}
+		 */
+		String getClassName();
+
+		/**
+		 * Creates a new instance of {@link IContainerProvider}.
+		 * 
+		 * @return the created instance of {@link IContainerProvider}
+		 * @throws IllegalAccessException
+		 *             if the class or its nullary constructor is not accessible
+		 * @throws InstantiationException
+		 *             if this Class represents an abstract class, an interface, an array class, a primitive
+		 *             type, or void; or if the class has no nullary constructor; or if the instantiation
+		 *             fails for some other reason
+		 * @throws ClassNotFoundException
+		 *             if the {@link Class} can't be found in the {@link ClassLoader}
+		 */
+		IContainerProvider createElement() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException;
+	}
+
+	/**
+	 * Describe creation of an {@link IContainerProvider}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static final class FactoryDescriptor implements IFactoryDescriptor {
+
+		/**
+		 * The {@link Class}.
+		 */
+		private final Class<? extends IContainerProvider> clazz;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param clazz
+		 *            the {@link Class}
+		 */
+		public FactoryDescriptor(Class<? extends IContainerProvider> clazz) {
+			this.clazz = clazz;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ContainerProviderFactory.IFactoryDescriptor#getClassName()
+		 */
+		public String getClassName() {
+			return clazz.getCanonicalName();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ContainerProviderFactory.IFactoryDescriptor#createElement()
+		 */
+		public IContainerProvider createElement() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException {
+			return clazz.newInstance();
+		}
+
+	}
+
+	/**
+	 * Mapping from {@link IFactoryDescriptor#getClassName() class name} to {@link IFactoryDescriptor}.
+	 */
+	private final Map<String, IFactoryDescriptor> descriptorMapping = new LinkedHashMap<String, IFactoryDescriptor>();
+
+	/**
+	 * Gets the instance {@link IFactoryDescriptor} for the given {@link Class#getCanonicalName() class name}
+	 * from the {@link ContainerProviderFactory#descriptorMapping mapping}.
+	 * 
+	 * @param className
+	 *            the {@link Class#getCanonicalName() class name}
+	 * @return the instance {@link Class} of the given interface {@link Class} from the
+	 *         {@link ContainerProviderFactory#descriptorMapping mapping}
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	private IFactoryDescriptor getDescriptor(String className) throws ClassNotFoundException {
+		return descriptorMapping.get(className);
+	}
+
+	/**
+	 * Creates an instance of {@link IContainerProvider} for the given interface
+	 * {@link Class#getCanonicalName() class name}.
+	 * 
+	 * @param className
+	 *            the {@link Class#getCanonicalName() class name}
+	 * @return the created instance of {@link IContainerProvider} if the {@link Class#getCanonicalName() class
+	 *         name} has been {@link ContainerProviderFactory#addDescriptor(IFactoryDescriptor) added} for the
+	 *         {@link Class#getCanonicalName() class name}, <code>null</code> otherwise
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	public IContainerProvider createProvider(String className) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final IContainerProvider res;
+
+		final IFactoryDescriptor descriptor = getDescriptor(className);
+		if (descriptor != null) {
+			res = descriptor.createElement();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Add the given {@link IFactoryDescriptor}.
+	 * 
+	 * @param descriptor
+	 *            the {@link IFactoryDescriptor}
+	 */
+	public void addDescriptor(IFactoryDescriptor descriptor) {
+		descriptorMapping.put(descriptor.getClassName(), descriptor);
+	}
+
+	/**
+	 * Removes the {@link IFactoryDescriptor} for the given {@link Class#getCanonicalName() class name}.
+	 * 
+	 * @param className
+	 *            the {@link Class#getCanonicalName() class name}
+	 */
+	public void removeDescriptor(String className) {
+		descriptorMapping.remove(className);
+	}
+
+	public List<String> getProviderNames() {
+		return new ArrayList<String>(descriptorMapping.keySet());
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderRegistry.java
new file mode 100644
index 0000000..3a7d575
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ContainerProviderRegistry.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.connector.IConnectorRegistry;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.internal.connector.ConnectorRegistry;
+import org.eclipse.intent.mapping.text.TextRegionContainerProvider;
+
+/**
+ * The default implementation of {@link IContainerProviderRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ContainerProviderRegistry implements IContainerProviderRegistry {
+
+	/**
+	 * The {@link List} of {@link ConnectorRegistry#register(IContainerProvider) registered}
+	 * {@link IContainerProvider}.
+	 */
+	private final List<IContainerProvider> providers = Collections.synchronizedList(
+			new ArrayList<IContainerProvider>());
+
+	/**
+	 * Mapping of provider name to instance.
+	 */
+	private final Map<String, IContainerProvider> nameToProvider = new HashMap<String, IContainerProvider>();
+
+	/**
+	 * The {@link IBase} we are attached to.
+	 */
+	private final IBase base;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param base
+	 *            the {@link IBase} to attach to
+	 */
+	public ContainerProviderRegistry(IBase base) {
+		this.base = base;
+		synchronized(providers) {
+			providers.add(new TextRegionContainerProvider());
+		}
+		for (String providerName : base.getContainerProviders()) {
+			try {
+				register(MappingUtils.getContainerProviderFactory().createProvider(providerName));
+			} catch (InstantiationException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (IllegalAccessException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (ClassNotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		base.addListener(new IBaseListener.Stub() {
+			@Override
+			public void containerProviderAdded(String provider) {
+				try {
+					register(MappingUtils.getContainerProviderFactory().createProvider(provider));
+				} catch (InstantiationException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				} catch (IllegalAccessException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				} catch (ClassNotFoundException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+
+			@Override
+			public void containerProviderRemoved(String provider) {
+				final IContainerProvider providerInstance = nameToProvider.get(provider);
+				if (providerInstance != null) {
+					unregister(providerInstance);
+				}
+			}
+		});
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#register(org.eclipse.intent.mapping.connector.IContainerProvider)
+	 */
+	public void register(IContainerProvider provider) {
+		if (provider != null) {
+			synchronized(providers) {
+				if (!nameToProvider.containsKey(provider.getClass().getCanonicalName())) {
+					providers.add(provider);
+					nameToProvider.put(provider.getClass().getCanonicalName(), provider);
+					base.getContainerProviders().add(provider.getClass().getCanonicalName());
+				}
+			}
+		} else {
+			throw new IllegalArgumentException("IContainerProvider can't be null.");
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#unregister(org.eclipse.intent.mapping.connector.IContainerProvider)
+	 */
+	public void unregister(IContainerProvider provider) {
+		synchronized(providers) {
+			final IContainerProvider providerInstance = nameToProvider.remove(provider.getClass()
+					.getCanonicalName());
+			if (providerInstance != null) {
+				providers.remove(provider);
+				base.getContainerProviders().remove(provider.getClass().getCanonicalName());
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getContainer(java.lang.Object)
+	 */
+	public Object getContainer(Object element) {
+		for (IContainerProvider provider : getContainerProviders()) {
+			final Object container = provider.getContainer(element);
+			if (container != null) {
+				return container;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * Gets the {@link List} of {@link IConnectorRegistry#register(IContainerProvider) registered}
+	 * {@link IContainerProvider}.
+	 * 
+	 * @return the {@link List} of {@link IConnectorRegistry#register(IContainerProvider) registered}
+	 *         {@link IContainerProvider}
+	 */
+	protected List<IContainerProvider> getContainerProviders() {
+		synchronized(providers) {
+			return Collections.unmodifiableList(new ArrayList<IContainerProvider>(providers));
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBase.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBase.java
new file mode 100644
index 0000000..757eb10
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBase.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * A base stores root {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBase extends IMappingElement, ILocationContainer {
+
+	/**
+	 * Sets the {@link IBase#getName() name} of the {@link IBase}.
+	 * 
+	 * @param name
+	 *            the name of the IBase
+	 */
+	void setName(String name);
+
+	/**
+	 * Gets the name of the {@link IBase}.
+	 * 
+	 * @return the name of the {@link IBase}
+	 */
+	String getName();
+
+	/**
+	 * Adds a {@link IBaseListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IBaseListener} to add
+	 */
+	void addListener(IBaseListener listener);
+
+	/**
+	 * Removes a {@link IBaseListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IBaseListener} to remove
+	 */
+	void removeListener(IBaseListener listener);
+
+	/**
+	 * Gets the {@link BaseElementFactory} use to create instances of {@link ILocation} for this {@link IBase}
+	 * .
+	 * 
+	 * @return the {@link BaseElementFactory} use to create instances of {@link ILocation} for this
+	 *         {@link IBase}
+	 */
+	BaseElementFactory getFactory();
+
+	/**
+	 * Gets the {@link List} of {@link IReport}.
+	 * 
+	 * @return the {@link List} of {@link IReport}
+	 */
+	List<IReport> getReports();
+
+	/**
+	 * Gets the {@link List} of {@link IContainerProvider} {@link Class#getCanonicalName() class name}.
+	 * 
+	 * @return the {@link List} of {@link IContainerProvider} {@link Class#getCanonicalName() class name}
+	 */
+	List<String> getContainerProviders();
+
+	/**
+	 * Gets the {@link ContainerProviderRegistry}.
+	 * 
+	 * @return the {@link ContainerProviderRegistry}
+	 */
+	ContainerProviderRegistry getContainerProviderRegistry();
+
+	/**
+	 * Saves the base.
+	 * 
+	 * @throws IOException
+	 *             if serialization went wrong
+	 */
+	void save() throws IOException;
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseElement.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseElement.java
new file mode 100644
index 0000000..9e44b01
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseElement.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Marks each elements of {@link IBase}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBaseElement {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseListener.java
new file mode 100644
index 0000000..a338676
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseListener.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * Listen to {@link IBase} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBaseListener extends ILocationContainerListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub extends ILocationContainerListener.Stub implements IBaseListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#nameChanged(java.lang.String, java.lang.String)
+		 */
+		public void nameChanged(String oldName, String newName) {
+			// nothing to do here
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportAdded(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportAdded(IReport report) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportRemoved(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportRemoved(IReport report) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderAdded(java.lang.String)
+		 */
+		public void containerProviderAdded(String provider) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderRemoved(java.lang.String)
+		 */
+		public void containerProviderRemoved(String provider) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Notifies when the {@link IBase#getName() name} has been changed.
+	 * 
+	 * @param oldName
+	 *            the old {@link IBase#getName() name}
+	 * @param newName
+	 *            the new {@link IBase#getName() name}
+	 */
+	void nameChanged(String oldName, String newName);
+
+	/**
+	 * Notifies when the {@link IBase#getReports() reports} {@link IReport} is added.
+	 * 
+	 * @param report
+	 *            the added {@link IBase#getReports() reports} {@link IReport}
+	 */
+	void reportAdded(IReport report);
+
+	/**
+	 * Notifies when the {@link IBase#getReports() reports} {@link IReport} is removed.
+	 * 
+	 * @param report
+	 *            the removed {@link IBase#getReports() reports} {@link IReport}
+	 */
+	void reportRemoved(IReport report);
+
+	/**
+	 * Notifies when the {@link IBase#getContainerProviders() providers} is added.
+	 * 
+	 * @param provider
+	 *            the {@link IContainerProvider} {@link Class#getCanonicalName() class name}
+	 */
+	void containerProviderAdded(String provider);
+
+	/**
+	 * Notifies when the {@link IBase#getContainerProviders() provider} is removed.
+	 * 
+	 * @param provider
+	 *            the {@link IContainerProvider} {@link Class#getCanonicalName() class name}
+	 */
+	void containerProviderRemoved(String provider);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistry.java
new file mode 100644
index 0000000..547c293
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistry.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.util.Set;
+
+/**
+ * The {@link IBase} registry maintains a set of active {@link IBase}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBaseRegistry {
+
+	/**
+	 * Registers an {@link IBase}.
+	 * 
+	 * @param base
+	 *            the {@link IBase} to register
+	 */
+	void register(IBase base);
+
+	/**
+	 * Unregisters an {@link IBase}.
+	 * 
+	 * @param base
+	 *            the {@link IBase} to unregister
+	 */
+	void unregister(IBase base);
+
+	/**
+	 * Gets the {@link Set} of registered {@link IBase}.
+	 * 
+	 * @return the {@link Set} of registered {@link IBase}
+	 */
+	Set<IBase> getBases();
+
+	/**
+	 * Adds an {@link IBaseRegistryListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IBaseRegistryListener} to add
+	 */
+	void addListener(IBaseRegistryListener listener);
+
+	/**
+	 * Removes an {@link IBaseRegistryListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IBaseRegistryListener} to remove
+	 */
+	void removeListener(IBaseRegistryListener listener);
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistryListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistryListener.java
new file mode 100644
index 0000000..2c60100
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IBaseRegistryListener.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Listen to {@link IBaseRegistry} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBaseRegistryListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub implements IBaseRegistryListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseRegistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseRegistred(IBase base) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseUnregistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseUnregistred(IBase base) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Notification when an {@link IBase} is {@link IBaseRegistry#register(IBase) registered}.
+	 * 
+	 * @param base
+	 *            the registered {@link IBase}
+	 */
+	void baseRegistred(IBase base);
+
+	/**
+	 * Notification when an {@link IBase} is {@link IBaseRegistry#unregister(IBase) unregistered}.
+	 * 
+	 * @param base
+	 *            the unregistered {@link IBase}
+	 */
+	void baseUnregistred(IBase base);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IContainerProviderRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IContainerProviderRegistry.java
new file mode 100644
index 0000000..848bc87
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IContainerProviderRegistry.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import org.eclipse.intent.mapping.connector.IConnector;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * A registry for {@link IContainerProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IContainerProviderRegistry {
+
+	/**
+	 * Registers the given {@link IContainerProvider}.
+	 * 
+	 * @param provider
+	 *            the {@link IConnector} to register
+	 */
+	void register(IContainerProvider provider);
+
+	/**
+	 * Unregisters the given {@link IContainerProvider}.
+	 * 
+	 * @param provider
+	 *            the {@link IContainerProvider} to register
+	 */
+	void unregister(IContainerProvider provider);
+
+	/**
+	 * Gets the container of the given element.
+	 * 
+	 * @param element
+	 *            the element
+	 * @return the container of the given element if any, <code>null</code> otherwise
+	 */
+	Object getContainer(Object element);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILink.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILink.java
new file mode 100644
index 0000000..6e2d8df
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILink.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Connect two {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILink extends IMappingElement, IBaseElement {
+
+	/**
+	 * Sets the {@link ILink#getDescription(String) description} of the {@link ILink}.
+	 * 
+	 * @param description
+	 *            the {@link ILink#getDescription(String) description}
+	 */
+	void setDescription(String description);
+
+	/**
+	 * Gets the description of the {@link ILink}.
+	 * 
+	 * @return the description of the {@link ILink}
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the {@link ILink#getSource() source} {@link ILocation} of the {@link ILink}.
+	 * 
+	 * @param location
+	 *            the {@link ILink#getSource() source} {@link ILocation}
+	 */
+	void setSource(ILocation location);
+
+	/**
+	 * Gets the source {@link ILocation}.
+	 * 
+	 * @return the source {@link ILocation}s
+	 */
+	ILocation getSource();
+
+	/**
+	 * Sets the {@link ILink#getTarget() target} {@link ILocation} of the {@link ILink}.
+	 * 
+	 * @param location
+	 *            the {@link ILink#getTarget() target} {@link ILocation}
+	 */
+	void setTarget(ILocation location);
+
+	/**
+	 * Gets the target {@link ILocation} if the {@link ILink}.
+	 * 
+	 * @return the target {@link ILocation} if the {@link ILink}
+	 */
+	ILocation getTarget();
+
+	/**
+	 * Adds a {@link ILinkListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ILinkListener} to add
+	 */
+	void addListener(ILinkListener listener);
+
+	/**
+	 * Removes a {@link ILinkListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ILinkListener} to remove
+	 */
+	void removeListener(ILinkListener listener);
+
+	/**
+	 * Gets the type.
+	 * 
+	 * @return the type
+	 */
+	Serializable getType();
+
+	/**
+	 * Sets the type.
+	 * 
+	 * @param type
+	 *            the type
+	 */
+	void setType(Serializable type);
+
+	/**
+	 * Gets the {@link List} of {@link IReport} for this {@link ILink}.
+	 * 
+	 * @return the {@link List} of {@link IReport} for this {@link ILink}
+	 */
+	List<IReport> getReports();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILinkListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILinkListener.java
new file mode 100644
index 0000000..fc82bc0
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILinkListener.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Oveo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Listen to {@link ILink} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILinkListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub implements ILinkListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener#descriptionChanged(java.lang.String,
+		 *      java.lang.String)
+		 */
+		public void descriptionChanged(String oldDescription, String newDescription) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener#sourceChanged(org.eclipse.intent.mapping.base.ILocation,
+		 *      org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void sourceChanged(ILocation oldSource, ILocation newSource) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener#targetChanged(org.eclipse.intent.mapping.base.ILocation,
+		 *      org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void targetChanged(ILocation oldTarget, ILocation newTarget) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener#reportAdded(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportAdded(IReport report) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILinkListener#reportRemoved(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportRemoved(IReport report) {
+			// nothing to do here
+		}
+	}
+
+	/**
+	 * Notifies when the {@link ILink#getDescription() description} is changed.
+	 * 
+	 * @param oldDescription
+	 *            the old {@link ILink#getDescription() description}
+	 * @param newDescription
+	 *            the new {@link ILink#getDescription() description}
+	 */
+	void descriptionChanged(String oldDescription, String newDescription);
+
+	/**
+	 * Notifies when the {@link ILink#getSource() source} is changed.
+	 * 
+	 * @param oldSource
+	 *            the old {@link ILink#getSource() source}
+	 * @param newSource
+	 *            the new {@link ILink#getSource() source}
+	 */
+	void sourceChanged(ILocation oldSource, ILocation newSource);
+
+	/**
+	 * Notifies when the {@link ILink#getTarget() target} is changed.
+	 * 
+	 * @param oldTarget
+	 *            the old {@link ILink#getTarget() target}
+	 * @param newTarget
+	 *            the new {@link ILink#getTarget() target}
+	 */
+	void targetChanged(ILocation oldTarget, ILocation newTarget);
+
+	/**
+	 * Notifies when the {@link ILink#getReports() reports} {@link IReport} is added.
+	 * 
+	 * @param report
+	 *            the added {@link ILink#getReports() reports} {@link IReport}
+	 */
+	void reportAdded(IReport report);
+
+	/**
+	 * Notifies when the {@link ILink#getReports() reports} {@link IReport} is removed.
+	 * 
+	 * @param report
+	 *            the removed {@link ILink#getReports() reports} {@link IReport}
+	 */
+	void reportRemoved(IReport report);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocation.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocation.java
new file mode 100644
index 0000000..cd25831
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocation.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Locate a part of a resource according to available {@link ILocationAdapter}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocation extends IMappingElement, ILocationContainer, IBaseElement {
+
+	/**
+	 * Gets the {@link List} of {@link ILink} that have this {@link ILocation} as {@link ILink#getTarget()
+	 * target}.
+	 * 
+	 * @return the {@link List} of {@link ILink} that have this {@link ILocation} as {@link ILink#getTarget()
+	 *         target}
+	 */
+	List<ILink> getSourceLinks();
+
+	/**
+	 * Gets the {@link List} of {@link ILink} that have this {@link ILocation} as {@link ILink#getSource()
+	 * source}.
+	 * 
+	 * @return the {@link List} of {@link ILink} that have this {@link ILocation} as {@link ILink#getSource()
+	 *         source}
+	 */
+	List<ILink> getTargetLinks();
+
+	/**
+	 * Sets the containing {@link ILocation}.
+	 * 
+	 * @param container
+	 *            the containing {@link ILocationContainer}
+	 */
+	void setContainer(ILocationContainer container);
+
+	/**
+	 * Gets the containing {@link ILocationContainer}.
+	 * 
+	 * @return the containing {@link ILocationContainer} if any, <code>null</code> otherwise
+	 */
+	ILocationContainer getContainer();
+
+	/**
+	 * Adds a {@link ILocationListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ILocationListener} to add
+	 */
+	void addListener(ILocationListener listener);
+
+	/**
+	 * Removes a {@link ILocationListener}.
+	 * 
+	 * @param listener
+	 *            the {@link ILocationListener} to remove
+	 */
+	void removeListener(ILocationListener listener);
+
+	/**
+	 * Gets the type.
+	 * 
+	 * @return the type
+	 */
+	Serializable getType();
+
+	/**
+	 * Sets the type.
+	 * 
+	 * @param type
+	 *            the type
+	 */
+	void setType(Serializable type);
+
+	/**
+	 * Sets mark the location as deleted.
+	 * 
+	 * @param markedAsDeleted
+	 *            if <code>true</code> mark the location as deleted
+	 */
+	void setMarkedAsDeleted(boolean markedAsDeleted);
+
+	/**
+	 * Tells if the location is marked as deleted.
+	 * 
+	 * @return <code>true</code> if the location is marked as deleted, <code>false</code> otherwise
+	 */
+	boolean isMarkedAsDeleted();
+
+	/**
+	 * Change the {@link ILocation}.
+	 * 
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 */
+	void change(String reportDescription);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationAdapter.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationAdapter.java
new file mode 100644
index 0000000..8f3bbb1
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationAdapter.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Adapt an {@link Object} into an {@link ILocation} and vis versa.
+ * 
+ * @param <T>
+ *            the {@link Object} kind
+ * @param <LT>
+ *            the {@link ILocation} kind
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationAdapter<T, LT extends ILocation> {
+
+	/**
+	 * Gets the {@link ILocation} from the given {@link Object}.
+	 * 
+	 * @param object
+	 *            the {@link Object} to adapt
+	 * @return the {@link ILocation} from the given {@link Object}
+	 */
+	LT getLocation(T object);
+
+	/**
+	 * Gets the {@link Object} from the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to adapt
+	 * @return the {@link Object} from the given {@link ILocation}
+	 */
+	T getObject(LT location);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainer.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainer.java
new file mode 100644
index 0000000..3a74a6c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainer.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import java.util.List;
+
+/**
+ * Contains {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationContainer {
+
+	/**
+	 * Gets the {@link List} of contained {@link ILocation}.
+	 * 
+	 * @return the {@link List} of contained {@link ILocation}
+	 */
+	List<ILocation> getContents();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainerListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainerListener.java
new file mode 100644
index 0000000..ee47e7d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationContainerListener.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Listen to {@link ILocationContainer} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationContainerListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub implements ILocationContainerListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationContainerListener#contentsAdded(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsAdded(ILocation location) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationContainerListener#contentsRemoved(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsRemoved(ILocation location) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Notifies when the {@link ILocation#getContents() content} {@link ILocation} is added.
+	 * 
+	 * @param location
+	 *            the added {@link ILocation#getContents() content} {@link ILocation}
+	 */
+	void contentsAdded(ILocation location);
+
+	/**
+	 * Notifies when the {@link ILocation#getContents() content} {@link ILocation} is removed.
+	 * 
+	 * @param location
+	 *            the removed {@link ILocation#getContents() content} {@link ILocation}
+	 */
+	void contentsRemoved(ILocation location);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationDescriptor.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationDescriptor.java
new file mode 100644
index 0000000..4eee12d
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationDescriptor.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Describe an {@link ILocation} in order to access it or create it.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationDescriptor {
+
+	/**
+	 * Gets the {@link ILocation#getContainer() container} {@link ILocationDescriptor}.
+	 * 
+	 * @return the {@link ILocation#getContainer() container} {@link ILocationDescriptor} if any,
+	 *         <code>null</code> otherwise
+	 */
+	ILocationDescriptor getContainerDescriptor();
+
+	/**
+	 * Tells if the described {@link ILocation} exists.
+	 * 
+	 * @return <code>true</code> if the described {@link ILocation} exists, <code>false</code> otherwise
+	 */
+	boolean exists();
+
+	/**
+	 * Gets the {@link ILocation} if it {@link ILocationDescriptor#exists() exists}.
+	 * 
+	 * @return the {@link ILocation} if it {@link ILocationDescriptor#exists() exists}, <code>null</code>
+	 *         otherwise
+	 */
+	ILocation getLocation();
+
+	/**
+	 * Gets or creates the described {@link ILocation}. It will {@link ILocationDescriptor#getOrCreate()
+	 * create} {@link ILocationDescriptor#getContainerDescriptor() described containers}.
+	 * 
+	 * @return the described {@link ILocation}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	ILocation getOrCreate() throws InstantiationException, IllegalAccessException, ClassNotFoundException;
+
+	/**
+	 * Updates with the given Element.
+	 * 
+	 * @param element
+	 *            the element
+	 * @return <code>true</code> if updated, <code>false</code> otherwise
+	 */
+	boolean update(Object element);
+
+	/**
+	 * Gets the located element.
+	 * 
+	 * @return the located element
+	 */
+	Object getElement();
+
+	/**
+	 * Gets the human readable name.
+	 * 
+	 * @return the human readable name
+	 */
+	String getName();
+
+	/**
+	 * Disposes the descriptor when not needed anymore.
+	 */
+	void dispose();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationListener.java
new file mode 100644
index 0000000..6544894
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/ILocationListener.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Listen to {@link ILocation} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ILocationListener extends ILocationContainerListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub extends ILocationContainerListener.Stub implements ILocationListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#sourceLinkAdded(org.eclipse.intent.mapping.base.ILink)
+		 */
+		public void sourceLinkAdded(ILink link) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#sourceLinkRemoved(org.eclipse.intent.mapping.base.ILink)
+		 */
+		public void sourceLinkRemoved(ILink link) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#targetLinkAdded(org.eclipse.intent.mapping.base.ILink)
+		 */
+		public void targetLinkAdded(ILink link) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#targetLinkRemoved(org.eclipse.intent.mapping.base.ILink)
+		 */
+		public void targetLinkRemoved(ILink link) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#containerChanged(org.eclipse.intent.mapping.base.ILocationContainer,
+		 *      org.eclipse.intent.mapping.base.ILocationContainer)
+		 */
+		public void containerChanged(ILocationContainer oldContainer, ILocationContainer newContainer) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#markedAsDeletedChanged(boolean)
+		 */
+		public void markedAsDeletedChanged(boolean newValue) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationListener#changed(java.lang.String)
+		 */
+		public void changed(String reportDescription) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Notifies when the {@link ILocation#getSourceLinks() source} {@link ILink} is added.
+	 * 
+	 * @param link
+	 *            the added {@link ILocation#getSourceLinks() source} {@link ILink}
+	 */
+	void sourceLinkAdded(ILink link);
+
+	/**
+	 * Notifies when the {@link ILocation#getSourceLinks() source} {@link ILink} is removed.
+	 * 
+	 * @param link
+	 *            the removed {@link ILocation#getSourceLinks() source} {@link ILink}
+	 */
+	void sourceLinkRemoved(ILink link);
+
+	/**
+	 * Notifies when the {@link ILocation#getTargetLinks() target} {@link ILink} is added.
+	 * 
+	 * @param link
+	 *            the added {@link ILocation#getTargetLinks() target} {@link ILink}
+	 */
+	void targetLinkAdded(ILink link);
+
+	/**
+	 * Notifies when the {@link ILocation#getTargetLinks() target} {@link ILink} is removed.
+	 * 
+	 * @param link
+	 *            the removed {@link ILocation#getTargetLinks() target} {@link ILink}
+	 */
+	void targetLinkRemoved(ILink link);
+
+	/**
+	 * Notifies when the {@link ILocation#getContainer() container} {@link ILocationContainer} has changed.
+	 * 
+	 * @param oldContainer
+	 *            the old {@link ILocationContainer}
+	 * @param newContainer
+	 *            the new {@link ILocationContainer}
+	 */
+	void containerChanged(ILocationContainer oldContainer, ILocationContainer newContainer);
+
+	/**
+	 * Notifies when the {@link ILocation#isMarkedAsDeleted() marked as deleted} has changed.
+	 * 
+	 * @param newValue
+	 *            the new value
+	 */
+	void markedAsDeletedChanged(boolean newValue);
+
+	/**
+	 * Notifies when the location has been {@link ILocation#change(String) changed}.
+	 * 
+	 * @param reportDescription
+	 *            the {@link IReport} {@link IReport#getDescription() description}
+	 */
+	void changed(String reportDescription);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IMappingElement.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IMappingElement.java
new file mode 100644
index 0000000..c927cce
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IMappingElement.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Mapping element.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IMappingElement {
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReport.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReport.java
new file mode 100644
index 0000000..c978f1c
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReport.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ober.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Reports a problem on a {@link ILink}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IReport extends IBaseElement {
+
+	/**
+	 * Sets the {@link ILink} this {@link IReport report} applies on.
+	 * 
+	 * @param link
+	 *            the {@link ILink}
+	 */
+	void setLink(ILink link);
+
+	/**
+	 * Gets the {@link ILink} this {@link IReport report} applies on.
+	 * 
+	 * @return the {@link ILink} this {@link IReport report} applies on
+	 */
+	ILink getLink();
+
+	/**
+	 * Sets the description.
+	 * 
+	 * @param description
+	 *            the description
+	 */
+	void setDescription(String description);
+
+	/**
+	 * Gets the description.
+	 * 
+	 * @return the description
+	 */
+	String getDescription();
+
+	/**
+	 * Adds a {@link IReportListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IReportListener} to add
+	 */
+	void addListener(IReportListener listener);
+
+	/**
+	 * Removes a {@link IReportListener}.
+	 * 
+	 * @param listener
+	 *            the {@link IReportListener} to remove
+	 */
+	void removeListener(IReportListener listener);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReportListener.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReportListener.java
new file mode 100644
index 0000000..07a777e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/IReportListener.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+/**
+ * Listen to {@link IReport} changes.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IReportListener {
+
+	/**
+	 * Stub implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	class Stub implements IReportListener {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IReportListener#descriptionChanged(java.lang.String,
+		 *      java.lang.String)
+		 */
+		public void descriptionChanged(String oldDescription, String newDescription) {
+			// nothing to do here
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IReportListener#linkChanged(org.eclipse.intent.mapping.base.ILink,
+		 *      org.eclipse.intent.mapping.base.ILink)
+		 */
+		public void linkChanged(ILink oldLink, ILink newLink) {
+			// nothing to do here
+		}
+	}
+
+	/**
+	 * Notifies when the {@link IReport#getDescription() description} is changed.
+	 * 
+	 * @param oldDescription
+	 *            the old {@link IReport#getDescription() description}
+	 * @param newDescription
+	 *            the new {@link IReport#getDescription() description}
+	 */
+	void descriptionChanged(String oldDescription, String newDescription);
+
+	/**
+	 * Notifies when the {@link IReport#getLink() link} is changed.
+	 * 
+	 * @param oldLink
+	 *            the old {@link IReport#getLink() link}
+	 * @param newLink
+	 *            the new {@link IReport#getLink() link}
+	 */
+	void linkChanged(ILink oldLink, ILink newLink);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/LocationDescriptor.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/LocationDescriptor.java
new file mode 100644
index 0000000..bcef987
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/base/LocationDescriptor.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.base;
+
+import org.eclipse.intent.mapping.MappingUtils;
+
+/**
+ * {@link ILocationDescriptor} for an existing {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LocationDescriptor implements ILocationDescriptor {
+
+	/**
+	 * The {@link ILocation}.
+	 */
+	private final ILocation location;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 */
+	public LocationDescriptor(ILocation location) {
+		this.location = location;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getContainerDescriptor()
+	 */
+	public ILocationDescriptor getContainerDescriptor() {
+		final ILocationDescriptor res;
+
+		if (location.getContainer() instanceof ILocation) {
+			res = new LocationDescriptor((ILocation)location.getContainer());
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#exists()
+	 */
+	public boolean exists() {
+		return true;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getLocation()
+	 */
+	public ILocation getLocation() {
+		return location;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getOrCreate()
+	 */
+	public ILocation getOrCreate() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return location;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#update(java.lang.Object)
+	 */
+	public boolean update(Object element) {
+		return MappingUtils.getConnectorRegistry().updateLocation(location, element);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getElement()
+	 */
+	public Object getElement() {
+		return MappingUtils.getConnectorRegistry().getElement(location);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getName()
+	 */
+	public String getName() {
+		return MappingUtils.getConnectorRegistry().getName(location);
+	}
+
+	@Override
+	public int hashCode() {
+		return location.hashCode();
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		return obj instanceof LocationDescriptor && location.equals(((LocationDescriptor)obj).location);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#dispose()
+	 */
+	public void dispose() {
+		// nothing to do here
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/AbstractConnector.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/AbstractConnector.java
new file mode 100644
index 0000000..33bfa38
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/AbstractConnector.java
@@ -0,0 +1,372 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+
+/**
+ * An abstract implementation of {@link IConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractConnector implements IConnector {
+
+	/**
+	 * {@link ILocationDescriptor} based on a {@link Object} and a location type.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	protected class ObjectLocationDescriptor implements ILocationDescriptor {
+
+		/**
+		 * The located {@link Object element}.
+		 */
+		private Object element;
+
+		/**
+		 * The containing {@link IBase}.
+		 */
+		private final IBase base;
+
+		/**
+		 * The {@link ILocationDescriptor#getContainerDescriptor() container descriptor}.
+		 */
+		private final ILocationDescriptor containerDescriptor;
+
+		/**
+		 * The human readable name.
+		 */
+		private final String name;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param base
+		 *            the containing {@link IBase}
+		 * @param element
+		 *            the {@link Object}
+		 * @param name
+		 *            the human readable name
+		 */
+		public ObjectLocationDescriptor(IBase base, Object element, String name) {
+			this.base = base;
+			final ILocationDescriptor containerDesc;
+			final Object container = base.getContainerProviderRegistry().getContainer(element);
+			if (container != null) {
+				containerDesc = MappingUtils.getConnectorRegistry().getLocationDescriptor(base, container);
+				if (containerDesc == null) {
+					throw new IllegalStateException(
+							"the ILocationDescriptor container should not be null at this point.");
+				}
+			} else {
+				containerDesc = null;
+			}
+			this.containerDescriptor = containerDesc;
+			this.element = element;
+			this.name = name;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getContainerDescriptor()
+		 */
+		public ILocationDescriptor getContainerDescriptor() {
+			return containerDescriptor;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#exists()
+		 */
+		public boolean exists() {
+			return getLocation() != null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getLocation()
+		 */
+		public ILocation getLocation() {
+			final ILocation res;
+
+			if (getContainerDescriptor() == null) {
+				res = AbstractConnector.this.getLocation(base, element);
+			} else if (getContainerDescriptor().exists()) {
+				res = AbstractConnector.this.getLocation(getContainerDescriptor().getLocation(), element);
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getOrCreate()
+		 */
+		public ILocation getOrCreate() throws InstantiationException, IllegalAccessException,
+				ClassNotFoundException {
+			final ILocation res;
+
+			final ILocationContainer container;
+			if (getContainerDescriptor() == null) {
+				container = base;
+			} else {
+				container = getContainerDescriptor().getOrCreate();
+			}
+
+			final ILocation existingLocation = AbstractConnector.this.getLocation(container, element);
+			if (existingLocation != null) {
+				res = existingLocation;
+			} else {
+				res = AbstractConnector.this.createLocation(container, element);
+			}
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#update(java.lang.Object)
+		 */
+		public boolean update(Object e) {
+			return AbstractConnector.this.updateLocationDescriptor(this, e);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getElement()
+		 */
+		public Object getElement() {
+			return element;
+		}
+
+		/**
+		 * Sets the given element.
+		 * 
+		 * @param element
+		 *            the element
+		 */
+		public void setElement(Object element) {
+			this.element = element;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#getName()
+		 */
+		public String getName() {
+			return name;
+		}
+
+		@Override
+		public int hashCode() {
+			return element.hashCode();
+		}
+
+		@Override
+		public boolean equals(Object obj) {
+			return obj instanceof ObjectLocationDescriptor && element.equals(
+					((ObjectLocationDescriptor)obj).element);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.ILocationDescriptor#dispose()
+		 */
+		public void dispose() {
+			AbstractConnector.this.dispose(this);
+		}
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#canHandle(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public boolean canHandle(ILocation location) {
+		return getType().isAssignableFrom(location.getClass());
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#createLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      java.lang.Object)
+	 */
+	public ILocation createLocation(ILocationContainer container, Object element)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILocation res;
+
+		final Object adaptedElement = adapt(element);
+		final Class<? extends ILocation> locationType = getLocationType(getContainerType(container),
+				adaptedElement);
+		if (locationType != null) {
+			final ILocation location = MappingUtils.getBase(container).getFactory().createElement(
+					locationType);
+			if (location == null) {
+				throw new IllegalArgumentException("The base can't create " + locationType.getSimpleName());
+			} else {
+				initLocation(container, location, adaptedElement);
+				location.setContainer(container);
+				res = location;
+			}
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#updateLocation(org.eclipse.intent.mapping.base.ILocation,
+	 *      java.lang.Object)
+	 */
+	public boolean updateLocation(ILocation location, Object element) {
+		final boolean res = canUpdate(element);
+
+		if (res) {
+			update(location, element);
+		}
+
+		return res;
+	}
+
+	/**
+	 * Updates the given {@link ObjectLocationDescriptor} with the given element.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ObjectLocationDescriptor} to update
+	 * @param element
+	 *            the element
+	 * @return <code>true</code> if any changes has been done, <code>false</code> otherwise
+	 */
+	public boolean updateLocationDescriptor(ObjectLocationDescriptor locationDescriptor, Object element) {
+		locationDescriptor.setElement(element);
+
+		return true;
+	}
+
+	/**
+	 * Tells if we can update with the given located element.
+	 * 
+	 * @param element
+	 *            the located element
+	 * @return <code>true</code> if we can update with the given located element, <code>false</code> otherwise
+	 */
+	protected abstract boolean canUpdate(Object element);
+
+	/**
+	 * Update the given {@link ILocation} by {@link AbstractConnector#initLocation(ILocation, Object)
+	 * initializing} it with the given element.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to update
+	 * @param element
+	 *            the located element
+	 */
+	protected void update(ILocation location, Object element) {
+		initLocation(location.getContainer(), location, element);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      java.lang.Object)
+	 */
+	public ILocation getLocation(ILocationContainer container, Object element) {
+		final Object adaptedElement = adapt(element);
+		final Class<? extends ILocationContainer> locationType = getLocationType(getContainerType(container),
+				adaptedElement);
+		if (locationType != null) {
+			for (ILocation location : container.getContents()) {
+				if (match(location, element)) {
+					return location;
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * Tells if the given location match the given {@link Object element}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @param element
+	 *            the {@link Object element}
+	 * @return <code>true</code> if the given location match the given {@link Object element};
+	 *         <code>false</code> otherwise
+	 */
+	protected abstract boolean match(ILocation location, Object element);
+
+	/**
+	 * Gets the container type of the given {@link ILocation container}.
+	 * 
+	 * @param container
+	 *            the containing {@link ILocationContainer}
+	 * @return the container type of the given {@link ILocation container}
+	 */
+	private Class<? extends ILocationContainer> getContainerType(ILocationContainer container) {
+		return container.getClass();
+	}
+
+	/**
+	 * Adapts the given {@link Object element} in order to create a location.
+	 * 
+	 * @param element
+	 *            the {@link Object element}
+	 * @return the {@link Object adapted element}
+	 */
+	protected Object adapt(Object element) {
+		return element;
+	}
+
+	/**
+	 * Initializes the given {@link ILocation}.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}
+	 * @param location
+	 *            the {@link ILocation} to initialize
+	 * @param element
+	 *            the element to locate
+	 */
+	protected abstract void initLocation(ILocationContainer container, ILocation location, Object element);
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#dispose(org.eclipse.intent.mapping.base.ILocationDescriptor)
+	 */
+	public void dispose(ILocationDescriptor locationDescriptor) {
+		// nothing to do here
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnector.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnector.java
new file mode 100644
index 0000000..b5eca9b
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnector.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.connector;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+
+/**
+ * The connector is in charge of {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IConnector {
+
+	/**
+	 * Tells if then connector can handle the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to check.
+	 * @return <code>true</code> if then connector can handle the given {@link ILocation}, <code>false</code>
+	 *         otherwise
+	 */
+	boolean canHandle(ILocation location);
+
+	/**
+	 * Creates the {@link ILocation} according to the given container and an element to locate.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}, it must be contained into an
+	 *            {@link org.eclipse.intent.mapping.base.IBase IBase}
+	 * @param element
+	 *            the Element object to locate
+	 * @return the created {@link ILocation} according to the given container and an element to locate if any
+	 *         is handled by this {@link IConnector}, <code>null</code> otherwise
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	ILocation createLocation(ILocationContainer container, Object element) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException;
+
+	/**
+	 * Updates the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation} to update
+	 * @param element
+	 *            the located element
+	 * @return <code>true</code> if the given {@link ILocation} has been updated, <code>false</code> otherwise
+	 */
+	boolean updateLocation(ILocation location, Object element);
+
+	/**
+	 * Gets the {@link ILocation} according to the given container and an element to locate.
+	 * 
+	 * @param container
+	 *            the type of the containing {@link ILocationContainer}
+	 * @param element
+	 *            the Element object to locate
+	 * @return the {@link ILocation} according to the given container and an element to locate if any is
+	 *         handled by this {@link IConnector} and found, <code>null</code> otherwise
+	 */
+	ILocation getLocation(ILocationContainer container, Object element);
+
+	/**
+	 * Gets the {@link ILocationDescriptor} for the given element.
+	 * 
+	 * @param base
+	 *            the containing {@link IBase}
+	 * @param element
+	 *            the element
+	 * @return the {@link ILocationDescriptor} for the given element if handled by this {@link IConnector},
+	 *         <code>null</code> otherwise
+	 */
+	ILocationDescriptor getLocationDescriptor(IBase base, Object element);
+
+	/**
+	 * Gets the {@link ILocation} type according to the given container type and an element to locate.
+	 * 
+	 * @param containerType
+	 *            the type of the containing {@link ILocation} can be <code>null</code> if not contained
+	 * @param element
+	 *            the Element object to locate
+	 * @return the {@link ILocation} type according to the given container type and an element to locate if
+	 *         any is handled by this {@link IConnector}, <code>null</code> otherwise
+	 */
+	Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element);
+
+	/**
+	 * Gets the {@link Object element} located by the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the {@link Object element} located by the given {@link ILocation} if the given
+	 *         {@link ILocation} is handled by this {@link IConnector}, <code>null</code> otherwise
+	 */
+	Object getElement(ILocation location);
+
+	/**
+	 * Gets a human readable name for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return a human readable name for the given {@link ILocation} if any, <code>null</code> otherwise
+	 */
+	String getName(ILocation location);
+
+	/**
+	 * Gets the {@link ILocation} {@link Class} managed by this connector.
+	 * 
+	 * @return the {@link ILocation} {@link Class} managed by this connector
+	 */
+	Class<? extends ILocation> getType();
+
+	/**
+	 * Disposes the given {@link ILocationDescriptor}.
+	 * 
+	 * @param locationDescriptor
+	 *            the {@link ILocationDescriptor} to dispose
+	 */
+	void dispose(ILocationDescriptor locationDescriptor);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnectorRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnectorRegistry.java
new file mode 100644
index 0000000..7c28917
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IConnectorRegistry.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.connector;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+
+/**
+ * The {@link IConnector} registry maintains a set of active {@link IConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IConnectorRegistry {
+
+	/**
+	 * Creates the {@link ILocation} according to the given container and an element to locate.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}, it must be contained into an
+	 *            {@link org.eclipse.intent.mapping.base.IBase IBase}
+	 * @param element
+	 *            the Element object to locate
+	 * @return the created {@link ILocation} according to the given container and an element to locate if any
+	 *         is handled by a {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector},
+	 *         <code>null</code> otherwise
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	ILocation createLocation(ILocationContainer container, Object element) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException;
+
+	/**
+	 * Gets the {@link ILocation} according to the given container and an element to locate.
+	 * 
+	 * @param container
+	 *            the type of the containing {@link ILocationContainer}
+	 * @param element
+	 *            the Element object to locate
+	 * @return the {@link ILocation} according to the given container and an element to locate if any is
+	 *         handled by a {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector},
+	 *         <code>null</code> otherwise
+	 */
+	ILocation getLocation(ILocationContainer container, Object element);
+
+	/**
+	 * Gets the {@link Object element} located by the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return the {@link Object element} located by the given {@link ILocation} if any is handled by a
+	 *         {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector},
+	 *         <code>null</code> otherwise
+	 */
+	Object getElement(ILocation location);
+
+	/**
+	 * Gets the {@link ILocationDescriptor} for the given element.
+	 * 
+	 * @param base
+	 *            the containing {@link IBase}
+	 * @param element
+	 *            the element
+	 * @return the {@link ILocationDescriptor} for the given element if handled by a
+	 *         {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector},
+	 *         <code>null</code> otherwise
+	 */
+	ILocationDescriptor getLocationDescriptor(IBase base, Object element);
+
+	/**
+	 * Gets or creates an {@link ILocation} according to the given element.
+	 * 
+	 * @param container
+	 *            the {@link ILocationContainer}, it must be contained into an
+	 *            {@link org.eclipse.intent.mapping.base.IBase IBase}
+	 * @param element
+	 *            the Element object to locate
+	 * @return the {@link ILocation}
+	 * @throws IllegalAccessException
+	 *             if the class or its nullary constructor is not accessible.
+	 * @throws InstantiationException
+	 *             if this Class represents an abstract class, an interface, an array class, a primitive type,
+	 *             or void; or if the class has no nullary constructor; or if the instantiation fails for some
+	 *             other reason.
+	 * @throws ClassNotFoundException
+	 *             if the {@link Class} can't be found
+	 */
+	ILocation getOrCreateLocation(ILocationContainer container, Object element) throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException;
+
+	/**
+	 * Gets the {@link ILocation} type according to the given container type and an element to locate.
+	 * 
+	 * @param containerType
+	 *            the type of the containing {@link ILocation} can be <code>null</code> if not contained
+	 * @param element
+	 *            the Element object to locate
+	 * @return the {@link ILocation} type according to the given container type and an element to locate if
+	 *         any is handled by this {@link IConnector}, <code>null</code> otherwise
+	 */
+	Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element);
+
+	/**
+	 * Updates the given {@link ILocation} with the given {@link Object element}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @param element
+	 *            the element
+	 * @return <code>true</code> if any update has been made, <code>false</code> otherwise
+	 */
+	boolean updateLocation(ILocation location, Object element);
+
+	/**
+	 * Gets a human readable name for the given {@link ILocation}.
+	 * 
+	 * @param location
+	 *            the {@link ILocation}
+	 * @return a human readable name for the given {@link ILocation} if any is handled by a
+	 *         {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector},
+	 *         <code>null</code> otherwise
+	 */
+	String getName(ILocation location);
+
+	/**
+	 * Registers the given {@link IConnector}.
+	 * 
+	 * @param connector
+	 *            the {@link IConnector} to register
+	 */
+	void register(IConnector connector);
+
+	/**
+	 * Unregisters the given {@link IConnector}.
+	 * 
+	 * @param connector
+	 *            the {@link IConnector} to register
+	 */
+	void unregister(IConnector connector);
+
+	/**
+	 * Gets the {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector} with the given
+	 * {@link IConnector#getType() connector type}.
+	 * 
+	 * @param connectorType
+	 *            the {@link IConnector#getType() connector type}
+	 * @return the {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector} with the
+	 *         given {@link IConnector#getType() connector type} if any, <code>null</code> otherwise
+	 */
+	IConnector getConnector(Class<? extends ILocation> connectorType);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IContainerProvider.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IContainerProvider.java
new file mode 100644
index 0000000..09e1205
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/connector/IContainerProvider.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.connector;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * Provides container element for {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IContainerProvider {
+
+	/**
+	 * Gets the container of the given element.
+	 * 
+	 * @param element
+	 *            the element
+	 * @return the container of the given element if any, <code>null</code> otherwise
+	 */
+	Object getContainer(Object element);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileType.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileType.java
new file mode 100644
index 0000000..ebfb19e
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileType.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.content;
+
+/**
+ * File type.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileType {
+
+	/**
+	 * Gets the type ID.
+	 * 
+	 * @return the type ID
+	 */
+	String getID();
+
+	/**
+	 * Tells if this {@link IFileType} is a sub type of the given {@link IFileType#getID() type ID}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 * @return <code>true</code> if this {@link IFileType} is a sub type of the given {@link IFileType#getID()
+	 *         type ID}, <code>false</code> otherwise
+	 */
+	boolean isKindOf(String typeID);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeProvider.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeProvider.java
new file mode 100644
index 0000000..a509be4
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeProvider.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.content;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Provide {@link IFileTypeProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileTypeProvider {
+
+	/**
+	 * Gets the {@link IFileType} for the given {@link InputStream} and resource name.
+	 * 
+	 * @param contents
+	 *            the {@link InputStream} to the content
+	 * @param name
+	 *            the resource name
+	 * @return the {@link IFileType} for the given {@link InputStream} and resource name if nay,
+	 *         <code>null</code> otherwise
+	 * @throws IOException
+	 *             if the {@link InputStream} can't be read
+	 */
+	IFileType getFileTypeFor(InputStream contents, String name) throws IOException;
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeRegistry.java
new file mode 100644
index 0000000..7c8bdae
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/content/IFileTypeRegistry.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.content;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * The {@link IFileType} registry.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IFileTypeRegistry {
+
+	/**
+	 * Gets the {@link List} of {@link IFileTypeProvider}.
+	 * 
+	 * @return the {@link List} of {@link IFileTypeProvider}
+	 */
+	List<IFileTypeProvider> getFileTypeProviders();
+
+	/**
+	 * Registers the given {@link IFileType#getID() type ID} with the given {@link Set} of its super
+	 * {@link IFileType#getID() type IDs}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 * @param suprTypeIDs
+	 *            the {@link Set} of its super {@link IFileType#getID() type IDs}
+	 */
+	void registerFileType(String typeID, Set<String> suprTypeIDs);
+
+	/**
+	 * Unresiters the given {@link IFileType#getID() type ID}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 */
+	void unregisterFileType(String typeID);
+
+	/**
+	 * Gets the {@link IFileType} for the given {@link IFileType#getID() type ID}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 * @return the {@link IFileType} for the given {@link IFileType#getID() type ID} if any, <code>null</code>
+	 *         otherwise
+	 */
+	IFileType getFileType(String typeID);
+
+	/**
+	 * Gets the {@link IFileType} for the given {@link InputStream} and resource name.
+	 * 
+	 * @param contents
+	 *            the {@link InputStream} to the content
+	 * @param name
+	 *            the resource name
+	 * @return the {@link IFileType} for the given {@link InputStream} and resource name if nay,
+	 *         <code>null</code> otherwise
+	 * @throws IOException
+	 *             if the {@link InputStream} can't be read
+	 */
+	IFileType getFileTypeFor(InputStream contents, String name) throws IOException;
+
+	/**
+	 * Tells if the given {@link IFileType#getID() type ID} is a sub type of the given
+	 * {@link IFileType#getID() super type ID}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 * @param superTypeID
+	 *            the {@link IFileType#getID() super type ID}
+	 * @return <code>true</code> if the given {@link IFileType#getID() type ID} is a sub type of the given
+	 *         {@link IFileType#getID() super type ID}, <code>false</code> otherwise
+	 */
+	boolean isKindOf(String typeID, String superTypeID);
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/base/BaseRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/base/BaseRegistry.java
new file mode 100644
index 0000000..462e0c3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/base/BaseRegistry.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.internal.base;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseRegistry;
+import org.eclipse.intent.mapping.base.IBaseRegistryListener;
+
+/**
+ * The default implementation of {@link IBaseRegistry}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class BaseRegistry implements IBaseRegistry {
+
+	/**
+	 * The {@link Set} of {@link BaseRegistry#register(IBase) registered} {@link IBase}.
+	 */
+	private final Set<IBase> bases = new LinkedHashSet<IBase>();
+
+	/**
+	 * The {@link List} of {@link IBaseRegistryListener}.
+	 */
+	private final List<IBaseRegistryListener> listeners = new ArrayList<IBaseRegistryListener>();
+
+	/**
+	 * Gets the {@link List} of {@link IBaseRegistryListener} in a thread safe way.
+	 * 
+	 * @return the {@link List} of {@link IBaseRegistryListener} in a thread safe way
+	 */
+	private List<IBaseRegistryListener> getListeners() {
+		synchronized(listeners) {
+			return new ArrayList<IBaseRegistryListener>(listeners);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBaseRegistry#register(org.eclipse.intent.mapping.base.IBase)
+	 */
+	public void register(IBase base) {
+		final boolean added;
+		synchronized(this) {
+			added = bases.add(base);
+		}
+		if (added) {
+			for (IBaseRegistryListener listener : getListeners()) {
+				listener.baseRegistred(base);
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBaseRegistry#unregister(org.eclipse.intent.mapping.base.IBase)
+	 */
+	public void unregister(IBase base) {
+		final boolean removed;
+		synchronized(this) {
+			removed = bases.remove(base);
+		}
+		if (removed) {
+			for (IBaseRegistryListener listener : getListeners()) {
+				listener.baseUnregistred(base);
+			}
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBaseRegistry#getBases()
+	 */
+	public Set<IBase> getBases() {
+		synchronized(this) {
+			return Collections.unmodifiableSet(bases);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBaseRegistry#addListener(org.eclipse.intent.mapping.base.IBaseRegistryListener)
+	 */
+	public void addListener(IBaseRegistryListener listener) {
+		synchronized(listeners) {
+			listeners.add(listener);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.base.IBaseRegistry#removeListener(org.eclipse.intent.mapping.base.IBaseRegistryListener)
+	 */
+	public void removeListener(IBaseRegistryListener listener) {
+		synchronized(listeners) {
+			listeners.remove(listener);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/connector/ConnectorRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/connector/ConnectorRegistry.java
new file mode 100644
index 0000000..cf03c20
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/connector/ConnectorRegistry.java
@@ -0,0 +1,253 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.internal.connector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.IConnector;
+import org.eclipse.intent.mapping.connector.IConnectorRegistry;
+
+/**
+ * The default implementation of {@link IConnectorRegistry}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ConnectorRegistry implements IConnectorRegistry {
+
+	/**
+	 * The {@link List} of {@link ConnectorRegistry#register(IConnector) registered} {@link IConnector}.
+	 */
+	private final List<IConnector> connectors = Collections.synchronizedList(new ArrayList<IConnector>());
+
+	/**
+	 * Mapping of {@link IConnector#getType() connector type} to {@link IConnector}.
+	 */
+	private final Map<Class<? extends ILocation>, IConnector> typeToConnector = new HashMap<Class<? extends ILocation>, IConnector>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#createLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      java.lang.Object)
+	 */
+	public ILocation createLocation(ILocationContainer container, Object element)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		for (IConnector connector : getConnectors()) {
+			final ILocation location = connector.createLocation(container, element);
+			if (location != null) {
+				return location;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      java.lang.Object)
+	 */
+	public ILocation getLocation(ILocationContainer container, Object element) {
+		for (IConnector connector : getConnectors()) {
+			final ILocation location = connector.getLocation(container, element);
+			if (location != null) {
+				return location;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		for (IConnector connector : getConnectors()) {
+			if (connector.canHandle(location)) {
+				return connector.getElement(location);
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getOrCreateLocation(org.eclipse.intent.mapping.base.ILocationContainer,
+	 *      java.lang.Object)
+	 */
+	public ILocation getOrCreateLocation(ILocationContainer container, Object element)
+			throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILocation res;
+
+		final ILocation foundLocation = getLocation(container, element);
+		if (foundLocation != null) {
+			res = foundLocation;
+		} else {
+			res = createLocation(container, element);
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocationType(java.lang.Class,
+	 *      java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		for (IConnector connector : getConnectors()) {
+			final Class<? extends ILocation> locationType = connector.getLocationType(containerType, element);
+			if (locationType != null) {
+				return locationType;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		String res;
+		if (!location.isMarkedAsDeleted()) {
+			res = null;
+			for (IConnector connector : getConnectors()) {
+				if (connector.canHandle(location)) {
+					res = connector.getName(location);
+					break;
+				}
+			}
+		} else {
+			res = "(deleted)";
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		for (IConnector connector : getConnectors()) {
+			final ILocationDescriptor descriptor = connector.getLocationDescriptor(base, element);
+			if (descriptor != null) {
+				return descriptor;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#updateLocation(org.eclipse.intent.mapping.base.ILocation,
+	 *      java.lang.Object)
+	 */
+	public boolean updateLocation(ILocation location, Object element) {
+		if (!location.isMarkedAsDeleted()) {
+			for (IConnector connector : getConnectors()) {
+				if (connector.canHandle(location)) {
+					return connector.updateLocation(location, element);
+				}
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#register(org.eclipse.intent.mapping.connector.IConnector)
+	 */
+	public void register(IConnector connector) {
+		if (connector != null) {
+			synchronized(connectors) {
+				int index = 0;
+				boolean added = false;
+				for (IConnector currentConnector : connectors) {
+					if (currentConnector.getType().isAssignableFrom(connector.getType())) {
+						connectors.add(index, connector);
+						added = true;
+						break;
+					} else {
+						index++;
+					}
+				}
+				if (!added) {
+					connectors.add(index, connector);
+				}
+				typeToConnector.put(connector.getType(), connector);
+			}
+		} else {
+			throw new IllegalArgumentException("IConnector can't be null.");
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#unregister(org.eclipse.intent.mapping.connector.IConnector)
+	 */
+	public void unregister(IConnector connector) {
+		synchronized(connectors) {
+			connectors.remove(connector);
+			typeToConnector.remove(connector.getType());
+		}
+	}
+
+	/**
+	 * Gets the {@link List} of {@link IConnectorRegistry#register(IConnector) registered} {@link IConnector}.
+	 * 
+	 * @return the {@link List} of {@link IConnectorRegistry#register(IConnector) registered}
+	 *         {@link IConnector}
+	 */
+	protected List<IConnector> getConnectors() {
+		synchronized(connectors) {
+			return Collections.unmodifiableList(new ArrayList<IConnector>(connectors));
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnectorRegistry#getConnector(java.lang.Class)
+	 */
+	public IConnector getConnector(Class<? extends ILocation> connectorType) {
+		synchronized(connectors) {
+			return typeToConnector.get(connectorType);
+		}
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileType.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileType.java
new file mode 100644
index 0000000..4aaa4c3
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileType.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.internal.content;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.content.IFileType;
+
+/**
+ * Implementation of IFileType.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FileType implements IFileType {
+
+	/**
+	 * The {@link IFileType#getID() type ID}.
+	 */
+	private final String id;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 */
+	public FileType(String typeID) {
+		this.id = typeID;
+	}
+
+	public String getID() {
+		return id;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileType#isKindOf(java.lang.String)
+	 */
+	public boolean isKindOf(String typeID) {
+		return MappingUtils.getFileTypeRegistry().isKindOf(id, typeID);
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		return obj instanceof IFileType && getID().equals(((IFileType)obj).getID());
+	}
+
+	@Override
+	public int hashCode() {
+		return id.hashCode();
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileTypeRegistry.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileTypeRegistry.java
new file mode 100644
index 0000000..1ef17f9
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/internal/content/FileTypeRegistry.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.internal.content;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.content.IFileTypeProvider;
+import org.eclipse.intent.mapping.content.IFileTypeRegistry;
+
+/**
+ * Implementation of {@link IFileTypeRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FileTypeRegistry implements IFileTypeRegistry {
+
+	/**
+	 * The mapping of {@link IFileType#isKindOf(String) super types}.
+	 */
+	private final Map<String, Set<String>> superTypes = new HashMap<String, Set<String>>();
+
+	/**
+	 * The {@link List} of known {@link IFileTypeProvider}.
+	 */
+	private final List<IFileTypeProvider> providers = new ArrayList<IFileTypeProvider>();
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileTypeProviders()
+	 */
+	public List<IFileTypeProvider> getFileTypeProviders() {
+		return providers;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#registerFileType(java.lang.String,
+	 *      java.util.Set)
+	 */
+	public void registerFileType(String typeID, Set<String> suprTypeIDs) {
+		superTypes.put(typeID, suprTypeIDs);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#unregisterFileType(java.lang.String)
+	 */
+	public void unregisterFileType(String typeID) {
+		superTypes.remove(typeID);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileType(java.lang.String)
+	 */
+	public IFileType getFileType(String typeID) {
+		final IFileType res;
+
+		if (superTypes.containsKey(typeID)) {
+			res = new FileType(typeID);
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#getFileTypeFor(java.io.InputStream,
+	 *      java.lang.String)
+	 */
+	public IFileType getFileTypeFor(InputStream contents, String name) throws IOException {
+		IFileType res = null;
+
+		for (IFileTypeProvider provider : providers) {
+			res = provider.getFileTypeFor(contents, name);
+			if (res != null) {
+				break;
+			}
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.content.IFileTypeRegistry#isKindOf(java.lang.String, java.lang.String)
+	 */
+	public boolean isKindOf(String typeID, String superTypeID) {
+		final Set<String> superTypeIDs = superTypes.get(typeID);
+		return isKindOf(typeID, superTypeID, superTypeIDs);
+	}
+
+	/**
+	 * Tells if the given {@link IFileType#getID() type ID} is a sub type of the given
+	 * {@link IFileType#getID() super type ID}.
+	 * 
+	 * @param typeID
+	 *            the {@link IFileType#getID() type ID}
+	 * @param superTypeID
+	 *            the {@link IFileType#getID() super type ID}
+	 * @param superTypeIDs
+	 *            the {@link Set} of {@link IFileType#getID() super type IDs} for the given
+	 *            {@link IFileType#getID() type ID}
+	 * @return <code>true</code> if the given {@link IFileType#getID() type ID} is a sub type of the given
+	 *         {@link IFileType#getID() super type ID}, <code>false</code> otherwise
+	 */
+	protected boolean isKindOf(String typeID, String superTypeID, Set<String> superTypeIDs) {
+		final boolean res;
+
+		if (superTypeIDs == null || superTypeIDs.isEmpty()) {
+			res = false;
+		} else if (superTypeIDs.contains(superTypeID)) {
+			res = true;
+		} else {
+			boolean isIndirectSuperType = false;
+			for (String superType : superTypeIDs) {
+				isIndirectSuperType = isKindOf(superType, superTypeID, superTypes.get(superType));
+				if (isIndirectSuperType) {
+					break;
+				}
+			}
+			res = isIndirectSuperType;
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextContainer.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextContainer.java
new file mode 100644
index 0000000..6cc6bd6
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextContainer.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.text;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * Text container.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ITextContainer extends ILocation {
+
+	/**
+	 * Sets the text corresponding to the container.
+	 * 
+	 * @param text
+	 *            the text corresponding to the container
+	 */
+	void setText(String text);
+
+	/**
+	 * Gets the text corresponding to the container.
+	 * 
+	 * @return the text corresponding to the container
+	 */
+	String getText();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextLocation.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextLocation.java
new file mode 100644
index 0000000..69fde0a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/ITextLocation.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.text;
+
+import org.eclipse.intent.mapping.base.ILocation;
+
+/**
+ * An {@link ILocation} for text content.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface ITextLocation extends ILocation {
+
+	/**
+	 * Sets the start offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 * surrounding text}.
+	 * 
+	 * @param offset
+	 *            the start offset
+	 */
+	void setStartOffset(int offset);
+
+	/**
+	 * Gets the start offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 * surrounding text}.
+	 * 
+	 * @return the start offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 *         surrounding text}
+	 */
+	int getStartOffset();
+
+	/**
+	 * Sets the end offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 * surrounding text}.
+	 * 
+	 * @param offset
+	 *            the end offset
+	 */
+	void setEndOffset(int offset);
+
+	/**
+	 * Gets the end offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 * surrounding text}.
+	 * 
+	 * @return the end offset of {@link ITextLocation#getText() text} in the {@link ITextContainer#getText()
+	 *         surrounding text}
+	 */
+	int getEndOffset();
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextConnector.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextConnector.java
new file mode 100644
index 0000000..f3907f5
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextConnector.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.text;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.MappingUtils.DiffMatch;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+
+/**
+ * Text {@link org.eclipse.intent.mapping.connector.IConnector IConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextConnector extends AbstractConnector {
+
+	/**
+	 * Utility helper to
+	 * {@link TextContainerHelper#updateTextContainer(ILocationContainer, ITextContainer, String) update text
+	 * container}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TextContainerHelper {
+
+		/**
+		 * Updates the given {@link ITextContainer} with the given {@link ITextContainer#getText() text}.
+		 * 
+		 * @param container
+		 *            the {@link ILocationContainer}
+		 * @param textContainer
+		 *            the {@link ITextContainer}
+		 * @param text
+		 *            the {@link ITextContainer#getText() text}
+		 * @throws IllegalAccessException
+		 *             if the class or its nullary constructor is not accessible.
+		 * @throws InstantiationException
+		 *             if this Class represents an abstract class, an interface, an array class, a primitive
+		 *             type, or void; or if the class has no nullary constructor; or if the instantiation
+		 *             fails for some other reason.
+		 * @throws ClassNotFoundException
+		 *             if the {@link Class} can't be found
+		 */
+		public void updateTextContainer(ILocationContainer container, ITextContainer textContainer,
+				String text) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+			final String oldText = textContainer.getText();
+			textContainer.setText(text);
+			if (oldText != null) {
+				final DiffMatch diff = MappingUtils.getDiffMatch(oldText, text);
+				for (ILocation child : textContainer.getContents()) {
+					if (child instanceof ITextLocation && !child.isMarkedAsDeleted()) {
+						final ITextLocation location = (ITextLocation)child;
+						final int newStartOffset = diff.getIndex(location.getStartOffset());
+						final int newEndOffset = diff.getIndex(location.getEndOffset());
+						final String oldValue = oldText.substring(location.getStartOffset(), location
+								.getEndOffset());
+						final String newValue = text.substring(newStartOffset, newEndOffset);
+						if (newStartOffset == newEndOffset) {
+							MappingUtils.markAsDeletedOrDelete(location, String.format(
+									"\"%s\" at (%d, %d) has been deleted.", oldValue, location
+											.getStartOffset(), location.getEndOffset()));
+						} else if (!oldValue.equals(newValue)) {
+							MappingUtils.markAsChanged(location, String.format(
+									"\"%s\" at (%d, %d) has been changed to \"%s\" at (%d, %d).", oldValue,
+									location.getStartOffset(), location.getEndOffset(), newValue,
+									newStartOffset, newEndOffset));
+						}
+						location.setStartOffset(newStartOffset);
+						location.setEndOffset(newEndOffset);
+					}
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class, java.lang.Object)
+	 */
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object element) {
+		final Class<? extends ILocation> res;
+
+		if (ITextContainer.class.isAssignableFrom(containerType) && element instanceof TextRegion) {
+			res = getType();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public Object getElement(ILocation location) {
+		final TextRegion res;
+
+		final ITextLocation textLocation = (ITextLocation)location;
+		final int startOffset = textLocation.getStartOffset();
+		final int endOffset = textLocation.getEndOffset();
+		final String text = ((ITextContainer)location.getContainer()).getText().substring(startOffset,
+				endOffset);
+		final Object container = MappingUtils.getConnectorRegistry().getElement((ITextContainer)location
+				.getContainer());
+		res = new TextRegion(container, text, startOffset, endOffset);
+
+		return res;
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+		final ITextLocation toInit = (ITextLocation)location;
+		final TextRegion region = (TextRegion)element;
+
+		toInit.setStartOffset(region.getStartOffset());
+		toInit.setEndOffset(region.getEndOffset());
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object element) {
+		final ITextLocation textLocation = (ITextLocation)location;
+		final TextRegion region = (TextRegion)element;
+
+		return textLocation.getStartOffset() == region.getStartOffset() && textLocation
+				.getEndOffset() == region.getEndOffset();
+	}
+
+	@Override
+	protected boolean canUpdate(Object element) {
+		return element instanceof TextRegion;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getName(org.eclipse.intent.mapping.base.ILocation)
+	 */
+	public String getName(ILocation location) {
+		final String res;
+
+		final String text = ((ITextContainer)location.getContainer()).getText();
+		final int start = ((ITextLocation)location).getStartOffset();
+		final int end = ((ITextLocation)location).getEndOffset();
+		res = String.format("\"%s\"", text.substring(start, end));
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationDescriptor(org.eclipse.intent.mapping.base.IBase,
+	 *      java.lang.Object)
+	 */
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+		final ILocationDescriptor res;
+
+		final Object adapted = adapt(element);
+		if (adapted instanceof TextRegion) {
+			res = new ObjectLocationDescriptor(base, adapted, ((TextRegion)adapted).getText());
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+	 */
+	public Class<? extends ILocation> getType() {
+		return ITextLocation.class;
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegion.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegion.java
new file mode 100644
index 0000000..4f6af5a
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegion.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.text;
+
+/**
+ * A text region.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextRegion {
+
+	/**
+	 * The start offset.
+	 */
+	private final int startOffset;
+
+	/**
+	 * The end offset.
+	 */
+	private final int endOffset;
+
+	/**
+	 * The text.
+	 */
+	private final String text;
+
+	/**
+	 * The containing {@link Object} should
+	 * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object)
+	 * be located} by a {@link ITextContainer}.
+	 */
+	private final Object container;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param container
+	 *            the containing {@link Object} should
+	 *            {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object)
+	 *            be located} by a {@link ITextContainer}
+	 * @param text
+	 *            the text
+	 * @param startOffset
+	 *            the start offset
+	 * @param endOffset
+	 *            the end offset
+	 */
+	public TextRegion(Object container, String text, int startOffset, int endOffset) {
+		this.container = container;
+		this.text = text;
+		this.startOffset = startOffset;
+		this.endOffset = endOffset;
+	}
+
+	/**
+	 * Gets the start offset.
+	 * 
+	 * @return the start offset
+	 */
+	public int getStartOffset() {
+		return startOffset;
+	}
+
+	/**
+	 * Gets the end offset.
+	 * 
+	 * @return the end offset
+	 */
+	public int getEndOffset() {
+		return endOffset;
+	}
+
+	/**
+	 * Get the text.
+	 * 
+	 * @return the text
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Gets the containing {@link Object} should
+	 * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object)
+	 * be located} by a {@link ITextContainer}.
+	 * 
+	 * @return the containing {@link Object} should
+	 *         {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object)
+	 *         be located} by a {@link ITextContainer}
+	 */
+	public Object getContainer() {
+		return container;
+	}
+
+	@Override
+	public int hashCode() {
+		return (text.hashCode() ^ endOffset) - startOffset ^ container.hashCode();
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		return obj instanceof TextRegion && startOffset == ((TextRegion)obj).startOffset
+				&& endOffset == ((TextRegion)obj).endOffset && text.equals(((TextRegion)obj).text)
+				&& container.equals(((TextRegion)obj).container);
+	}
+
+}
diff --git a/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegionContainerProvider.java b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegionContainerProvider.java
new file mode 100644
index 0000000..04685f2
--- /dev/null
+++ b/mapping/plugins/org.eclipse.intent.mapping/src/org/eclipse/intent/mapping/text/TextRegionContainerProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.text;
+
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+
+/**
+ * {@link TextRegion} -> {@link TextRegion#getContainer() text region container}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextRegionContainerProvider implements IContainerProvider {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.intent.mapping.connector.IContainerProvider#getContainer(java.lang.Object)
+	 */
+	public Object getContainer(Object element) {
+		final Object res;
+
+		if (element instanceof TextRegion) {
+			res = ((TextRegion)element).getContainer();
+		} else {
+			res = null;
+		}
+
+		return res;
+	}
+
+}
diff --git a/mapping/pom.xml b/mapping/pom.xml
new file mode 100644
index 0000000..830c321
--- /dev/null
+++ b/mapping/pom.xml
@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015 Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <prerequisites>
+    <maven>3.0</maven>
+  </prerequisites>
+  <groupId>org.eclipse.intent</groupId>
+  <artifactId>org.eclipse.intent-parent</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Intent Parent</name>
+  <licenses>
+    <license>
+      <name>Eclipse Public License v1.0</name>
+      <comments>
+       All rights reserved.
+
+       This program and the accompanying materials are made
+       available under the terms of the Eclipse Public License v1.0
+       which accompanies this distribution, and is available at
+       http://www.eclipse.org/legal/epl-v10.htm
+      </comments>
+    </license>
+  </licenses>
+  <properties>
+    <tycho-version>0.21.0</tycho-version>
+    <tycho-extras-version>0.21.0</tycho-extras-version>
+    <resource-encoding>UTF-8</resource-encoding>
+    <maven-resources-version>2.6</maven-resources-version>
+    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/intent/org.eclipse.mylyn.docs.intent.main.git</tycho.scmUrl>
+  </properties>
+  <scm>
+    <developerConnection>scm:git:git://git.eclipse.org/gitroot/intent/org.eclipse.mylyn.docs.intent.main.git</developerConnection>
+  </scm>
+  <modules>
+    <module>features/org.eclipse.intent.mapping.feature</module>
+    <module>plugins/org.eclipse.intent.mapping</module>
+    <module>tests/org.eclipse.intent.mapping.tests</module>
+    <module>plugins/org.eclipse.intent.mapping.ide</module>
+    <module>tests/org.eclipse.intent.mapping.ide.tests</module>
+    <module>plugins/org.eclipse.intent.mapping.ide.ui</module>
+    <!-- TODO <module>tests/org.eclipse.intent.mapping.ide.ui.tests</module> -->
+    <module>plugins/org.eclipse.intent.mapping.emf</module>
+    <module>tests/org.eclipse.intent.mapping.emf.tests</module>
+    <module>plugins/org.eclipse.intent.mapping.emf.edit</module>
+    <!-- TODO <module>tests/org.eclipse.intent.mapping.emf.edit.tests</module> -->
+    <module>plugins/org.eclipse.intent.mapping.emf.ide</module>
+    <module>tests/org.eclipse.intent.mapping.emf.ide.tests</module>
+    <module>plugins/org.eclipse.intent.mapping.emf.ide.ui</module>
+
+    <module>features/org.eclipse.intent.mapping.sirius.feature</module>
+    <module>plugins/org.eclipse.intent.mapping.sirius.ide.ui</module>
+  </modules>	
+
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-maven-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <extensions>true</extensions>
+      </plugin>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>target-platform-configuration</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <includePackedArtifacts>true</includePackedArtifacts>
+          <resolver>p2</resolver>
+        </configuration>
+      </plugin>
+      <!-- enable source bundle generation -->
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
+          </archive>
+        </configuration>
+        <executions>
+          <execution>
+            <id>plugin-source</id>
+            <goals>
+              <goal>plugin-source</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.eclipse.tycho.extras</groupId>
+        <artifactId>tycho-source-feature-plugin</artifactId>
+        <version>${tycho-extras-version}</version>
+        <configuration>bash test and
+          <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
+          </archive>
+          <excludes>
+            <plugin id="org.apache.poi"/>
+          </excludes>
+        </configuration>
+        <executions>
+          <execution>
+            <id>source-feature</id>
+            <phase>package</phase>
+            <goals>
+              <goal>source-feature</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-packaging-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
+          </archive>
+          <sourceReferences>
+            <generate>true</generate>
+          </sourceReferences>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.eclipse.tycho.extras</groupId>
+            <artifactId>tycho-sourceref-jgit</artifactId>
+            <version>${tycho-extras-version}</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.eclipse.tycho</groupId>
+          <artifactId>target-platform-configuration</artifactId>
+          <version>${tycho-version}</version>
+          <configuration>
+            <resolver>p2</resolver>
+            <environments>
+              <environment>
+                <os>linux</os>
+                <ws>gtk</ws>
+                <arch>x86</arch>
+              </environment>
+              <environment>
+                <os>win32</os>
+                <ws>win32</ws>
+                <arch>x86</arch>
+              </environment>
+              <environment>
+                <os>win32</os>
+                <ws>win32</ws>
+                <arch>x86_64</arch>
+              </environment>
+              <environment>
+                <os>linux</os>
+                <ws>gtk</ws>
+                <arch>x86_64</arch>
+              </environment>
+              <environment>
+                <os>macosx</os>
+                <ws>cocoa</ws>
+                <arch>x86_64</arch>
+              </environment>
+            </environments>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.eclipse.tycho</groupId>
+          <artifactId>tycho-compiler-plugin</artifactId>
+          <version>${tycho-version}</version>
+          <configuration>
+            <encoding>UTF-8</encoding>
+            <source>1.8</source>
+            <target>1.8</target>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>${maven-resources-version}</version>
+          <configuration>
+            <encoding>${resource-encoding}</encoding>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-antrun-plugin</artifactId>
+          <version>1.3</version>
+        </plugin>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>findbugs-maven-plugin</artifactId>
+          <version>2.3.2</version>
+          <configuration>
+            <findbugsXmlOutput>true</findbugsXmlOutput>
+            <failOnError>false</failOnError>
+          </configuration>
+          <executions>
+            <execution>
+              <goals>
+                <goal>check</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-pmd-plugin</artifactId>
+          <version>2.5</version>
+          <configuration>
+            <sourceEncoding>utf-8</sourceEncoding>
+            <minimumTokens>100</minimumTokens>
+            <targetJdk>1.8</targetJdk>
+            <format>xml</format>
+            <failOnViolation>false</failOnViolation>
+          </configuration>
+          <executions>
+            <execution>
+              <goals>
+                <goal>cpd-check</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <groupId>org.eclipse.tycho</groupId>
+          <artifactId>tycho-p2-plugin</artifactId>
+          <version>${tycho-extras-version}</version>
+          <executions>
+            <execution>
+              <id>p2-metadata</id>
+              <goals>
+                <goal>p2-metadata</goal>
+              </goals>
+              <phase>package</phase>
+            </execution>
+          </executions>
+          <configuration>
+            <defaultP2Metadata>false</defaultP2Metadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <profiles>
+    <profile>
+      <id>updatesites</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>product</name>
+          <value>true</value>
+        </property>
+      </activation>
+      <modules>
+        <!-- update sites -->
+        <module>releng/org.eclipse.intent.updatesite</module>
+      </modules>
+    </profile>
+    <profile>
+      <id>product</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>product</name>
+          <value>true</value>
+        </property>
+      </activation>
+      <modules>
+        <!-- product and product tests -->
+        <module>features/org.eclipse.intent.product.feature</module>
+        <module>releng/org.eclipse.intent.branding</module>
+        <module>releng/org.eclipse.intent.product</module>
+        <!-- TODO fixe RCPTT tests <module>tests/org.eclipse.intent.product.tests</module> -->
+      </modules>
+    </profile>
+    <profile>
+      <id>platform-oxygen</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>platform-version-name</name>
+          <value>oxygen</value>
+        </property>
+      </activation>
+      <properties>
+        <eclipse-rcptt-inject-site>http://download.eclipse.org/releases/oxygen</eclipse-rcptt-inject-site>
+      </properties>
+      <modules>
+        <module>releng/org.eclipse.intent.targetplatforms/oxygen</module>
+      </modules>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>target-platform-configuration</artifactId>
+            <configuration>
+              <target>
+                <artifact>
+                  <groupId>org.eclipse.intent</groupId>
+                  <artifactId>intent-oxygen</artifactId>
+                  <version>0.10.0-SNAPSHOT</version>
+                </artifact>
+              </target>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>platform-neon</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>platform-version-name</name>
+          <value>neon</value>
+        </property>
+      </activation>
+      <properties>
+        <eclipse-rcptt-inject-site>http://download.eclipse.org/releases/neon</eclipse-rcptt-inject-site>
+      </properties>
+      <modules>
+        <module>releng/org.eclipse.intent.targetplatforms/neon</module>
+      </modules>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>target-platform-configuration</artifactId>
+            <configuration>
+              <target>
+                <artifact>
+                  <groupId>org.eclipse.intent</groupId>
+                  <artifactId>intent-neon</artifactId>
+                  <version>0.10.0-SNAPSHOT</version>
+                </artifact>
+              </target>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>platform-mars</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>platform-version-name</name>
+          <value>mars</value>
+        </property>
+      </activation>
+      <properties>
+        <eclipse-rcptt-inject-site>http://download.eclipse.org/releases/mars</eclipse-rcptt-inject-site>
+      </properties>
+      <modules>
+        <module>releng/org.eclipse.intent.targetplatforms/mars</module>
+      </modules>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>target-platform-configuration</artifactId>
+            <configuration>
+              <target>
+                <artifact>
+                  <groupId>org.eclipse.intent</groupId>
+                  <artifactId>intent-mars</artifactId>
+                  <version>0.10.0-SNAPSHOT</version>
+                </artifact>
+              </target>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>platform-luna</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <property>
+          <name>platform-version-name</name>
+          <value>luna</value>
+        </property>
+      </activation>
+      <properties>
+        <eclipse-rcptt-inject-site>http://download.eclipse.org/releases/luna</eclipse-rcptt-inject-site>
+      </properties>
+      <modules>
+        <module>releng/org.eclipse.intent.targetplatforms/luna</module>
+      </modules>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>target-platform-configuration</artifactId>
+            <configuration>
+              <target>
+                <artifact>
+                  <groupId>org.eclipse.intent</groupId>
+                  <artifactId>intent-luna</artifactId>
+                  <version>0.10.0-SNAPSHOT</version>
+                </artifact>
+              </target>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>checkstyle</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-checkstyle-plugin</artifactId>
+            <version>2.11</version>
+            <executions>
+              <execution>
+                <id>check my sources</id>
+                <goals>
+                  <goal>checkstyle</goal>
+                </goals>
+                <phase>verify</phase>
+                <configuration>
+                  <configLocation>${project.parent.relativePath}/releng/org.eclipse.intent.codestyle/codestyle/IntentCheckstyle6Configuration.xml</configLocation>
+                  <failOnErrors>false</failOnErrors>
+                  <consoleOutput>true</consoleOutput>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>static-checks</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>findbugs-maven-plugin</artifactId>
+            <version>2.5.3</version>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-pmd-plugin</artifactId>
+            <version>3.0.1</version>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>macosx-jvm-flags</id>
+      <activation>
+        <os>
+          <family>mac</family>
+        </os>
+      </activation>
+      <properties>
+        <os-jvm-flags>-XstartOnFirstThread</os-jvm-flags>
+      </properties>
+    </profile>
+  </profiles>
+</project>
diff --git a/mapping/releng/org.eclipse.intent.branding/.project b/mapping/releng/org.eclipse.intent.branding/.project
new file mode 100644
index 0000000..0738da2
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.branding</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.resources.prefs b/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.runtime.prefs b/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/mapping/releng/org.eclipse.intent.branding/META-INF/MANIFEST.MF b/mapping/releng/org.eclipse.intent.branding/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..074adcc
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Intent Branding
+Bundle-SymbolicName: org.eclipse.intent.branding;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-Vendor: Obeo
+Require-Bundle: org.eclipse.ui.intro.universal,
+ org.eclipse.ui.intro;bundle-version="3.4.200",
+ org.eclipse.ui
+Bundle-Localization: plugin
diff --git a/mapping/releng/org.eclipse.intent.branding/about.svg b/mapping/releng/org.eclipse.intent.branding/about.svg
new file mode 100644
index 0000000..7baa631
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/about.svg
@@ -0,0 +1,8801 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="204.05"
+   inkscape:export-xdpi="204.05"
+   inkscape:export-filename="/home/chipotortoose/ANettoyer/odesign2.png"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docname="about.svg"
+   version="1.0"
+   inkscape:version="0.91 r13725"
+   sodipodi:version="0.32"
+   id="svg2"
+   height="340"
+   width="450">
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2947911"
+     inkscape:cx="-503.85942"
+     inkscape:cy="-656.97889"
+     inkscape:document-units="px"
+     inkscape:current-layer="g5472"
+     showgrid="false"
+     inkscape:window-width="1879"
+     inkscape:window-height="1056"
+     inkscape:window-x="41"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="false">
+    <sodipodi:guide
+       orientation="1,0"
+       position="-315.10875,-458.76127"
+       id="guide7098" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-186.13041,-820.20955"
+       id="guide7302" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-125.88904,-494.28824"
+       id="guide5873" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-413.19407,-747.61096"
+       id="guide5875" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient6832">
+      <stop
+         style="stop-color:#7a878d;stop-opacity:1"
+         offset="0"
+         id="stop6834" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop6836" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4563"
+       inkscape:collect="always">
+      <stop
+         id="stop4565"
+         offset="0"
+         style="stop-color:#916f6f;stop-opacity:1;" />
+      <stop
+         id="stop4567"
+         offset="1"
+         style="stop-color:#916f6f;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7865">
+      <stop
+         id="stop7867"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1" />
+      <stop
+         id="stop7869"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7288"
+       inkscape:collect="always">
+      <stop
+         id="stop7290"
+         offset="0"
+         style="stop-color:#7a5c5c;stop-opacity:1;" />
+      <stop
+         id="stop7292"
+         offset="1"
+         style="stop-color:#7a5c5c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5237">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5231">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5233" />
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="1"
+         id="stop5235" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5225">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5227" />
+      <stop
+         style="stop-color:#fdfcfc;stop-opacity:1"
+         offset="1"
+         id="stop5229" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3615">
+      <stop
+         id="stop3617"
+         offset="0"
+         style="stop-color:#b3b3b3;stop-opacity:1;" />
+      <stop
+         id="stop3619"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597">
+      <stop
+         id="stop3599"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3227">
+      <stop
+         id="stop3229"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3231"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective10"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2447" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       id="linearGradient3233"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       id="linearGradient3245"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3560"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3562"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       id="linearGradient3603"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       id="linearGradient3611"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4320"
+       id="linearGradient4326"
+       x1="-1401.7008"
+       y1="-1002.6378"
+       x2="-1405.2992"
+       y2="-941.63776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.999999,99.000019)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4310"
+       id="linearGradient4308"
+       x1="-1498.2922"
+       y1="-901.5423"
+       x2="-1393.8906"
+       y2="-749.20172"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient4297"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1773.6015,-1058.2036)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <inkscape:perspective
+       id="perspective2658"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient2643"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient2641"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient2629"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient2627"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient2502"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient2500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient2488"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient2486"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective3422"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3409"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3693"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3691"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient2893"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient2891"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective2728"
+       inkscape:persp3d-origin="750 : 333.33333 : 1"
+       inkscape:vp_z="1500 : 500 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 500 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       id="linearGradient4484">
+      <stop
+         style="stop-color:#397661;stop-opacity:0.49803922;"
+         offset="0"
+         id="stop4486" />
+      <stop
+         style="stop-color:#397661;stop-opacity:0;"
+         offset="1"
+         id="stop4488" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2734">
+      <stop
+         id="stop2736"
+         offset="0"
+         style="stop-color:#40b99d;stop-opacity:1;" />
+      <stop
+         style="stop-color:#40ba9e;stop-opacity:1;"
+         offset="0.5"
+         id="stop2738" />
+      <stop
+         id="stop2740"
+         offset="1"
+         style="stop-color:#059573;stop-opacity:1;" />
+    </linearGradient>
+    <clipPath
+       id="clip0">
+      <rect
+         y="0"
+         x="0"
+         id="rect7"
+         height="800"
+         width="1200" />
+    </clipPath>
+    <linearGradient
+       gradientTransform="matrix(0.7980628,0,0,0.6634352,70.454406,84.374858)"
+       gradientUnits="userSpaceOnUse"
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       id="linearGradient3171"
+       xlink:href="#linearGradient3165"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.82254,0,0,0.8470079,61.914481,60.140908)"
+       r="172.92815"
+       fy="393.09808"
+       fx="348.89258"
+       cy="393.09808"
+       cx="348.89258"
+       id="radialGradient4148"
+       xlink:href="#linearGradient4142"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective2568"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3427"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3398"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3365"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3328"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3315"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3777"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3859"
+       gradientUnits="userSpaceOnUse"
+       x1="-583.51953"
+       y1="728.18848"
+       x2="-583.51953"
+       y2="1025.3861" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3857"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2469124,-1.9480897e-8,1.948072e-8,0.2469101,-627.83015,1193.5854)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3813"
+       gradientUnits="userSpaceOnUse"
+       x1="-583.51953"
+       y1="728.18848"
+       x2="-583.51953"
+       y2="1025.3861" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3811"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2469124,-1.9480897e-8,1.948072e-8,0.2469101,-627.83015,1193.5854)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective2695"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3608"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3403"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9613"
+       id="linearGradient9619"
+       x1="732"
+       y1="587.36218"
+       x2="901"
+       y2="587.36218"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7125749,0,0,0.625,210.68263,205.26082)" />
+    <linearGradient
+       id="linearGradient3472">
+      <stop
+         style="stop-color:#73c171;stop-opacity:1;"
+         offset="0"
+         id="stop3474" />
+      <stop
+         id="stop3480"
+         offset="0.5"
+         style="stop-color:#90e98d;stop-opacity:0.83529413;" />
+      <stop
+         style="stop-color:#c8f3c5;stop-opacity:0.67000002;"
+         offset="1"
+         id="stop3476" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient9613">
+      <stop
+         style="stop-color:#ec9c40;stop-opacity:1;"
+         offset="0"
+         id="stop9615" />
+      <stop
+         style="stop-color:#ec9c40;stop-opacity:0.40000001;"
+         offset="1"
+         id="stop9617" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective156" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4142">
+      <stop
+         style="stop-color:#40b99d;stop-opacity:1;"
+         offset="0"
+         id="stop4144" />
+      <stop
+         id="stop5121"
+         offset="0.5"
+         style="stop-color:#40ba9e;stop-opacity:1;" />
+      <stop
+         style="stop-color:#059573;stop-opacity:1;"
+         offset="1"
+         id="stop4146" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4310">
+      <stop
+         id="stop4312"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4314"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4320">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4322" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4324" />
+    </linearGradient>
+    <linearGradient
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2533"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2539"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2557"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2560"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2564"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       id="linearGradient3343"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(219.61517,-8.2498776)"
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2531"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(1.7723122,0,0,1.7723122,150.1285,-81.640009)"
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2537"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2657"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2659"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4320"
+       id="linearGradient3486"
+       x1="-1401.7008"
+       y1="-1002.6378"
+       x2="-1405.2992"
+       y2="-941.63776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.999999,99.000019)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4310"
+       id="linearGradient3484"
+       x1="-1498.2922"
+       y1="-901.5423"
+       x2="-1393.8906"
+       y2="-749.20172"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3482"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1773.6015,-1058.2036)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3475"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-421.14325,-433.55332)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <inkscape:perspective
+       id="perspective3472"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3468"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3466"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3464"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3462"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3458"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3456"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3454"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3452"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective3450"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3448"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3444"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3442"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3440"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3438"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3436"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8179506,0,0,0.6879127,479.81948,692.38071)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9999999,-7.8898005e-8,7.8897286e-8,0.9999908,416.30377,613.39875)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective3430"
+       inkscape:persp3d-origin="750 : 333.33333 : 1"
+       inkscape:vp_z="1500 : 500 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 500 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       id="linearGradient3424">
+      <stop
+         style="stop-color:#397661;stop-opacity:0.49803922;"
+         offset="0"
+         id="stop3426" />
+      <stop
+         style="stop-color:#397661;stop-opacity:0;"
+         offset="1"
+         id="stop3428" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3416">
+      <stop
+         id="stop3418"
+         offset="0"
+         style="stop-color:#40b99d;stop-opacity:1;" />
+      <stop
+         style="stop-color:#40ba9e;stop-opacity:1;"
+         offset="0.5"
+         id="stop3420" />
+      <stop
+         id="stop3422"
+         offset="1"
+         style="stop-color:#059573;stop-opacity:1;" />
+    </linearGradient>
+    <clipPath
+       id="clipPath3412">
+      <rect
+         y="0"
+         x="0"
+         id="rect3414"
+         height="800"
+         width="1200" />
+    </clipPath>
+    <linearGradient
+       gradientTransform="matrix(0.7980628,0,0,0.6634352,70.454406,84.374858)"
+       gradientUnits="userSpaceOnUse"
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       id="linearGradient3410"
+       xlink:href="#linearGradient3165"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.82254,0,0,0.8470079,61.914481,60.140908)"
+       r="172.92815"
+       fy="393.09808"
+       fx="348.89258"
+       cy="393.09808"
+       cx="348.89258"
+       id="radialGradient3408"
+       xlink:href="#linearGradient4142"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective3406"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3404"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3401"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3399"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3396"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3394"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3392"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3390"
+       gradientUnits="userSpaceOnUse"
+       x1="-583.51953"
+       y1="728.18848"
+       x2="-583.51953"
+       y2="1025.3861" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3388"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2469124,-1.9480897e-8,1.948072e-8,0.2469101,-627.83015,1193.5854)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165"
+       id="linearGradient3386"
+       gradientUnits="userSpaceOnUse"
+       x1="-583.51953"
+       y1="728.18848"
+       x2="-583.51953"
+       y2="1025.3861" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="radialGradient3384"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2469124,-1.9480897e-8,1.948072e-8,0.2469101,-627.83015,1193.5854)"
+       cx="348.89258"
+       cy="357.09775"
+       fx="348.89258"
+       fy="357.09775"
+       r="172.92815" />
+    <inkscape:perspective
+       id="perspective3382"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3380"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3378"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9613"
+       id="linearGradient3376"
+       x1="732"
+       y1="587.36218"
+       x2="901"
+       y2="587.36218"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7125749,0,0,0.625,210.68263,205.26082)" />
+    <linearGradient
+       id="linearGradient3368">
+      <stop
+         style="stop-color:#73c171;stop-opacity:1;"
+         offset="0"
+         id="stop3370" />
+      <stop
+         id="stop3372"
+         offset="0.5"
+         style="stop-color:#90e98d;stop-opacity:0.83529413;" />
+      <stop
+         style="stop-color:#c8f3c5;stop-opacity:0.67000002;"
+         offset="1"
+         id="stop3374" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3362">
+      <stop
+         style="stop-color:#ec9c40;stop-opacity:1;"
+         offset="0"
+         id="stop3364" />
+      <stop
+         style="stop-color:#ec9c40;stop-opacity:0.40000001;"
+         offset="1"
+         id="stop3366" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective3360" />
+    <linearGradient
+       id="linearGradient3346">
+      <stop
+         style="stop-color:#40b99d;stop-opacity:1;"
+         offset="0"
+         id="stop3348" />
+      <stop
+         id="stop3350"
+         offset="0.5"
+         style="stop-color:#40ba9e;stop-opacity:1;" />
+      <stop
+         style="stop-color:#059573;stop-opacity:1;"
+         offset="1"
+         id="stop3352" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="-403.69894"
+       x2="-294.5455"
+       y1="-403.69894"
+       x1="-355.30511"
+       gradientTransform="scale(1.0904278,0.9170712)"
+       id="linearGradient3340">
+      <stop
+         id="stop3342"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3344"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(429.78551,198.11087)"
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4020"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(429.78551,198.11087)"
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4026"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(374.7322,59.214895)"
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4032"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(429.78551,198.11087)"
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4050"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(429.78551,198.11087)"
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4053"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(429.78551,198.11087)"
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4057"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       id="linearGradient4849"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4851"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4853"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4855"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4857"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4863"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4865"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4878"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4880"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4886"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(759.08487,941.24403)"
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4893"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4899"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="306.44574"
+       x2="774.1936"
+       y1="306.44574"
+       x1="605.97815"
+       id="linearGradient4919"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4921"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4923"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4925"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.6360965,0,0,0.6360965,772.82562,510.66755)"
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4929"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.6360965,0,0,0.6360965,772.82562,510.66755)"
+       y2="320.98187"
+       x2="685.62219"
+       y1="275.26761"
+       x1="617.85681"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4933"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="268.00934"
+       x2="651.64117"
+       y1="268.00934"
+       x1="575.71393"
+       id="linearGradient4947"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       id="linearGradient4964"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4968"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4970"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4972"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4978"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4993"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4996"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4999"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="291.69614"
+       x2="774.1936"
+       y1="275.26758"
+       x1="597.14252"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5002"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(253.17388,140.30308)"
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5006"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.338584,-1.0720697,1.2667301,0.2865533,283.30111,1040.8724)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5024"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,-0.9660849,0.9660849,0.2582246,427.46165,972.43278)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5028"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,0.9660849,0.9660849,-0.2582246,405.49084,-89.837496)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5032"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(-0.2862569,1.0709612,-1.0709612,-0.2862569,1403.7461,-152.29758)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5036"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="translate(253.17388,140.30308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5048"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.338584,-1.0720697,1.2667301,0.2865533,283.30111,1040.8724)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5050"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,-0.9660849,0.9660849,0.2582246,427.46165,972.43278)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5052"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,0.9660849,0.9660849,-0.2582246,405.49084,-89.837496)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5054"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(-0.2862569,1.0709612,-1.0709612,-0.2862569,1403.7461,-152.29758)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5056"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(-0.2862569,1.0709612,-1.0709612,-0.2862569,1403.7461,-152.29758)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5059"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,0.9660849,0.9660849,-0.2582246,405.49084,-89.837496)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5062"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,-0.9660849,0.9660849,0.2582246,427.46165,972.43278)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5065"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.338584,-1.0720697,1.2667301,0.2865533,283.30111,1040.8724)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5068"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="translate(253.17388,140.30308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5071"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="translate(253.17388,140.30308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5080"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.338584,-1.0720697,1.2667301,0.2865533,283.30111,1040.8724)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5082"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,-0.9660849,0.9660849,0.2582246,427.46165,972.43278)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5084"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,0.9660849,0.9660849,-0.2582246,405.49084,-89.837496)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5086"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(-0.2862569,1.0709612,-1.0709612,-0.2862569,1403.7461,-152.29758)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5088"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(-0.2862569,1.0709612,-1.0709612,-0.2862569,1403.7461,-152.29758)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5091"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,0.9660849,0.9660849,-0.2582246,405.49084,-89.837496)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5094"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.2582246,-0.9660849,0.9660849,0.2582246,427.46165,972.43278)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5097"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="matrix(0.338584,-1.0720697,1.2667301,0.2865533,283.30111,1040.8724)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5100"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="translate(253.17388,140.30308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5103"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientTransform="translate(253.17388,140.30308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5112"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5161"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5163"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5165"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5167"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5173"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="314.55328"
+       x2="768.83649"
+       y1="271.69614"
+       x1="601.42822"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2721"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       id="linearGradient3519"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3525"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3527"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(3.6613106,0,0,3.6613106,-1547.2313,-298.53276)"
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3531"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(2.9861678,0,0,2.9861678,-1136.5646,-187.78587)"
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3535"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(2.9861678,0,0,2.9861678,-1136.5646,-187.78587)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3543"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(3.6613106,0,0,3.6613106,-1547.2313,-298.53276)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3545"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(3.6613106,0,0,3.6613106,-1547.2313,-292.53276)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3549"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(2.9861678,0,0,2.9861678,-1136.5646,-181.78587)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3553"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(3.6613106,0,0,3.6613106,-1547.2313,-292.53276)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3687"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(2.9861678,0,0,2.9861678,-1136.5646,-181.78587)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3691"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(2.9861678,0,0,2.9861678,-1136.5646,-181.78587)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3695"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="165.90195"
+       x2="608.56744"
+       y1="149.05327"
+       x1="579.06372"
+       gradientTransform="matrix(3.6613106,0,0,3.6613106,-1546.1599,-292.53276)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3723"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       id="linearGradient3757"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3830"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3832"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3834"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.09596494,-5.2291693,0,2289.2197,245.67628)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3845"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.7965504,0,0,0.8307759,210.62397,63.135424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3848"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.2743024,-2.2196828,0,1254.6793,130.43424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3851"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.6551929,0,0,1,194.08784,-2.1428571)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3854"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3873"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3887"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3890"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3899"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3901"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3903"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3905"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3909"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3913"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4034"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4036"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4038"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4040"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4042"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4044"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.6551929,0,0,1,194.08784,-2.1428571)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4046"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.2743024,-2.2196828,0,1254.6793,130.43424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4048"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.7965504,0,0,0.8307759,210.62397,63.135424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4051"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.09596494,-5.2291693,0,2289.2197,245.67628)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4054"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2841"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2843"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2896"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2898"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,3160.5187,58.525615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2901"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,450.7705,-179.44262)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2904"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1811.8467,-91.708945)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2907"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2914"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2918"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(0.6639486,0,0,1.3036437,960.37231,-3.4827324)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2958"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2967"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,429.21328,-264.54224)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2969"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,736.47906,-3.4827324)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2982"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3060"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3062"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3064"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="translate(429.78551,198.11087)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3066"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3068"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3070"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.6551929,0,0,1,194.08784,-2.1428571)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3072"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.2743024,-2.2196828,0,1254.6793,130.43424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3074"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.7965504,0,0,0.8307759,210.62397,63.135424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3076"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.09596494,-5.2291693,0,2289.2197,245.67628)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3078"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3094"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3098"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3954"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3956"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,3160.5187,58.525615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3959"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,450.7705,-179.44262)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3962"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1811.8467,-91.708945)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3965"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3975"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="121.30212"
+       x2="210.48799"
+       y1="223.01463"
+       x1="-32.310871"
+       gradientTransform="matrix(0.6639486,0,0,1.3036437,960.37231,-3.4827324)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3997"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2905"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2908"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2910"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2912"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2915"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2917"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-285.84858,-259.7115)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2919"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1096.7848,-86.878205)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2921"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-264.29136,-174.61188)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2923"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2445.4569,63.356355)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2925"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2970"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2972"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective3046" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3099"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3101"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3155"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3157"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3185"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3189"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,74.829148,1250.4317)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3217"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,64.727623,953.44684)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3220"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4030"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4033"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4079"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4081"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4123"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,54.973583,531.53615)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4125"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4237"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4239"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,27.66,767.40818)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4266"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="-42.297554"
+       x2="192.86104"
+       y1="346.99359"
+       x1="192.86104"
+       gradientTransform="matrix(0.03859636,0,0,5.7922347,741.81012,1493.946)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4288"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,27.66,767.40818)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4317"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4319"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,3011.9868,1087.6825)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4330"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,302.23861,849.71428)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4333"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1663.3148,937.44795)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4336"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,27.66,767.40818)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4346"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,176.19189,-261.74872)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4360"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,434.72965,762.59436)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4365"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,181.70826,765.38788)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4369"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,804.11981,994.86452)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4383"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3404"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3406"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3408"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3411"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3413"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3415"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-285.84858,-259.7115)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3417"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1096.7848,-86.878205)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3419"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-264.29136,-174.61188)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3421"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2445.4569,63.356355)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3423"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4129" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.23637706,0,0,0.19692223,30.685712,10.284427)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6101"
+       xlink:href="#linearGradient3165-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3502"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3504"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3506"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,21.417202,1.3480076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3508"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3510"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-538.86997,-256.91798)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3512"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-285.84858,-259.7115)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3514"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1096.7848,-86.878205)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3516"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-264.29136,-174.61188)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3518"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2445.4569,63.356355)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3520"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3540"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3544"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4366" />
+    <linearGradient
+       id="linearGradient3597-9">
+      <stop
+         id="stop3599-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-8"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4375">
+      <stop
+         id="stop4377"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4379"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4382">
+      <stop
+         id="stop4384"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4386"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         id="stop4391"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,222.24853,-235.10504)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3540-5"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3227-5">
+      <stop
+         id="stop3229-1"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3231-7"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4399"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4401">
+      <stop
+         id="stop4403"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4405"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,222.24853,-235.10504)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3544-1"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4408">
+      <stop
+         id="stop4410"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4412"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4414"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4416">
+      <stop
+         id="stop4418"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4420"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4310-5">
+      <stop
+         id="stop4312-2"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4314-7"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4427">
+      <stop
+         id="stop4429"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4431"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4434">
+      <stop
+         id="stop4436"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4438"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,19.936401,376.01809)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3584-4"
+       xlink:href="#linearGradient3615-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3615-2">
+      <stop
+         id="stop3617-3"
+         offset="0"
+         style="stop-color:#b3b3b3;stop-opacity:1;" />
+      <stop
+         id="stop3619-2"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4366-8" />
+    <linearGradient
+       id="linearGradient3597-5">
+      <stop
+         id="stop3599-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4375-0">
+      <stop
+         id="stop4377-6"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4379-1"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4382-8">
+      <stop
+         id="stop4384-9"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4386-3"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389-6">
+      <stop
+         id="stop4391-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4393-6"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-514.89432,-259.39076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3540-6"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3227-1">
+      <stop
+         id="stop3229-8"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3231-4"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4399-9"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4401-6">
+      <stop
+         id="stop4403-3"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4405-7"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-514.89432,-259.39076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3544-8"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4408-8">
+      <stop
+         id="stop4410-2"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4412-9"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-540.35077,117.7521)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4414-1"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4416-3">
+      <stop
+         id="stop4418-5"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4420-9"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4310-4">
+      <stop
+         id="stop4312-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4314-76"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4427-6">
+      <stop
+         id="stop4429-1"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4431-5"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4434-2">
+      <stop
+         id="stop4436-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop4438-9"
+         offset="1"
+         style="stop-color:#345363;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,19.936401,376.01809)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3584-7"
+       xlink:href="#linearGradient3615-3"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3615-3">
+      <stop
+         id="stop3617-7"
+         offset="0"
+         style="stop-color:#b3b3b3;stop-opacity:1;" />
+      <stop
+         id="stop3619-26"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4884" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.23637706,0,0,0.19692223,30.685712,10.284427)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6101-2"
+       xlink:href="#linearGradient3165-1-0"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-0"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-1"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-6"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4980" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4980-4" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5016" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5069" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5103" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.23637706,0,0,0.19692223,30.685712,10.284427)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6101-1"
+       xlink:href="#linearGradient3165-1-07"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-07"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-3"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-4"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4156" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4181" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-514.89432,-259.39076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5269"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-514.89432,-259.39076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5273"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5285" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5317" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5339" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1120.7604,-89.350984)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3532-3-4"
+       xlink:href="#linearGradient3597-5-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8">
+      <stop
+         id="stop3599-0-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-549.18003,-445.81933)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5374"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5384" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-296.15864,-448.61285)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5370-2"
+       xlink:href="#linearGradient3597-5-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5">
+      <stop
+         id="stop3599-0-5"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4194" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-549.18003,-445.81933)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5550"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-296.15864,-448.61285)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5552"
+       xlink:href="#linearGradient3597-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-514.89432,-259.39076)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5554"
+       xlink:href="#linearGradient3227-1"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-240.31571,-177.08466)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5556"
+       xlink:href="#linearGradient3597-5"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective7036" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5426-4"
+       xlink:href="#linearGradient3597-5-8-3"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8-3">
+      <stop
+         id="stop3599-0-4-8"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5430-8"
+       xlink:href="#linearGradient3597-5-5-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5-8">
+      <stop
+         id="stop3599-0-5-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,687.63056,45.99909)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5486-8"
+       xlink:href="#linearGradient3165-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-9-1"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-9-9"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-6-8"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-5-7">
+      <stop
+         id="stop3599-0-2"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-2"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5231-7">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5233-8" />
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="1"
+         id="stop5235-1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5225-8">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5227-6" />
+      <stop
+         style="stop-color:#fdfcfc;stop-opacity:1"
+         offset="1"
+         id="stop5229-1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4"
+       id="linearGradient4488-0-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,45.392849,-1.1247638)"
+       x1="350.2897"
+       y1="235.61668"
+       x2="304.259"
+       y2="111.43966" />
+    <linearGradient
+       id="linearGradient5237-4">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239-2" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241-5" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4"
+       id="linearGradient7119"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,684.22211,27.780751)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <linearGradient
+       gradientTransform="matrix(1.0171337,0,0,1.049353,-11.681568,-0.582881)"
+       gradientUnits="userSpaceOnUse"
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       id="linearGradient7294"
+       xlink:href="#linearGradient7288"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective7304" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-8">
+      <stop
+         id="stop3599-0-4-8-2"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-5"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-5-5-8-4">
+      <stop
+         id="stop3599-0-5-0-9"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-1"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-5-7-7">
+      <stop
+         id="stop3599-0-2-9"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-2-9"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5231-7-7">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5233-8-6" />
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="1"
+         id="stop5235-1-6" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5225-8-8">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5227-6-2" />
+      <stop
+         style="stop-color:#fdfcfc;stop-opacity:1"
+         offset="1"
+         id="stop5229-1-5" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-4"
+       id="linearGradient7119-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,684.22211,-3.69597)"
+       x1="350.2897"
+       y1="235.61668"
+       x2="304.259"
+       y2="111.43966" />
+    <linearGradient
+       id="linearGradient5237-4-4">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239-2-1" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241-5-6" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective7598" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-5">
+      <stop
+         id="stop3599-0-4-8-7"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-4"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-5-5-8-44">
+      <stop
+         id="stop3599-0-5-0-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-2"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7288-7">
+      <stop
+         id="stop7290-30"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1" />
+      <stop
+         id="stop7292-3"
+         offset="1"
+         style="stop-color:#4d7a91;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-3"
+       id="linearGradient7119-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,684.22211,17.780751)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <linearGradient
+       id="linearGradient5237-4-3">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239-2-7" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241-5-2" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="7.0108438"
+       x2="13.77432"
+       y1="76.805267"
+       x1="37.83017"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7825"
+       xlink:href="#linearGradient4310"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="58.237488"
+       x2="151.46669"
+       y1="97.633438"
+       x1="182.9617"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7831"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="53.355003"
+       x2="203.2426"
+       y1="135.17737"
+       x1="320.30368"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7837"
+       xlink:href="#linearGradient3597"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7855"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7858"
+       xlink:href="#linearGradient3227"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(98.994974,582.85802)"
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient7862"
+       xlink:href="#linearGradient3615"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3566" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4341" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5426-4-4"
+       xlink:href="#linearGradient3597-5-8-3-0"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-0">
+      <stop
+         id="stop3599-0-4-8-9"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-48"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5430-8-8"
+       xlink:href="#linearGradient3597-5-5-8-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5-8-2">
+      <stop
+         id="stop3599-0-5-0-45"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-5"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,39.825664,573.66669)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5486-8-1"
+       xlink:href="#linearGradient3165-9-1-7"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-9-1-7"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-9-9-1"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-6-8-1"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.0171337,0,0,1.049353,-659.48647,527.08472)"
+       gradientUnits="userSpaceOnUse"
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       id="linearGradient7294-5"
+       xlink:href="#linearGradient7288-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7288-2"
+       inkscape:collect="always">
+      <stop
+         id="stop7290-7"
+         offset="0"
+         style="stop-color:#7a5c5c;stop-opacity:1;" />
+      <stop
+         id="stop7292-6"
+         offset="1"
+         style="stop-color:#7a5c5c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-2"
+       id="linearGradient7119-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,684.22211,17.780751)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <linearGradient
+       id="linearGradient5237-4-2">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239-2-16" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241-5-8" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-2"
+       id="linearGradient4414-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,36.417214,555.44835)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="577.4472"
+       x2="84.018433"
+       y1="632.9472"
+       x1="106.6613"
+       id="linearGradient4569"
+       xlink:href="#linearGradient4563"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3584" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5426-4-0"
+       xlink:href="#linearGradient3597-5-8-3-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-9">
+      <stop
+         id="stop3599-0-4-8-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-8"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5430-8-82"
+       xlink:href="#linearGradient3597-5-5-8-45"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5-8-45">
+      <stop
+         id="stop3599-0-5-0-5"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-17"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,529.11138,567.95241)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5486-8-11"
+       xlink:href="#linearGradient3165-9-1-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-9-1-5"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-9-9-2"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-6-8-76"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.0171337,0,0,1.049353,-170.20075,521.37044)"
+       gradientUnits="userSpaceOnUse"
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       id="linearGradient7294-1"
+       xlink:href="#linearGradient7288-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7288-4"
+       inkscape:collect="always">
+      <stop
+         id="stop7290-2"
+         offset="0"
+         style="stop-color:#7a5c5c;stop-opacity:1;" />
+      <stop
+         id="stop7292-32"
+         offset="1"
+         style="stop-color:#7a5c5c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-7"
+       id="linearGradient7119-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,684.22211,17.780751)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <linearGradient
+       id="linearGradient5237-4-7">
+      <stop
+         style="stop-color:#916f6f;stop-opacity:1"
+         offset="0"
+         id="stop5239-2-6" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5241-5-1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237-4-7"
+       id="linearGradient3657"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.2772919,525.70293,549.73407)"
+       x1="331.69287"
+       y1="220.59044"
+       x2="250.0182"
+       y2="76.642044" />
+    <inkscape:perspective
+       id="perspective3726"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3617"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       y2="76.642044"
+       x2="250.0182"
+       y1="240.00003"
+       x1="349.99994"
+       gradientTransform="matrix(1.2852939,0,0,1.2115348,0.388993,23.378409)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5267"
+       xlink:href="#linearGradient7865"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       gradientTransform="matrix(0.99527902,0,0,0.98941788,-678.16828,-5.452697)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5270"
+       xlink:href="#linearGradient7288-7"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5274"
+       xlink:href="#linearGradient3597-5-8-3-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5276"
+       xlink:href="#linearGradient3597-5-5-8-44"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3638" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5276-1"
+       xlink:href="#linearGradient3597-5-5-8-44-7"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5-8-44-7">
+      <stop
+         id="stop3599-0-5-0-4-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-2-0"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5274-8"
+       xlink:href="#linearGradient3597-5-8-3-5-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-5-8">
+      <stop
+         id="stop3599-0-4-8-7-2"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-4-4"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       gradientTransform="matrix(0.99527901,0,0,0.98941785,-696.09078,487.29944)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5270-1"
+       xlink:href="#linearGradient7288-7-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7288-7-1"
+       inkscape:collect="always">
+      <stop
+         id="stop7290-30-5"
+         offset="0"
+         style="stop-color:#916f6f;stop-opacity:1" />
+      <stop
+         id="stop7292-3-2"
+         offset="1"
+         style="stop-color:#7a5c5c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="56.631344"
+       x2="232.72772"
+       y1="240.00003"
+       x1="349.99994"
+       gradientTransform="matrix(1.2852939,0,0,1.2115348,-17.533509,516.13056)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5267-2"
+       xlink:href="#linearGradient7865-3"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7865-3">
+      <stop
+         id="stop7867-2"
+         offset="0"
+         style="stop-color:#916f6f;stop-opacity:1" />
+      <stop
+         id="stop7869-2"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective6484"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-329.44968,-268.52225)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5276-2"
+       xlink:href="#linearGradient3597-5-5-8-44-6"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-5-8-44-6">
+      <stop
+         id="stop3599-0-5-0-4-0"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-3-6-2-1"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1012.4504,-100.9823)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5274-7"
+       xlink:href="#linearGradient3597-5-8-3-5-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-5-8-3-5-5">
+      <stop
+         id="stop3599-0-4-8-7-4"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1;" />
+      <stop
+         id="stop3601-9-9-0-4-1"
+         offset="1"
+         style="stop-color:#88adc0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="158.84985"
+       x2="747.66296"
+       y1="-4.8764167"
+       x1="682.24261"
+       gradientTransform="matrix(0.99527902,0,0,0.98941788,-699.77988,882.27421)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5270-4"
+       xlink:href="#linearGradient7288-7-6"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7288-7-6">
+      <stop
+         id="stop7290-30-0"
+         offset="0"
+         style="stop-color:#5097b7;stop-opacity:1" />
+      <stop
+         id="stop7292-3-7"
+         offset="1"
+         style="stop-color:#7a5c5c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="76.642044"
+       x2="250.0182"
+       y1="240.00003"
+       x1="349.99994"
+       gradientTransform="matrix(1.2852939,0,0,1.2115348,0.388993,23.378409)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5267-7"
+       xlink:href="#linearGradient7865-33"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient7865-33">
+      <stop
+         id="stop7867-5"
+         offset="0"
+         style="stop-color:#4d7a91;stop-opacity:1" />
+      <stop
+         id="stop7869-9"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="76.642044"
+       x2="250.0182"
+       y1="240.00003"
+       x1="349.99994"
+       gradientTransform="matrix(1.2852939,0,0,1.2115348,-21.222608,911.10531)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6599"
+       xlink:href="#linearGradient6832"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective2935" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4946"
+       xlink:href="#linearGradient3165-1-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-1"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-7"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-40"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4329"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3227-5-9">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3229-1-4" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3231-7-8" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2947"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2949">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2951" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2953" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1333.8754,557.29692)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4331"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-9-8">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3599-4-2" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3601-8-4" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-27.200724,469.56325)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4333-5"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2960">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2962" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop2964" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2682.5475,707.53148)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4335"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2967-5">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2969" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop2971" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4287"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2974">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2976" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2978" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2980"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2982-1">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2984" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2986" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-48.757944,384.46363)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4289"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2989">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2991" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop2993" />
+    </linearGradient>
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.36468,-27.413687)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3774"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2996">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2998" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3000" />
+    </linearGradient>
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.44951,-27.413687)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3772"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3003">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3005" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3007" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-7"
+       id="linearGradient3968"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.300058,0,0,1.3036437,259.76284,645.52314)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       id="linearGradient3615-2-7">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop3617-3-1" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3619-2-1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-7"
+       id="linearGradient3067"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3031931,0,0,1.3036437,-876.95046,-27.413687)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4757" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4946-5"
+       xlink:href="#linearGradient3165-1-1-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-1-2"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-7-7"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-40-6"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4757-7" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4946-6"
+       xlink:href="#linearGradient3165-1-1-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-1-1"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-7-8"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-40-9"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4869"
+       xlink:href="#linearGradient3165-1-1-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4757-1" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4925" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4952" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5022" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4946-50"
+       xlink:href="#linearGradient3165-1-1-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3165-1-1-9"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-7-7-0"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-4-40-0"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4329-6"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3227-5-9-1">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3229-1-4-3" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3231-7-8-8" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5034"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5036-9">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5038" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop5040" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1333.8754,557.29692)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4331-3"
+       xlink:href="#linearGradient3597-9-8-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3597-9-8-4">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3599-4-2-4" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3601-8-4-6" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-27.200724,469.56325)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4333-5-0"
+       xlink:href="#linearGradient3597-9-8-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5047">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5049" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop5051" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2682.5475,707.53148)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4335-6"
+       xlink:href="#linearGradient3597-9-8-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5054-6">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5056" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop5058" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4287-1"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5061">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5063" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop5065" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5067"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5069">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5071" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop5073" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-48.757944,384.46363)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4289-8"
+       xlink:href="#linearGradient3597-9-8-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5076">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5078" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop5080" />
+    </linearGradient>
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.5184,382.45572)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3774-4"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5083">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5085" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop5087" />
+    </linearGradient>
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.60323,382.45572)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3772-9"
+       xlink:href="#linearGradient3227-5-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5090">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop5092" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop5094" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-7-3"
+       id="linearGradient3067-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3031931,0,0,1.3036437,-876.95046,-27.413687)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       id="linearGradient3615-2-7-3">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop3617-3-1-7" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3619-2-1-8" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-7-3"
+       id="linearGradient5153"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3031931,0,0,1.3036437,-877.10418,382.45572)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5380" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3031931,0,0,1.3036437,-876.95046,-407.41369)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5661"
+       xlink:href="#linearGradient3615-2-7"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="7.3214297"
+       x2="350.71429"
+       y1="7.3214297"
+       x1="-1.0714296"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.44951,-407.41369)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5663"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="243.9391"
+       x2="350.64923"
+       y1="243.9391"
+       x1="-1.1364633"
+       gradientTransform="matrix(1.3045159,0,0,1.3036437,-878.36468,-407.41369)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5665"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5667"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-48.757944,384.46363)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5669"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5671"
+       xlink:href="#linearGradient3227-5-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1333.8754,557.29692)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5673"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-27.200724,469.56325)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5675"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2682.5475,707.53148)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5677"
+       xlink:href="#linearGradient3597-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="566.41748"
+       x2="348.89258"
+       y1="220.17154"
+       x1="348.89258"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-1041.7437,-1127.2847)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5679"
+       xlink:href="#linearGradient3165-1-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5750" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective2935-6" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-0"
+       id="linearGradient3968-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.300058,0,0,1.3036437,259.76284,645.52314)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       id="linearGradient3615-2-0">
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1;"
+         offset="0"
+         id="stop3617-3-3" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3619-2-8" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3227-5-1">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3229-1-2" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3231-7-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2948">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2950" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2952" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4287-9"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2955">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2957" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2959" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2961"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2963">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2965" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2967" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-9-7">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3599-4-8" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3601-8-3" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4329-5"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2974-1">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2976-2" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2978-0" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2980-1"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2982-6">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2984-4" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop2986-0" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2989-1">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2991-8" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop2993-9" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2996-4">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop2998-1" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3000-4" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3003-9">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3005-8" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3007-8" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective5991" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective6059" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3854" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective4642" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4707"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4727"
+       xlink:href="#linearGradient3227-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="933.6109"
+       x2="9.7360582"
+       y1="951.37439"
+       x1="-127.16138"
+       id="linearGradient4759"
+       xlink:href="#linearGradient3615-2-0"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5-94"
+       id="linearGradient3242"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       id="linearGradient3227-5-94">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3229-1-8" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3231-7-82" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5-94"
+       id="linearGradient4456"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       id="linearGradient4458">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4460" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop4462" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-9-4">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3599-4-5" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3601-8-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4469">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4471" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop4473" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4476">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4478" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop4480" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5-94"
+       id="linearGradient3250"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       id="linearGradient4483">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4485" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop4487" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5-94"
+       id="linearGradient4489"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       id="linearGradient4491">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4493" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop4495" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4498">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4500" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop4502" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3471"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3473"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3475"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3477"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3479">
+        <feMergeNode
+           id="feMergeNode3481"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3483"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3485"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3487"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3489"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3491"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3493">
+        <feMergeNode
+           id="feMergeNode3495"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3497"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4402"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4404"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4406"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4408"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4410">
+        <feMergeNode
+           id="feMergeNode4412"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4414"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3513"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3515"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3517"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3519"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3521">
+        <feMergeNode
+           id="feMergeNode3523"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3525"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3345"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3347"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3349"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3351"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3353">
+        <feMergeNode
+           id="feMergeNode3355"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3357"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3359"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3361"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3363"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3365"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3367">
+        <feMergeNode
+           id="feMergeNode3369"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3371"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3527"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3529"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3531"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3533"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3535">
+        <feMergeNode
+           id="feMergeNode3537"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3539"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3373"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3375"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3377"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3379"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3381">
+        <feMergeNode
+           id="feMergeNode3383"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3385"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3387"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3389"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3391"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3393"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3395">
+        <feMergeNode
+           id="feMergeNode3397"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3399"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3401"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3403"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3405"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3407"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3409">
+        <feMergeNode
+           id="feMergeNode3411"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3413"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3415"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3417"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3419"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3421"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3423">
+        <feMergeNode
+           id="feMergeNode3425"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3427"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3429"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3431"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3433"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3435"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3437">
+        <feMergeNode
+           id="feMergeNode3439"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3441"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3443"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3445"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3447"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3449"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3451">
+        <feMergeNode
+           id="feMergeNode3453"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3455"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       id="linearGradient4596">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4598" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop4600" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4603">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop4605" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop4607" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3457"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3459"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3461"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3463"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3465">
+        <feMergeNode
+           id="feMergeNode3467"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3469"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-1"
+       id="linearGradient3258"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.300058,0,0,1.3036437,259.76284,645.52314)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       id="linearGradient3615-2-1">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop3617-3-7" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3619-2-11" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-0"
+       id="linearGradient4442"
+       gradientUnits="userSpaceOnUse"
+       x1="-228.3548"
+       y1="1061.6899"
+       x2="4.9147081"
+       y2="928.71198"
+       gradientTransform="translate(-200,0)" />
+    <filter
+       id="filter5212"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5214"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5216"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5218"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5220">
+        <feMergeNode
+           id="feMergeNode5222"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5224"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5226"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5228"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5230"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5232"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5234">
+        <feMergeNode
+           id="feMergeNode5236"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5238"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5240"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5242"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5244"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5246"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5248">
+        <feMergeNode
+           id="feMergeNode5250"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5252"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5254"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5256"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5258"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5260"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5262">
+        <feMergeNode
+           id="feMergeNode5264"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5266"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5268"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5270"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5272"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5274"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5276">
+        <feMergeNode
+           id="feMergeNode5278"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5280"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5282"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5284"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5286"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5288"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5290">
+        <feMergeNode
+           id="feMergeNode5292"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5294"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5296"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5298"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5300"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5302"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5304">
+        <feMergeNode
+           id="feMergeNode5306"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5308"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5310"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5312"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5314"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5316"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5318">
+        <feMergeNode
+           id="feMergeNode5320"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5322"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9077"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9079"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9081"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9083"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9085">
+        <feMergeNode
+           id="feMergeNode9087"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9089"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-17">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-40" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-9" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9237"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9239"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9241"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9243"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9245">
+        <feMergeNode
+           id="feMergeNode9247"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9249"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter6461"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur6463"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6465"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset6467"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6469">
+        <feMergeNode
+           id="feMergeNode6471"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6473"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9223"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9225"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9227"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9229"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9231">
+        <feMergeNode
+           id="feMergeNode9233"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9235"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9293"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9295"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9297"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9299"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9301">
+        <feMergeNode
+           id="feMergeNode9303"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9305"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9293-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9295-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9297-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9299-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9301-9">
+        <feMergeNode
+           id="feMergeNode9303-1"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9305-0"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9223-9"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9225-1"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9227-5"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9229-7"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9231-3">
+        <feMergeNode
+           id="feMergeNode9233-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9235-4"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter6461-2"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur6463-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6465-0"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset6467-1"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6469-2">
+        <feMergeNode
+           id="feMergeNode6471-7"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6473-7"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9237-0"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9239-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9241-4"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9243-1"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9245-0">
+        <feMergeNode
+           id="feMergeNode9247-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9249-7"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-9">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-5" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-97" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9077-2"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9079-0"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9081-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9083-8"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9085-6">
+        <feMergeNode
+           id="feMergeNode9087-7"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9089-0"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9293-8"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9295-1"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9297-8"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9299-3"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9301-0">
+        <feMergeNode
+           id="feMergeNode9303-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9305-6"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-9"
+       id="linearGradient6777"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-289.49112,592.39531)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-17"
+       id="linearGradient6983"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-2506.6273,-1560.4453)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4332"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4334"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4336"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset4338"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4340">
+        <feMergeNode
+           id="feMergeNode4342"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4344"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3530"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3532"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3534"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3536"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3538">
+        <feMergeNode
+           id="feMergeNode3540"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3542"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3544"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3546"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3548"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3550"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3552">
+        <feMergeNode
+           id="feMergeNode3554"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3556"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3558"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3560"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3562"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3564"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3566">
+        <feMergeNode
+           id="feMergeNode3568"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3570"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3614"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3616"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3618"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3620"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3622">
+        <feMergeNode
+           id="feMergeNode3624"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3626"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter7070"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur7072"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix7074"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset7076"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge7078">
+        <feMergeNode
+           id="feMergeNode7080"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode7082"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter7084"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur7086"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix7088"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset7090"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge7092">
+        <feMergeNode
+           id="feMergeNode7094"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode7096"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5341"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5343"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5345"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5347"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5349">
+        <feMergeNode
+           id="feMergeNode5351"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5353"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-1-17"
+       id="linearGradient5282"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-2461.1274,-1278.5966)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-1-17">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-7-4" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-4-0" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5327"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5329"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5331"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5333"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5335">
+        <feMergeNode
+           id="feMergeNode5337"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5339"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5313"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5315"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5317"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5319"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5321">
+        <feMergeNode
+           id="feMergeNode5323"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5325"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5299"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5301"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5303"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5305"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5307">
+        <feMergeNode
+           id="feMergeNode5309"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5311"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4362-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4364-4"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4366-0"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4368-9"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4370-4">
+        <feMergeNode
+           id="feMergeNode4372-8"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4374-8"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-2"
+       id="linearGradient8080"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,549.9115,550.21259)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       id="linearGradient3165-8-2"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-8-4"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-2-5"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4348-5"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4350-1"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4352-7"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4354-1"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4356-1">
+        <feMergeNode
+           id="feMergeNode4358-5"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4360-2"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4334-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4336-6"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4338-1"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4340-4"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4342-2">
+        <feMergeNode
+           id="feMergeNode4344-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4346-2"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter7774"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur7776"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix7778"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset7780"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge7782">
+        <feMergeNode
+           id="feMergeNode7784"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode7786"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4362-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4364-3"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4366-8"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4368-4"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4370-9">
+        <feMergeNode
+           id="feMergeNode4372-4"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4374-9"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient7469"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       id="linearGradient3165-8-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-8-3"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-2-4"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4348-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4350-5"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4352-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4354-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4356-1-1">
+        <feMergeNode
+           id="feMergeNode4358-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4360-9"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4334-2"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4336-0"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4338-6"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4340-8"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4342-2-7">
+        <feMergeNode
+           id="feMergeNode4344-9"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4346-0"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5034"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5036"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5038"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5040"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5042">
+        <feMergeNode
+           id="feMergeNode5044"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5046"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-0"
+       id="linearGradient5492"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.65778033,0,0,0.99986418,260.00962,0.14917422)"
+       x1="-126.20473"
+       y1="1096.4493"
+       x2="-67.881889"
+       y2="870.00732" />
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter3614-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3616-5"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3618-3"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3620-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3622-6">
+        <feMergeNode
+           id="feMergeNode3624-2"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3626-9"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter3558-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3560-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3562-7"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3564-0"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3566-9">
+        <feMergeNode
+           id="feMergeNode3568-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3570-6"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter3544-0"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3546-6"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3548-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3550-6"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3552-1">
+        <feMergeNode
+           id="feMergeNode3554-8"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3556-7"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter3530-9"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur3532-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3534-0"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3536-2"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3538-3">
+        <feMergeNode
+           id="feMergeNode3540-7"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3542-5"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter4332-9"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4334-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4336-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset4338-8"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4340-9">
+        <feMergeNode
+           id="feMergeNode4342-7"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4344-36"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2-0"
+       id="linearGradient5557"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.65778033,0,0,0.65871199,522.6971,296.85036)"
+       x1="-126.20473"
+       y1="1096.4493"
+       x2="-67.881889"
+       y2="870.00732" />
+  </defs>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,10)"
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Calque 1">
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3446"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3833"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#3e6275;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3559"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3614"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#3e6275;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text4918"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text7871"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3531"
+       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:BankGothic Md BT;-inkscape-font-specification:BankGothic Md BT" />
+    <g
+       transform="matrix(1,0,0,1.0059428,0,0.04195783)"
+       id="text3535"
+       style="font-size:30.72599983px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <g
+       id="text2852-7-1-4"
+       style="font-size:11.43628502px;font-style:normal;font-weight:normal;fill:#666666;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       transform="matrix(1.1139541,0,0,1.0059428,-50.264098,-21.25646)">
+      <g
+         transform="matrix(0.97512444,0,0,0.9429148,1.1223489,20.00225)"
+         id="text4585"
+         style="font-size:13px;font-variant:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial" />
+    </g>
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3446-1"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3833-6"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#3e6275;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3559-8"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3614-5"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#3e6275;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text4918-7"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text7871-6"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3531-1"
+       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:BankGothic Md BT;-inkscape-font-specification:BankGothic Md BT" />
+    <g
+       transform="matrix(1,0,0,1.0059428,-17.922499,492.7941)"
+       id="text3535-8"
+       style="font-size:30.72599983px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold" />
+    <rect
+       y="-14.377257"
+       x="-879.74304"
+       height="299.83804"
+       width="458.91"
+       id="rect3606"
+       style="opacity:0.99142857;fill:url(#linearGradient3067);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="13.054078"
+       x="-696.32629"
+       height="39.10931"
+       width="39.10931"
+       id="rect3616"
+       style="opacity:0.99142857;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       ry="0"
+       rx="0"
+       y="-28.344847"
+       x="-879.84717"
+       height="20.951416"
+       width="458.91"
+       id="rect3618"
+       style="opacity:0.99142857;fill:url(#linearGradient3772);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       ry="0"
+       rx="0"
+       y="280.1203"
+       x="-879.84717"
+       height="20.951416"
+       width="458.91"
+       id="rect3620"
+       style="opacity:0.99142857;fill:url(#linearGradient3774);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="141.57812"
+       x="-732.82031"
+       height="39.10931"
+       width="39.10931"
+       id="rect3626"
+       style="opacity:0.99142857;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="187.66986"
+       x="-815.12518"
+       height="39.10931"
+       width="39.10931"
+       id="rect3628"
+       style="opacity:0.99142857;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="220.01227"
+       x="-736.11249"
+       height="39.10931"
+       width="39.10931"
+       id="rect3630"
+       style="opacity:0.99142857;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="99.847046"
+       x="-696.32629"
+       height="39.10931"
+       width="39.10931"
+       id="rect3632"
+       style="opacity:0.99142857;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="220.01227"
+       x="-603.10767"
+       height="39.10931"
+       width="39.10931"
+       id="rect3634"
+       style="opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="55.07312"
+       x="-740.77094"
+       height="39.10931"
+       width="39.10931"
+       id="rect3636"
+       style="opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <rect
+       y="187.66986"
+       x="-692.32629"
+       height="39.10931"
+       width="39.10931"
+       id="rect3638"
+       style="opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <path
+       id="path3640"
+       d="m -483.98791,149.57813 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2037,0 -0.2037,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.1079,0.10817 0.1629,0.16295 l 0,0.16296 -0.2444,-0.0815 c -0.024,-0.006 -0.057,-0.001 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61108 -0.4074,0.0815 0,3.87019 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85552 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2036,-0.0815 0,11.12172 0.1629,-1.18143 0.1222,0.0407 0,1.01847 0.2037,0 0.4889,0.5296 c -0.1,0.0821 -0.1897,0.19341 -0.2444,0.36665 l -0.2037,-0.24443 -0.082,0 -0.163,-0.65182 0,0.57034 -0.041,0 -0.2444,0.12222 0,0.89625 0.2851,-0.12221 0,0.32591 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.3667,-0.12222 0,0.24443 -0.3667,0 0,0.85552 -0.2851,0.0815 0,0.20369 0.2851,-0.0815 0,0.0815 c 0.4141,4e-5 0.5704,-0.14215 0.5704,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1222,0.0815 -0.082,0.24443 0.1222,0 0,0.0815 0.2037,0.24443 0,0.28517 -1.0185,0 0,0.24444 3.3813,0 c 0.2347,-0.63833 0.527,-0.97774 0.937,-0.97774 l 0,-0.40738 -0.5703,0 -0.2852,0.20369 -0.1629,0 -0.2445,-0.32591 0.082,-0.24443 -0.2444,0.0815 -0.6518,0 -0.3259,0.12222 0,-0.0407 -0.3667,-0.0815 -0.2852,0.2037 -0.4481,-0.2037 0,-0.24443 1.0592,0 0,-0.20369 -0.2037,-0.2037 0,-0.24443 0.4889,0.16295 -0.082,0.2037 0.5703,0.12222 0.2852,-0.0407 0.6111,0.20369 -0.082,0.24443 0.2852,0.0815 0.5703,-0.0407 0.6518,0.24444 0,0.20369 c -0.3219,7e-5 -0.8162,0.38652 -1.3851,1.18143 l 18.5769,0 c 0.082,-0.0802 0.1635,-0.16304 0.2445,-0.24444 0.212,0.0756 0.504,0.16494 0.7333,0.24444 l 1.4666,0 -0.2445,-0.40739 1.1407,0.0815 0.2037,0.0815 -0.041,0.16296 -0.5296,0.0815 0.7333,0 7.8626,0 0.041,-0.16296 c 0.061,0.0307 0.1356,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3037,0 0.3666,-0.24444 -0.041,0.24444 2.5666,0 0.082,-0.24444 0.2444,0.0407 -0.082,0.2037 0.4481,0 0,-1.34439 -0.082,0.24444 -0.2444,-0.0407 0.1222,-0.40739 0.2037,0.0815 0,-9.04403 -0.1222,-0.0407 0.1222,-0.57034 0,-1.71104 -0.2852,0.0815 -0.041,0.2037 0.2037,0.32591 -0.6111,1.09995 -0.2037,-0.0407 0.937,-3.50354 0,-1.58882 -0.2851,0.12222 -0.041,1.05921 -0.6519,2.36285 -0.5703,0.28517 1.1814,-4.39979 0.3667,0.57034 0,-1.34438 -0.163,-0.0407 0.163,-0.57035 0,-1.83324 c -0.2598,-0.39209 -0.5239,-0.78278 -0.8148,-1.14069 l 0.8148,0.0407 0,-1.22217 -0.2037,0.85552 -0.2445,-0.0815 0.326,-1.18143 0.1222,0.0407 0,-3.54428 -0.082,0.28517 -0.4482,-0.12222 0.5297,-2.03694 0,-7.98482 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2851,-0.16296 0.082,-0.28517 c -0.3162,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.0999,0 2.811,1.18142 -0.1223,0.40739 0.2852,-0.16295 0.6926,0.20369 -0.4889,0.81478 -0.2037,-0.0407 -0.1629,-0.28517 -0.2445,-0.0407 -0.3666,0.12222 0.1222,-0.40739 0.3666,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.2852,0.2037 -0.2444,-0.0407 -0.6926,-0.48887 -0.5703,0.36665 -1.5481,-1.2629 -1.8333,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54807 0.2037,0.0407 -0.1629,0.69256 -0.4482,-0.12221 -0.082,0.20369 c 0.3277,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4482,0.12222 -0.1222,0.40738 -0.4482,-0.12221 -0.1222,0.40739 0.4481,0.12221 -0.1629,0.69256 c -0.4097,-0.10951 -0.6971,0.12321 -0.937,0.69256 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.163,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.2037 l 0.5296,0.16296 0.163,-0.65182 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2851,-0.16295 0.082,-0.28518 -0.2037,-1.46659 0.6519,-0.24444 -0.2445,-0.0815 0.4482,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2851,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6926,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2445,-0.0407 0.163,-0.65182 -0.937,0 0.2444,0.48886 -0.081,0.44813 -0.3666,-0.57034 0.082,-0.36665 -0.4481,0 -0.8556,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2851,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18142 0.3666,-1.42586 -0.4888,0 -0.6111,2.36285 -0.2444,0 0.611,-2.36285 -2.6072,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9988,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62502 -0.7741,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5704,-0.0815 0,-0.28517 c 0,-0.20089 -0.2546,-0.36699 -0.7741,-0.48887 l -0.041,-0.20369 -0.9777,0 c 0.001,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13728 -0.624,-0.21604 -1.0185,-0.28517 l -1.711,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83274 0,-0.93699 -0.041,0.0407 -0.1629,0.61109 0.2037,0.28517 z m -34.3429,-12.75127 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12222 z m 13.4846,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.2955,0.36665 0,0.48887 -0.4482,0 0.4482,-0.48887 z m 7.8218,0 0.082,0.0407 0.2037,0.89626 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.974,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24443 z m 13.0365,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8143,0.0407 0.4481,0.12221 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48886 z m -5.8257,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6518,-0.65182 1.0999,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.774,3.87019 -0.2852,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2851,-0.28517 1.3851,-5.21458 z m -17.7214,0.2037 0.2445,0 0.041,0.16295 -0.082,0.0407 -0.1223,0 -0.082,-0.20369 z m 14.5438,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.8208,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855,0 0,0.5296 -0.4888,0 0.4888,-0.5296 z m 24.3619,0.16295 c -0.074,0.27639 0.1417,0.51308 0.5703,0.65182 l 0,-0.5296 -0.5703,-0.12222 z m -6.0701,0.32591 0.4481,0.12222 -0.3666,1.30364 -0.4482,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6519,0.20369 0,0.28518 -0.8556,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8333,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.12222 -0.4073,-1.30364 0.1222,-0.48887 0.2444,0.0407 -0.1222,0.48887 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81478 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4917,0.12222 0.2444,0.0407 0.1223,0.48887 -0.326,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3037,0 0.8147,0 c -0.012,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3036,0 0.3667,0 0.4073,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.2923,0 0.6518,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1434,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4481,-0.12222 z m 10.144,0.36665 0.4889,0.12222 0.4074,0.57034 -0.6519,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.2037 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7285,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.0592,0 0.8148,0 0,0.24443 -0.8148,0 0,-0.24443 z m 22.3656,0.0407 0.4482,0.12221 0.2851,0.28517 0.082,-0.40738 0.2445,0.0407 -0.1223,0.44812 -0.2037,-0.0815 0.163,0.28518 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.0022,0.0407 0.2851,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7258,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.9801,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12222 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.163,0.28518 l -0.3667,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5522,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3666,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32592 0.163,-0.16295 z m -3.5035,0.0815 0.081,0.44812 -0.4481,0.12222 -0.041,-0.16295 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2852,1.0667 0.7124,1.54315 1.3037,1.38512 l 0.082,0.16295 -0.163,0.24444 -0.2444,-0.12222 c -0.5964,0.73087 -0.8708,1.45178 -0.6926,2.11842 l -0.8555,-0.65182 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.5878,0.24443 0.4482,0.12222 -0.082,0.24443 -0.4482,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.5514,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2212,0.0407 0.4481,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.1629,1.46659 -0.4074,0.57035 0.2037,0.24443 -0.3259,0.2037 0.3666,0.57034 -0.2852,0.12222 -0.2444,-0.0407 -0.041,1.14069 -0.3259,1.14068 -0.4481,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1223,0.0815 0.163,0.0407 c 0.083,0.20379 0.1422,0.44083 0.163,0.69256 l -0.041,0.2037 -0.163,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54808 0.774,-2.85172 0.4481,-0.81478 -0.2851,-1.05921 0.5296,0.16296 0.3259,-2.07769 z m -28.4358,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.2852,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.163,0 -0.2037,0.28517 -0.2037,0 0.3667,-0.61108 1.2629,-0.2037 z m 4.8072,0 0.163,0.65183 -0.2037,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0886,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1634,-0.13004 0.2444,-0.20369 z m 32.5911,0.40738 1.5074,1.34439 -0.1222,0.44812 -0.5296,-0.16295 -0.4889,1.79251 -0.2037,-0.0407 0.4074,-2.48507 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.7741,0 -0.1223,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4172,0.12222 0.041,0 0.2037,0.2037 -0.163,0.0407 -0.082,-0.24443 z m 3.422,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4074,0.12222 c -0.1395,0.12918 -0.3455,0.16298 -0.6519,0.16295 l -0.2036,0 0,-0.20369 0.4888,-0.24443 z m -4.6443,0.0407 0.6519,0.20369 0,0.44813 c -0.4141,0 -0.6518,0.1829 -0.6519,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4477,0.0407 0.3259,0.61109 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.2037 z m -18.0881,0.0407 0.5704,0.28518 0.6518,2.36285 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85552 0.041,0.65182 0.2851,0.12222 -0.3666,0.57034 -1.1814,-4.3998 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2851,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.1629,-0.65182 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36285 -0.2852,-0.16295 -0.8148,-3.05542 z m -7.8218,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.7759,0.20744 -1.0756,0.74803 -0.937,1.71104 l 0.3667,0.57034 -0.2037,0.0407 0.5703,0.24443 -0.1629,1.30365 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.5704,0.85552 c -0.141,0.11253 -0.2864,0.23952 -0.4482,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81477 -0.4481,0.12221 -0.2037,-0.81477 0.4074,-0.12222 -0.1222,-0.44813 -0.6518,0.2037 0.082,0.44812 -0.2037,0.0407 -0.163,-0.61108 c 0.1174,-0.74568 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61109 0.2037,-0.0407 1.3444,-2.03695 z m 31.3282,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28137 -0.041,0.2037 0.2852,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6926,2.64802 c -0.6159,-0.32291 -0.8481,-0.90564 -0.6111,-1.79251 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48887 0.082,-1.18142 -0.5703,-0.12222 -0.6926,2.68876 0.2445,0.28518 -0.3667,0.12221 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08429 -0.2444,1.50733 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12222 -0.4481,-0.12222 -0.163,-0.93699 0.5704,-0.48887 0,-0.12222 c 0.055,0.0879 0.1486,0.1672 0.2851,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2445,-1.87399 0.3666,-0.5296 0.7333,-3.62576 0.2444,-0.89625 -0.4481,-0.12222 -0.3666,1.34438 -0.3667,0.12222 0.2444,0.28517 -0.1222,0.48887 -0.5296,-0.16296 0.8148,-3.09615 z m -9.207,0.12221 0.2037,0.0407 -0.2444,0.89626 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01848 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81478 -0.2037,0.0407 -0.2445,-0.77404 0.2445,-0.0815 z m -6.722,0.0407 0.041,0 0.1223,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2445,0.0407 -0.2037,0.69256 -0.2037,-0.0407 0.1629,-0.69256 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48886 -0.082,-0.36665 0.2852,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1892,-0.0178 0.3783,-0.0562 0.5296,-0.0815 z m -11.7327,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.132,0.12222 0.7741,0.20369 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24443 z m -8.7181,0.0407 0.5704,0.16296 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -15.4807,0.0407 0,0.61109 0.4481,0 c 0,0.33785 0.036,0.62662 0.1222,0.81477 -0.2101,0.0427 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.3667,-0.40739 -0.6518,0.2037 c 0,-0.11015 -0.034,-0.20771 -0.082,-0.28518 l -0.2444,-0.89625 1.3443,-0.16296 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.65182 c 0.3992,-0.22119 0.701,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.1937 0.2037,0.28517 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2852,0.32591 l 0.041,0.16295 -0.2037,-0.20369 -0.2445,0.12222 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3666,0.0815 0.041,-0.20369 -0.2851,-0.52961 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.2037 -0.7741,-0.2037 -0.4481,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2416,3e-5 0.4327,0.0164 0.6111,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40739 z m 16.2956,0 0.2444,0.0815 -0.2444,0.89626 -0.2445,-0.0815 0.2445,-0.89626 z m -19.9621,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.5481,0.0815 0.2445,0.28517 -0.2037,0.36665 -0.163,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.5106,0.12222 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.836,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.6622,0.0407 0.5297,0.937 0.041,0.16295 -0.2037,0.28518 0.774,1.83325 -0.5296,0.32591 -0.2852,-1.50734 -0.1222,-0.44813 -0.2444,-0.12222 -0.163,-1.42586 0.2037,-0.0407 z m -0.8962,0.0407 1.1407,4.23685 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6926,-3.4628 -0.041,-0.20369 -0.2851,-0.12222 0.4888,-0.12222 z m 19.8806,0.0815 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -7.7812,0.0815 0.6519,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.326,0.16296 l -0.3259,-0.0815 0,-0.28517 z m -9.2069,0.12222 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24444 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8138,0.0815 0.3667,0 c -0.095,0.17535 -0.2074,0.27297 -0.3667,0.28517 l 0,-0.28517 z m 7.1293,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.5073,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61109 -0.1222,0.40738 -0.4481,-0.12221 0.2444,-0.89626 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56117 0.6518,0.69256 l -0.2444,0.89626 c -0.1374,-0.16028 -0.2848,-0.28993 -0.4482,-0.40739 l 0.041,-0.20369 -0.4481,-0.12222 0.2445,-0.89626 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.1222,-0.0407 0.163,-0.0815 z m -15.6029,0.16296 0.082,0.16295 0.3259,2.9332 0.4074,-0.12222 -0.1223,-0.36665 0.6111,0.24444 c -0.4434,0.11851 -0.6365,0.41476 -0.5296,0.81477 l 0.2444,0.12222 -0.2444,0.7333 0.041,0.20369 0.4481,-0.12221 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44813 -0.3666,1.14069 -0.3667,-0.0815 c -0.056,0.0711 -0.069,0.13431 -0.1222,0.20369 l -0.4481,-1.58881 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16295 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93699 l -0.4481,-0.77404 -0.041,-0.16295 0.5704,-0.36665 z m 31.1652,0 0.5296,0.12221 -0.2037,0.69256 -0.5296,-0.12221 0.2037,-0.69256 z m -28.9246,0.28517 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.7257,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9067,0 0.5296,0.12221 -0.1223,0.48887 0.4482,0.12222 0.1629,-0.69256 0.4482,0.57034 -0.5704,0.81478 -0.1629,1.87398 -0.4482,0.52961 -0.2444,-0.0407 c 0.5137,-1.92153 0.4109,-2.92097 -0.2444,-3.09615 l 0.2037,-0.69256 z m -20.0436,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.7925,0 0.2037,0 c 0.1369,0.16132 0.1866,0.38537 0.163,0.65183 l -0.1222,0 -0.2445,-0.65183 z m -2.5665,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5476,0.16296 0.2444,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.3259,-0.24443 l -0.041,-0.28517 z m -7.1701,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.0815 0.4074,0.12222 -0.3259,0 -0.081,-0.12222 z m -6.7219,0.12222 0.2037,0.0815 -0.082,1.22217 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48887 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6253,0.0407 0.3259,0.0815 -0.163,0.65182 -0.2037,-0.0815 -0.041,-0.52961 0.082,-0.12222 z m -15.3586,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1222,0.16295 0.082,0.28518 -0.3259,-0.40739 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.1629,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24444 c -0.1412,0.67657 -0.1364,1.03083 0.1222,1.09995 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.4482,-0.0815 c -0.206,-0.77059 -0.1475,-1.24298 0.1222,-1.34439 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.7333 0.2852,0.0815 -0.326,0.12221 -0.082,0.24444 0.2445,0.28517 -0.082,0.16296 -0.4074,0.57034 0.041,0.85552 -0.6518,1.30364 0.2444,0.28517 -0.4889,-0.16295 0.3667,-1.34439 -1.1814,0.7333 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79803 -0.2037,-0.85551 l 0.2852,-0.16296 0.041,-0.20369 0.2037,-1.30364 c 0.1374,-0.1299 0.2764,-0.27149 0.4074,-0.40739 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2445,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.2444,0.0407 0.082,-0.36665 0.3667,-0.16296 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.19121 0.2037,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.32591 l 0.2852,0.0815 0.2851,-1.05921 c 0.1085,-0.19992 0.2227,-0.4049 0.3259,-0.61108 l -0.1222,-0.16296 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2445,-0.24444 z m -22.162,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.432,0.2037 0.4888,0.12221 -0.4073,0.937 c -0.091,-0.13612 -0.2088,-0.26481 -0.3667,-0.36665 l 0.2852,-0.69256 z m -10.8773,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9777,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.1629,0.65182 -0.2852,-0.57034 0.041,-0.16296 z m 23.9137,0.0407 c 0.452,0.27924 0.6049,0.76826 0.4074,1.50734 l -0.5296,1.05921 c -0.1997,1.12234 -0.2914,1.89101 -0.2851,2.40359 l -0.163,-0.0407 0.041,-0.77404 0.1222,-0.48886 -0.3666,-0.77404 0.8962,-2.11842 -0.1222,-0.77404 z m -21.836,0.12222 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.0995,0 0.041,0 -0.163,0.57034 c -0.021,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.9621,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16296 z m -4.1146,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6257,0 c 0.1218,0.0561 0.2253,0.11426 0.4074,0.16295 l -0.082,0.36665 -0.1629,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.1245,0.0815 0.2445,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1222,-0.48886 z m -25.4618,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69256 l -0.4481,-0.77403 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1478,0.0407 0.2852,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8556,0 0.5703,0 0,0.0815 -0.3666,0.57035 0.1222,0.16295 -0.6111,-0.16295 c 0.107,-0.16059 0.1904,-0.4143 0.2852,-0.65183 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.081,0.16295 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0828 0.016,-0.15377 0.041,-0.24444 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48886 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2445,-0.0407 0,-0.48886 -0.2852,0.0407 -0.041,-0.24444 z m -7.6996,0.0815 0,0.77404 c -0.2652,-0.0831 -0.4074,-0.28894 -0.4074,-0.65182 0.1827,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.5405,0 0.4074,0.12222 -0.082,0.36665 -0.4482,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24444 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2444,-0.36665 0.163,-0.28517 -0.4482,-0.12222 0.5704,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2852,0.0407 l 0,0.65182 -0.2445,-0.0815 -0.041,0.12222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.163,0 -0.5296,0.77403 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.1222,0.20369 c -0.155,0.0761 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2444,-1.05921 l 0.4481,-1.62955 z m -7.2923,0.44813 c 0.2126,0.11967 0.3124,0.32245 0.2852,0.61108 l -0.2037,-0.12222 -0.082,-0.48886 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.2037 0.082,0.36665 c -0.1679,-0.14918 -0.2705,-0.48918 -0.2852,-1.01848 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.9355,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.8962,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.5177,0 0.4074,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.7333,0 0.2037,0.0815 -0.1223,0.40739 -0.2036,-0.0407 0.1222,-0.44813 z m 7.1293,0.0815 0.082,0.12222 0.2851,0.0815 0.081,-0.0407 -0.2037,1.34439 -0.6925,2.52581 -0.2444,0.48886 -0.082,-0.36665 0.2036,-0.28517 -0.2036,-0.20369 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12221 0.2037,0.0407 0.041,-1.05921 0.2852,-0.97773 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.1629,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4074,0.12222 -0.1223,0.36665 -0.2851,-0.48887 z m -10.6329,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48887 z m 27.4173,0 0.3666,0.0815 c -0.05,0.18576 -0.024,0.33527 0,0.44813 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44813 z m -3.9517,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23874 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2445,0.81477 -0.2037,-0.0407 0.2445,-0.81478 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4073,0.24443 l -0.1629,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36665 z m -21.9176,0.16295 0.082,0 c 0.01,0.0632 0,0.14342 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.2429,0.36665 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1223,-0.0407 z m 6.7627,0.16296 0.2036,0.0815 -0.7333,2.81098 -0.2036,-0.0815 0.7333,-2.81098 z m 9.4514,0 -0.2037,0.81478 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89625 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2374,0.33745 0.3666,0.48887 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.2037 l -0.163,0.65182 -0.2037,-0.0407 c 0.071,-0.26674 -0.1676,-0.49256 -0.611,-0.61108 l 0.2444,-0.85552 z m 1.0185,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4889,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44812 0.2444,0.89626 -0.4481,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2444,-0.0407 0.6518,-2.40359 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24444 0.6926,0.16295 0.082,-0.20369 -0.6926,-0.2037 z m -28.6802,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.1796 -0.3023,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1448,-0.11438 0.3062,-0.20677 0.4889,-0.24443 z m 13.3624,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.955,0.20369 0.041,0 0.3259,0.12222 c 0.029,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77404 -0.2036,-0.0407 c 0.1426,-0.53338 0.01,-0.85798 -0.2852,-0.937 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.081,0 0,-0.0407 z m -2.5665,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.4438,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0184,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4888,0.0815 l 0.082,-0.28517 z m -19.4324,0.0815 0.163,0.0407 -0.082,0.32592 -0.082,-0.36665 z m 13.8105,0.12221 0,0.52961 -0.041,0.0407 -0.041,0.16295 -0.2444,0 0.2036,-0.69256 0.1223,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3666,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9332,1.0147 0.6926,1.91472 l -0.4889,-0.12221 -0.1629,0.5296 0.3666,0.57035 -0.8555,1.2629 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30364 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57034 c -0.1386,0.96298 0.1611,1.5036 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03694 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.2629 l 0.1629,-0.61109 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44812 -0.4074,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12221 0.082,-0.36665 0.4482,0.12221 0.082,-0.36665 -0.4074,-0.12221 0.1629,-0.61109 c 0.3696,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.4 -0.01,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61108 z m -24.5248,0.0407 0.4889,0.12221 -0.4074,0.57035 -0.2444,-0.0815 0.1629,-0.61108 z m 23.3027,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40739 -0.3259,-0.5296 0,-0.0407 z m -16.703,0.0815 0.6519,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.2445,-0.85552 z m 5.7035,0.2037 0.082,0 c -0.036,0.16125 -0.082,0.31655 -0.1222,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.8886,0.0407 0,0.16295 -0.082,0.24444 -0.2036,0 0.041,-0.2037 0.2444,-0.20369 z m -7.7403,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.6367,0.0815 0.6518,0.36665 -0.2851,1.01847 -0.2037,-0.0815 -0.2445,-0.937 0.082,-0.36665 z m 20.8991,0 0.4888,0.12222 0.3667,1.14069 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.4481,-0.12222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.12221 c -0.1069,0.40004 0.086,0.69627 0.5296,0.81478 l -0.5704,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.9332 -0.082,0.16295 -0.5703,-0.32591 0.082,-0.20369 0.4074,-0.77404 c 0.069,-0.55307 -0.1194,-0.87896 -0.4889,-0.97774 l 0.1222,-0.36665 0.4889,0.12222 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09995 0.4481,-1.58882 z m -18.9844,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4073,-0.12221 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2851,-0.52961 0,-0.0407 z m -19.962,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.2037 z m 1.0999,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0838,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2036,0.0407 0,0.44813 -1.711,6.35526 -0.4889,-0.12221 0.2852,-0.12222 0.041,-0.20369 0.6926,-3.46281 0.2852,-0.12222 0.041,-1.05921 0.4888,-1.95546 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6438,0.12222 0.041,0.44812 -0.1222,0.0407 -0.082,-0.32591 0.163,-0.16295 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48887 -0.4482,-0.16296 0.082,-0.40739 z m -20.9805,0.32592 0.4889,0.12221 -0.082,0.2037 -0.163,1.38512 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81477 0.041,-0.32591 z m 3.2998,0.0407 0.4482,0.0815 c -0.1069,0.39999 -0.01,0.69501 0.2851,0.77404 l -0.041,0.20369 c -0.4433,-0.11854 -0.7027,-0.10371 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3667,-0.57035 z m 16.8252,0.0407 0.2852,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.7697,0.16296 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12222 0.2444,-0.97773 z m 20.125,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0961,0 0.2037,0.0407 -0.4481,0.937 -0.2037,-0.0407 0.2037,-0.81478 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57034 -0.9778,0 0.163,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2851,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1326,-0.43446 0.1629,-0.61109 z m -4.3183,0.16296 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.3059,0 0.2037,0.0407 c -0.1069,0.40001 -0.01,0.69504 0.2852,0.77404 l -1.4259,3.50354 0.2037,0.24443 -0.041,0.2037 -0.5296,0.89625 -0.2037,-0.0407 0.163,-1.42586 0.2444,-0.12221 0.1222,-0.44813 0.6926,-3.42207 0.2852,-0.20369 z m -35.3613,0.12222 0.1222,0.85551 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18349 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3667,0.1646 c -0.01,-0.0436 -0.032,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34438 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1222,-0.44813 z m -4.8072,0.24444 0.2037,0.0815 -0.163,0.5296 -0.2036,-0.0407 0.1629,-0.57034 z m 28.9653,0 0.2037,0.0407 -0.2851,1.01847 -0.2037,-0.0815 0.2851,-0.97773 z m -20.4916,0.12221 0.3666,0.52961 -0.1629,0.61108 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.40001 -0.4121,0.56665 -0.8555,0.44812 0.107,-0.40002 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12222 0.1629,0.24443 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8365,0.2037 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8963,0.24443 -0.4481,1.75177 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34438 l -0.4481,-0.0815 0.1629,-0.57034 z m -6.1515,0.0407 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.57035 0.041,-0.16295 z m -28.558,0.0815 -0.2037,1.62955 -0.8147,0.24443 0.2444,-0.89625 c 0.4491,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2851,-0.0815 0.1222,-0.36665 z m 21.8768,0.0407 0.1629,0.0407 0,0.24444 -0.4074,0 0.2445,-0.28518 z m -9.5329,0.0407 0.2037,0 0.1629,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9664,0.24444 0.4889,0.12221 -0.082,0.24444 -0.5296,0.93699 -0.163,-0.24443 -0.2037,-0.0815 -0.5296,0.28517 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.1629,-0.24443 -0.2037,-0.0407 -0.2444,0.12221 0.2036,-1.62955 0.6111,0.16296 0.1222,-0.40739 c 0.7391,0.19754 1.1561,0.0741 1.263,-0.32591 z m 2.8517,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.6405,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0407 0.1223,-0.44813 z m -9.2885,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.7252,0.0815 c 0,0.20653 -0.1299,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.8555,-0.20369 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.5481,0 0.4074,0 0.082,0.12221 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.24443 0.1223,-0.44813 c 0.1892,0.0506 0.3495,-0.044 0.4888,-0.24443 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59857 -0.6518,0.7333 l -0.1223,-0.0407 0.4482,-0.77404 z m 4.4405,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1223,0.44813 -0.4073,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57035 0,-0.57035 z m -11.9773,0.16296 -0.082,0.36665 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.3259,0.36665 c -0.3477,0.17232 -0.5887,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44387 -0.02,-0.72709 -0.4074,-0.81478 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24443 z m -14.4216,0.20369 0.1223,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1223,0 l 0,-0.0407 z m -13.729,0.24443 0.4482,0.0815 -0.082,0.2037 -0.4074,-0.12222 0.041,-0.16296 z m 20.1658,0 0.1629,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24444 0.2036,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.326,0.0407 -0.1474,0.0926 -0.2951,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21898 0.774,0.44813 l -0.4888,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.122,0.22481 0.1522,0.50258 0.041,0.85552 l 0.6518,0.16295 -0.3667,1.09995 -0.6111,-0.12222 0,2.11842 -1.3443,1.14069 0.2037,0.32591 -1.7518,2.4036 0.4481,-0.12222 0.2444,0.0815 -0.1222,0.40739 -0.2851,-0.0407 -0.2852,-0.32591 -0.2852,-0.0407 -0.1222,0.48886 -0.2852,-0.0815 2.4851,-7.78113 0.2444,-0.0407 -0.2851,0.97774 0.6518,0.12221 0.4074,-1.30364 -0.4482,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2851,0 0.041,-0.12222 0.2851,-0.0407 0.082,-0.20369 -0.2444,-0.0815 0.163,-0.57034 -0.2037,-0.28518 0.082,-0.20369 0.2851,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12222 -0.163,-0.16296 z m 7.8626,0 0.041,0.16296 -0.2852,-0.0815 0.2444,-0.0815 z m -20.0436,0.12222 0.4482,0.77404 -0.3259,0.16295 -0.163,-0.0407 0.041,-0.89625 z m -0.6925,0.0407 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44812 z m 19.8806,0.16295 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2851,-0.12222 z m -1.3852,0.12222 0.082,0.12221 0,0.28518 -0.4481,-0.12222 0.163,0 0.2037,-0.28517 z m 3.8702,0.12221 0.2445,0.0815 0,0.28517 0,0.65183 0,0.12221 -0.326,0.12222 -0.4073,-0.0815 0.2851,-1.14069 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.3803,0.12222 0.3667,0.48887 -0.4889,-0.12222 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12222 -0.041,0.20369 -0.7741,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16295 z m 6.4367,0 -0.041,0.20369 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12221 z m -27.1728,0.24443 0,0.20369 -0.4074,0.2037 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.1369,0 0.3666,0.0815 -0.2444,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6068,0.0815 0.2037,0.0407 -0.3666,1.34438 c -0.019,-0.29822 -0.091,-0.48679 -0.2445,-0.57034 l 0.041,-0.32592 0.3667,-0.48886 z m 10.307,0.0815 0.2444,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.163,-0.48886 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24444 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28517 -0.041,-0.0407 0.082,-0.24444 z m 1.3851,0.0407 0.2444,0.28518 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4074,-0.36665 l 0.163,-0.2037 z m -7.6996,0.2037 0.2851,0.0407 -0.1629,0.48886 -0.2445,-0.0815 0.1223,-0.44813 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6518,0.81478 0.3666,0.0815 -0.4481,0.12221 -0.082,0.24444 0.2852,0.32591 -0.041,0.20369 -0.5704,0.61109 0.082,0.97773 -0.8555,1.42586 0.2852,0.28517 -0.6111,-0.12222 0.4481,-1.54807 -1.5073,0.85551 0.2851,0.28518 -1.0184,0.44812 c -0.1112,-0.21926 -0.218,-0.41748 -0.3259,-0.65182 0,-0.0107 0.01,-0.03 0,-0.0407 l 0.1222,-0.77404 0.2851,0.0815 0.6926,0.44813 c -0.2006,-0.67951 -0.5592,-1.09062 -1.1407,-1.22217 l 0.2037,-0.69256 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 -0.082,-0.0407 c 0.068,-0.22572 0.108,-0.44975 0.163,-0.65182 l 0.1629,-0.12221 0.041,-0.2037 -0.041,-0.12221 c 0.059,-0.23984 0.045,-0.41042 0.082,-0.61109 0.2166,-0.0412 0.4501,-0.15496 0.6926,-0.36665 -0.087,0.52224 -0.036,0.8328 0.2444,0.89626 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.11243 -0.3751,0.24349 -0.5296,0.36665 l -0.041,0.24443 0.4074,0.12222 -0.3259,1.67029 0.5703,0.12222 0.1222,-0.40739 0.4482,-0.20369 -0.2852,-0.28518 -0.2852,-0.0815 0.082,-0.2037 1.5074,0.12222 0.2037,-0.69256 -0.5296,-0.12222 0.1222,-0.40739 0.5703,0.12222 0.3667,-1.14069 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54808 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.163,0.24444 0.2037,0.0815 0.3259,-0.12221 -0.041,0.16295 c -0.3962,0.0368 -0.7257,0.11789 -0.9778,0.2037 l -0.041,0 -0.1629,-0.0407 0.2852,-0.44813 0.2444,-0.0815 z m -12.018,0.0815 0.6111,0.12222 -0.1222,0.40739 -0.4889,-0.52961 z m 3.9517,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.3667,0.12222 0.041,-0.40739 0.1223,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4074,0.12222 -0.082,0.44813 -0.4074,-0.24444 0.082,-0.32591 z m -26.358,0.0407 0.4074,0.12222 -0.082,0.20369 -0.4074,-0.12221 0.082,-0.2037 z m 1.6703,0 0.2037,0.24443 -0.041,0.2037 -0.3259,-0.32591 0.1629,-0.12222 z m 18.1695,0.0407 c 0.1619,0.0875 0.2758,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.2037 l -0.5296,0 c 0.031,-0.17322 0.06,-0.33608 0.082,-0.48887 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24444 -0.2852,-0.0815 0.041,-0.61108 0.3667,-0.12222 z m -3.2998,0.0815 0.2444,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.163,-0.48886 z m 10.7143,0.0407 0.7333,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1222,0.28518 -0.082,0 -0.2037,-0.28518 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81477 z m 20.0028,0 c -0.1782,0.66667 0.096,1.38754 0.6925,2.11842 l 0.2445,-0.12222 0.1629,0.24443 -0.041,0.16296 c -0.2463,-0.0658 -0.4957,0.0124 -0.6925,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1223,-0.0407 l -0.3666,0.12221 c 0.1402,-0.44386 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.2037 c 0.2165,-0.51357 0.4453,-0.70986 0.8148,-0.61108 l 0.1222,-0.40739 -0.6111,-0.16295 0.8556,-0.65182 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44813 -0.2852,-0.57035 0.082,-0.36665 z m -17.9659,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2445,-0.32591 0.082,-0.16296 z m -14.2586,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.766,0 0.7333,0 -0.082,0.2037 -0.6926,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6768,0 0.2037,0.0407 -0.2037,0.81478 -0.2037,-0.0407 0.2037,-0.81478 z m -28.4357,0.16295 0.5703,0.12222 -0.2444,0.69256 -0.3666,-0.61108 0.041,-0.2037 z m 2.1592,0.0407 -0.082,1.14069 0.611,0.16296 0.082,-1.18143 -0.611,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40739 z m -13.4438,0.0407 0.1222,0 0.2852,0.7333 -0.1222,0.16295 -0.163,0 -0.2037,-0.61108 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48887 -0.3259,0 0,-0.48887 z m 4.0332,0 0.2444,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12222 z m -25.7063,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.1724,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28518 z m -10.918,0.24444 c 0.2732,-0.0456 0.6794,-0.0134 1.1814,0.0407 l -0.1222,0.40738 c -0.3876,-0.0877 -0.7501,0.1822 -0.937,0.77404 l -0.5704,-0.89625 c 0.053,-0.16645 0.175,-0.28029 0.4482,-0.32591 z m 14.0956,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.7741,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.1548,0.0407 0.4889,0.12222 -0.2852,1.01847 -0.3666,-0.48886 0.1629,-0.65183 z m -17.9658,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12222 z m 10.8365,0 0.2037,0.0407 -0.041,0.12222 -0.2444,0.12221 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.5737,0.12222 -0.1223,0.0815 -0.082,0.16295 0.2037,0.24444 0,-0.48887 z m -13.8105,0.0815 0.4074,0.0815 -0.3259,0.44813 -0.326,-0.0815 -0.041,-0.16295 0.2852,-0.28517 z m -10.4292,0.0407 0.1222,0.0815 0,0.24444 -0.1629,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28517 z m 13.8512,0.0407 0.6111,0.52961 0.041,0.0407 -0.1222,0.61108 c -0.1738,-0.13018 -0.3351,-0.28385 -0.4889,-0.36665 -0.043,-0.24559 -0.071,-0.51516 -0.041,-0.81478 z m -8.5551,0.0407 0.3666,0 0,0.24444 -0.3666,0 0,-0.24444 z m -16.4585,0.0815 0.1629,0.0407 -0.1222,0.40739 -0.2852,-0.0815 0.082,-0.28517 0.163,-0.0815 z m 4.1961,0.2037 0.5296,0.12221 0,1.18143 c -0.3391,-0.0767 -0.521,-0.50905 -0.5296,-1.30364 z m 1.7925,0.16295 -0.2444,0.69256 0.6518,0.16296 0.2037,-0.69256 -0.6111,-0.16296 z m 3.0147,0.24443 c 0.5369,0.1214 0.591,1.23746 0.1629,3.29985 -0.149,0.24871 -0.3559,0.70204 -0.5703,1.14069 l -0.5704,-0.12222 -0.5296,-1.34438 c 0.3877,0.0877 0.5932,-0.0857 0.7333,-0.5296 l 0.082,-1.18143 0.2037,0.24443 0.6518,0.16296 -0.1629,-1.6703 z m 9.6958,0.0407 0.1222,0.12222 -0.2444,0.28517 -0.1222,0.44813 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44813 0.082,-0.12221 0.2444,0.24443 0.3667,-0.44813 z m 5.3775,0 c 1e-4,0.30601 -0.1563,0.44816 -0.5703,0.44813 l 0,0.2037 0.4074,0 -0.3667,0.65182 -0.4073,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.4073,-0.77404 c 0.1596,-0.009 0.3126,-0.0407 0.4889,-0.0407 z m -13.4438,0.0407 0.2852,0.0407 -0.4481,1.26291 -0.082,0.32591 c 0.1979,0.0814 0.3666,0.16669 0.5296,0.24443 l -0.2445,0.44813 -0.1222,-0.2037 -0.3259,0.16296 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.2725 0.2037,-0.48887 l -0.2037,0 0.1629,-0.48886 0.041,0.0407 0.2852,0 0.163,-1.30365 z m -8.1885,0.0815 0.5704,0.12222 -0.163,0.40739 -0.4074,-0.52961 z m 13.1587,0.0815 0.082,0.0815 -0.163,-0.0407 0.082,-0.0407 z m 4.359,0 0.3259,0 c -0.047,0.25427 -0.075,0.44865 -0.082,0.65182 l -0.611,0 0.082,-0.57034 0.2851,-0.0815 z m -3.1369,0.0815 0.082,0.48886 c -0.2042,-0.10677 -0.3488,-0.23499 -0.4481,-0.40739 l 0.3666,-0.0815 z m -1.7517,0.0815 -0.1223,0.48887 -0.1629,0 0,-0.40739 0.2852,-0.0815 z m 18.0065,0.0407 0.2037,0.0407 -0.1629,0.65182 -0.2037,-0.0815 0.1629,-0.61108 z m 0.6519,0 0.4888,0.12222 -0.4074,1.4666 -0.1629,-0.0407 c -0.083,-0.0189 -0.171,0.0209 -0.2445,0.0407 l 0,-0.36665 0.326,-1.22217 z m -21.225,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.5036,0.12222 c 0.081,0.0361 0.1343,0.0796 0.2036,0.12221 l -0.2444,0.0407 0.041,-0.16295 z m -12.181,0.0815 0.2852,0.0407 -0.2852,0.89626 -0.2851,-0.0407 0.2851,-0.89625 z m 1.7925,0.16295 -0.1222,0.44813 0.6111,0.12221 -0.4889,-0.57034 z m 19.5954,0 c 0.045,0.041 0.1551,0.11945 0.2037,0.16296 l -0.082,0.5296 -0.8962,2.85172 -0.5704,0.81478 0.3667,1.05921 -0.6518,-0.16296 -0.3667,2.07769 -0.5296,-0.12222 0,-0.97773 0.3259,-0.12222 0.082,-0.20369 0.163,-1.4666 0.4888,-0.57035 -0.1222,-0.12221 c 0.028,-0.0546 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.12221 -0.4074,-0.57035 0.3667,-0.12222 0.2444,0.0407 0.082,-1.14068 0.3666,-1.14069 0.5296,0.12221 0.163,-0.61108 z m 1.2629,0.0815 0.1223,0.16295 -0.163,-0.0407 0.041,-0.12221 z m 1.8333,0.12221 0.082,1.62956 0.4889,0.12222 0.2036,-0.2037 -0.2444,0.81478 c -0.1147,-0.18977 -0.1569,-0.28133 -0.2852,-0.48887 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4073,-0.65182 0.4481,-1.26291 z m 0.5296,0 0.3666,0.0815 0,0.0815 -0.2444,0.36665 -0.2444,-0.0815 0.1222,-0.44813 z m 3.7887,0.16296 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40739 z m 1.7925,0.24443 0.2037,0.0815 0,1.05921 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.1629,0.12222 l -0.3667,-0.0815 0.3259,-1.22217 z m -32.1022,0.0407 0.2444,0.0815 -0.9777,3.09615 -0.2444,-0.0407 0.9777,-3.1369 z m 29.5764,0.16296 0.082,0.0407 -0.1629,0.61108 -0.2037,-0.0407 0.1222,-0.44813 0.1629,-0.16295 z m -14.0142,0.16295 0.2037,0 0,0.48887 -0.2037,0 0,-0.48887 z m 11.6921,0.0815 0.2037,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12222 z m -24.2804,0.0815 -0.1629,0.44813 0.6111,0.16295 0.1629,-0.48886 -0.6111,-0.12222 z m 27.1321,0.0407 0.2037,0.0407 0.041,0.69256 -0.4074,-0.12222 0.163,-0.61108 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65182 -0.2445,-0.0815 0.163,-0.61108 z m 31.5726,0.20369 0.4074,0.12222 -0.082,1.05921 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14069 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5546,0.24443 0.041,0 0,0.44813 -0.2037,0 0.1629,-0.44813 z m -5.5405,0.0407 0.6925,0.16296 -0.5703,1.18143 -0.3259,0.44812 -0.082,0 0.2037,-0.61108 0,-1.05921 c 0.035,-0.0284 0.048,-0.0737 0.082,-0.12222 z m 5.9479,0.2037 0.4073,0 0,0.48886 0.2445,0 0.041,-0.0407 -0.041,0.28518 -0.3259,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.3667,-0.0815 -0.1629,0.0407 c 0.1408,-0.12156 0.2037,-0.25688 0.2037,-0.44812 z m 13.8919,0 0.2444,0.0407 0.1223,0.7333 -0.082,0.24443 -0.4074,-0.61108 0.1222,-0.40739 z m -11.8143,0.20369 0.082,0 -0.2037,0.89626 -0.082,0.0407 -0.2036,-0.2037 c -0.1036,0 -0.1645,0.009 -0.2445,0.0407 l 0.2037,-0.65182 0.4481,-0.12222 z m 0.7741,0 0.4888,0 0.163,0.0407 -0.2444,0.77404 -0.5296,0.32591 -0.2445,0 0.082,-0.20369 0.163,0 0,-0.2037 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36665 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.12222 0.041,-0.0815 z m -22.5286,0.16296 0.6518,0.16295 -0.4888,0.61109 -0.3667,-0.0815 0.2037,-0.69256 z m 14.9512,0.12221 0.2037,0 0.3666,0.0815 -0.4074,0.2037 -0.041,0.20369 0.041,0.12222 -0.1629,0.0407 -0.2037,0 0.2037,-0.65183 z m 20.0028,0.0407 0.2036,0.0407 -0.041,0.2037 -0.2036,-0.0407 0.041,-0.2037 z m -18.8214,0.16296 0.2444,0.0407 -0.041,0.20369 -0.2852,0.0407 0.082,-0.28517 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2445,-0.0815 0,-0.0407 z m 6.1516,0.20369 0.6518,0.12222 0.2852,0.85552 c 0.027,0.31399 0.036,0.61618 -0.041,0.93699 l -0.2037,-0.0815 0.1629,-0.44813 -0.5703,-0.12221 -0.041,0.20369 0.3259,0.81478 -0.3259,0.12222 c -0.1051,0.33293 -0.023,0.60721 0.2852,0.77403 -0.04,0.10991 -0.074,0.22001 -0.1223,0.32591 l -0.2444,0.0815 0.1222,-0.40739 -0.5703,-0.12221 -0.2445,1.75177 c -0.1707,0.17432 -0.3679,0.37121 -0.5703,0.5296 l 0.2037,-0.28517 c 0.09,-0.61375 -0.1266,-0.99034 -0.6111,-1.09995 l 0.1222,-0.40739 0.6111,0.12222 0.1222,-0.28517 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18143 0.5297,-1.79251 z m -27.3765,0.0407 0.8147,0.40739 -0.3259,1.09995 -0.2852,-0.0815 -0.3259,-1.01847 0.1223,-0.40739 z m 2.485,0.0407 0.5704,0.12222 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.20369 z m 32.0208,0.12222 0.2851,0.0407 -0.2036,0.69256 -0.2852,-0.0407 0.2037,-0.69256 z m -23.3027,0.0407 0.2037,0 0,0.20369 -0.2444,-0.0407 0.041,-0.16295 z m 10.144,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8143,0.28517 -0.3667,1.34438 -0.041,0 0.4074,-1.34438 z m -11.4884,0.0815 0.2445,0.0815 -0.082,0.2037 -0.2852,0.12221 0.1222,-0.40738 z m 10.307,0 0.041,0 c 0.027,0.19875 0.01,0.41806 -0.041,0.65182 l -0.163,-0.0407 0.163,-0.61108 z m 1.5888,0 0.1222,0.0407 0,0.2037 -0.163,-0.0407 0.041,-0.20369 z m -16.3363,0.12221 0.163,0 -0.4482,0.44813 -0.2037,0 0.4889,-0.44813 z m 3.1369,0 0.2852,0 -0.082,0.44813 -0.326,0 0.1223,-0.44813 z m -22.4471,0.2037 0.082,0.12221 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.20369 z m 20.1657,0 0.5296,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12221 0.082,-0.28517 z m -18.9028,0.0815 0.2037,0.0407 0,0.24444 c -0.066,-0.0966 -0.1384,-0.18401 -0.2037,-0.28518 z m 10.7143,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.163,-0.20369 0.3259,-0.28517 z m 19.7176,0 0.2037,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.1554,0.0407 0.6111,0.12221 -0.082,0.24444 -0.6111,-0.16296 0.082,-0.20369 z m 7.9441,0 0.163,0.0407 -0.2852,0.97773 -0.1222,-0.0407 0.2444,-0.97773 z m -29.4542,0.0815 1.2222,0.0815 -0.2037,0.61109 -1.2629,0 0.2444,-0.69257 z m 10.918,0.0407 0.6519,0 0,0.2037 -0.1223,0 -0.611,-0.16296 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.2994,0.0815 0.2852,0.40739 -0.2852,0.44813 -0.2445,-0.0407 0.2445,-0.81478 z m 1.1407,0.32591 0.1222,0.61109 -0.2852,-0.0815 0.163,-0.52961 z m 4.1553,0.0407 0.1223,0 c -0.064,0.20396 -0.057,0.39209 0,0.52961 l -0.041,0 -0.1223,0.40739 0.041,0.89625 -0.4074,0.48887 -0.2036,-0.0407 0.3259,-1.18143 -0.4482,-0.12222 0.2445,-0.81477 0.4074,0.12221 0.082,-0.28517 z m -17.2325,0.0407 0.3666,0 0,0.28517 -0.2444,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.774,0 0.4074,0 -0.1629,0.57034 -0.2445,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.037,0 0.4074,0 -0.1223,0.69256 c -0.1459,0.15267 -0.3487,0.24965 -0.5703,0.32591 l -0.6111,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.4141,0 0.5704,-0.19281 0.5704,-0.65182 z m -22.4471,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7702,0.0407 0.8148,0.20369 -0.082,0.2037 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40739 z m 21.4286,0 0.2852,0.16295 -0.082,0.2037 -0.2851,-0.0407 0.082,-0.32591 z m -2.3221,0.0815 0.2852,0.0815 -0.2852,0 0,-0.0815 z m -14.2993,0.36665 0.4889,0.5296 -0.2037,0.65182 -0.041,0 -0.2445,-0.32591 -0.5296,-0.12221 c -0.048,0.151 -0.1391,0.27939 -0.2444,0.36664 l -0.8555,-0.24443 c -0.047,-0.23181 -0.2222,-0.40088 -0.6111,-0.48886 l 0.041,-0.2037 0.5703,0.12222 0.2037,0.24443 c 0.1053,-0.3329 0.569,-0.44605 1.4259,-0.5296 z m 3.1776,0.32591 0.3667,0.44812 -0.6518,-0.12221 0.2851,-0.32591 z m 21.6731,0 0.1222,0.20369 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.3444,0.12221 0.2037,0.36665 -0.041,0.2037 -0.2444,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.2037 z m -25.9099,0.40739 0.2444,0.0407 -0.1222,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5073,0.0815 0.2037,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.1022,-0.11766 -0.163,-0.16295 z m -3.911,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.4889,0.61109 0,-0.48887 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12221 0.1559,0.20013 0.3052,0.42706 0.4889,0.65182 l -0.3259,0.44813 -0.1222,-0.12222 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28517 0.041,0.61108 c -0.1698,-0.1506 -0.3285,-0.32459 -0.4889,-0.48887 l 0.082,-0.20369 -0.3667,-0.0815 c -0.1551,-0.17217 -0.3025,-0.34479 -0.4481,-0.5296 l 0.6518,0.12221 0.163,-0.48886 z m 11.7328,0.24443 0.4481,0 0,0.48887 -0.4481,0 0,-0.48887 z m 11.6921,0 0.1629,0 0,0.12222 -0.1629,-0.12222 z m -4.4406,0.0407 0.163,0.28517 -0.041,0.16296 -0.9777,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.1794,-0.0411 0.3596,-0.1964 0.4888,-0.40739 l 0.3667,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.157,0.22678 0.163,0.36665 l -0.6926,0 0.163,-0.28518 0.3666,-0.0815 z m 17.1104,0.0407 0.1629,0.0407 -0.041,0.16296 -0.1629,-0.0815 0.041,-0.12221 z m -21.1435,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.15471 0.2444,0.28518 l -0.3666,0 0,-0.28518 z m 11.692,0.44813 0.5297,0.12222 -0.082,0.24443 -0.5297,-0.12221 0.082,-0.24444 z m -13.0364,0.0815 0.163,0.12222 -0.082,0.20369 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2444,0.0407 0.1222,0.0815 0.163,0 -0.082,0.24444 -0.3667,0.20369 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.20369 -0.1222,-0.28517 0,-0.0815 z m 25.421,0.0407 0.1223,0.44812 -0.1223,0.28518 0,-0.7333 z m -16.1733,0.16295 -0.041,0.2037 -0.041,0.48886 -0.937,-0.12221 -0.082,-0.0815 0.7741,-0.36665 -0.3667,-0.0815 0.6926,-0.0407 z m -3.5035,0.0407 -0.041,0.12222 -0.2852,-0.0815 0.3259,-0.0407 z m 4.7664,0 0.4481,0.0815 0,0.0407 0,0.20369 c -0.1904,-2e-5 -0.2989,0.0479 -0.4074,0.12222 l -0.041,-0.44813 z m -2.5665,0.0407 -0.1223,0.44813 -0.611,-0.0815 -0.2445,-0.24443 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.24443 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2852,0 0.7333,-0.0407 z m 3.7887,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.163,0.24443 0.2851,0 0.163,-0.12221 0.2852,0.28517 -0.326,0.36665 c -0.7618,0.018 -1.1993,0.12476 -1.2629,0.32591 l -0.082,0.20369 0.2852,0.0815 0.5296,0 -0.2444,0.28517 c -0.3068,2e-5 -0.7246,-0.15749 -1.1814,-0.36665 l 0.1222,-0.32591 -0.3667,-0.0815 -0.3259,0.16296 c -0.3253,-0.18391 -0.6735,-0.42525 -1.0592,-0.69256 0.53,0.11988 0.9408,0.021 1.2222,-0.28517 0.452,0.0971 0.8964,0.16295 1.3851,0.16295 l 0.082,0 0.1629,0.0407 0.041,-0.16295 0.1223,-0.12222 z m 1.9147,0.0815 c 0.012,0.27818 0.1751,0.47168 0.6111,0.57034 l -0.041,0.12222 -0.1629,0.0815 c -0.4017,-0.0334 -0.7787,-0.0703 -1.1,-0.0815 0.1875,-0.17418 0.4654,-0.46552 0.6926,-0.69256 z m 25.1766,0 0.1223,0.0407 -0.2445,1.01847 -0.1222,-0.0407 0.2444,-1.01847 z m -10.9587,0.0815 0.2444,0.0815 -0.082,0.28517 -0.1629,0 0,-0.36665 z m -20.8176,0.12222 c 0.2965,0.34462 0.6324,0.71226 0.9778,1.09995 l -0.7333,-0.16296 c -0.294,-0.25079 -0.5828,-0.52525 -0.8556,-0.81477 l 0.6111,-0.12222 z m -1.0592,0.24443 0.4481,0.7333 -0.3259,0 c -0.2313,-0.13531 -0.4738,-0.24993 -0.6925,-0.40739 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.4481,-0.0815 z m 23.2212,0.16296 0.5703,0.12222 0,1.18142 -0.4481,0.12222 -0.5296,-0.12222 0.4074,-1.30364 z m 11.2846,0.12222 -0.2037,0.40738 0.082,-0.32591 0.1223,-0.0815 z m -16.2955,0.12221 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.6769,0.12222 c 0.029,0.006 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.3666,0 0.2037,-0.0815 z m 29.1691,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1195,-0.0874 0.2148,-0.19178 0.3259,-0.28517 z m 3.8294,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2037,0.0815 c -0.072,0.0648 -0.1697,0.10082 -0.2445,0.16296 -0.1919,0.15941 -0.368,0.33853 -0.5703,0.48887 -0.078,-0.0803 -0.1398,-0.20169 -0.2037,-0.32591 0.1573,-0.0786 0.2843,-0.16146 0.4481,-0.24444 l 0.3259,0.0815 0.041,-0.20369 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.20369 -1.0999,0.52961 -0.163,0 0,-0.2037 c 0.1087,2e-5 0.2966,-0.11103 0.5296,-0.28517 l 0.7333,-0.0407 z m -4.9294,0.12222 c 0.1297,0.14533 0.2302,0.25609 0.3667,0.40739 l 0,0.20369 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.163,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2444,-0.16296 l 0.1629,-0.0407 0.041,-0.16295 z m 10.0218,0.0815 0.3666,0.24443 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.32591 z m -2.037,0.32591 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 6.6405,0 0.4073,0 0,0.0815 -0.2444,0.12222 -0.1629,0 0,-0.20369 z m -3.0962,0.12221 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8257,0 0.2444,0.0407 0.2444,0.28517 0.081,0 0,0.40739 c -0.3615,0.0312 -0.758,0.0611 -1.1407,0.0815 l 0.3259,-0.48887 c 0.079,-0.004 0.1558,0 0.2445,0 l 0,-0.32591 z m -6.4775,0.32591 0.6518,0 0,0.48887 -1.0185,0 0.3667,-0.48887 z m 8.1885,0.0407 0.2852,0.0815 -0.041,0.12222 c -0.1063,0.0146 -0.2176,0.0272 -0.3259,0.0407 l 0.082,-0.24444 z m 9.4107,0.0407 c -0.02,0.28762 -0.042,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40739 -0.3259,-0.44813 0.5703,-0.81478 z m -12.0587,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2445,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2445,-0.24443 z m -8.6367,0.16296 0.6518,0 0,0.20369 -0.6518,0.20369 0,-0.40738 z m 1.0185,0 0.4889,0 0,0.20369 -0.4889,0 0,-0.20369 z m 3.585,0 0.3667,0 -0.3667,0.40738 -0.4888,0 0.4888,-0.40738 z m -15.1548,0.20369 0.041,0 0,0.20369 -0.4482,0 0,-0.0407 0.4074,-0.16296 z m 3.3405,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.9702,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.9109,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.0473,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.1629,0.48886 -0.5296,-0.12221 0.041,-0.0815 c 0.1755,-0.0707 0.4149,-0.20083 0.6111,-0.28517 z m 5.2961,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24443 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0578 -0.082,-0.0815 l 0.2445,-0.12221 z m -32.6318,0.28517 0.6518,0 0,0.24443 -0.6518,0 0,-0.24443 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.24443 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.6111,0 1.0184,0.28517 1.2222,-0.28517 1.3036,0 0,0.48887 -5.1738,0 0,-0.2037 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4481,0.48887 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.48887 z m 5.459,0 0.5703,0 0,0.28517 -0.5703,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.16296 0.041,-0.0407 z m -30.5134,0.28517 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.22999998;fill:#8ae234;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <path
+       id="path3642"
+       d="m -472.47391,201.66985 -2.5665,0.48887 0,1.34438 0.5703,-0.61108 0.6519,0 0,0.20369 -1.2222,0.40739 0,2.07769 0.2037,0 -0.2037,0.28517 0,0.85551 c -0.1242,0.11339 -0.1889,0.18925 -0.2852,0.28518 l 0,0.48886 c 0.096,-0.0462 0.1848,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.108,0.10817 0.163,0.16295 l 0,0.16296 -0.2445,-0.0815 c -0.024,-0.006 -0.057,-0.001 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61108 -0.4074,0.0815 0,3.8702 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85551 c -0.09,0.26172 -0.1903,0.5021 -0.2852,0.69256 l 0,0.97774 0.2444,0.0815 -0.041,0.16295 -0.2037,-0.0815 0,11.12171 0.163,-1.18142 0.1222,0.0407 0,1.01848 0.2037,0 0.4889,0.5296 c -0.1,0.0821 -0.1897,0.19341 -0.2445,0.36665 l -0.2036,-0.24443 -0.082,0 -0.163,-0.65182 0,0.57034 -0.041,0 -0.2444,0.12222 0,0.89625 0.2851,-0.12221 0,0.32591 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.3667,-0.12222 0,0.24443 -0.3667,0 0,0.85552 -0.2851,0.0815 0,0.20369 0.2851,-0.0815 0,0.0815 c 0.4141,4e-5 0.5704,-0.14215 0.5704,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1222,0.0815 -0.082,0.24443 0.1222,0 0,0.0815 0.2037,0.24443 0,0.28517 -1.0185,0 0,0.24444 3.3813,0 c 0.2347,-0.63833 0.527,-0.97774 0.937,-0.97774 l 0,-0.40739 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.2445,-0.32591 0.082,-0.24444 -0.2444,0.0815 -0.6518,0 -0.3259,0.12222 0,-0.0407 -0.3667,-0.0815 -0.2852,0.2037 -0.4481,-0.2037 0,-0.24443 1.0592,0 0,-0.2037 -0.2037,-0.20369 0,-0.24443 0.4889,0.16295 -0.082,0.2037 0.5703,0.12221 0.2852,-0.0407 0.6111,0.2037 -0.082,0.24443 0.2852,0.0815 0.5703,-0.0407 0.6518,0.24443 0,0.2037 c -0.3219,6e-5 -0.8163,0.38652 -1.3851,1.18143 l 18.5769,0 c 0.082,-0.0802 0.1634,-0.16304 0.2445,-0.24444 0.212,0.0756 0.504,0.16494 0.7333,0.24444 l 1.4666,0 -0.2445,-0.40739 1.1407,0.0815 0.2037,0.0815 -0.041,0.16296 -0.5296,0.0815 0.7333,0 7.8626,0 0.041,-0.16296 c 0.061,0.0307 0.1356,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3036,0 0.3667,-0.24444 -0.041,0.24444 2.5665,0 0.082,-0.24444 0.2445,0.0407 -0.082,0.2037 0.4481,0 0,-1.34439 -0.082,0.24444 -0.2444,-0.0407 0.1222,-0.40739 0.2037,0.0815 0,-9.04403 -0.1222,-0.0407 0.1222,-0.57034 0,-1.71104 -0.2852,0.0815 -0.041,0.20369 0.2037,0.32592 -0.6111,1.09995 -0.2037,-0.0407 0.937,-3.50355 0,-1.58881 -0.2852,0.12221 -0.041,1.05922 -0.6518,2.36285 -0.5703,0.28517 1.1814,-4.3998 0.3667,0.57035 0,-1.34438 -0.163,-0.0407 0.163,-0.57035 0,-1.83325 c -0.2598,-0.39208 -0.5239,-0.78277 -0.8148,-1.14068 l 0.8148,0.0407 0,-1.22216 -0.2037,0.85551 -0.2445,-0.0815 0.3259,-1.18143 0.1223,0.0407 0,-3.54428 -0.082,0.28517 -0.4482,-0.12222 0.5296,-2.03694 0,-7.98482 -0.041,0.12222 -0.8147,0 -0.6519,-0.36665 -0.8147,0 0.041,-0.2037 -0.326,-0.5296 0.082,-0.28517 0.2037,0.0407 0.8556,0.77403 0.2851,-0.16295 0.082,-0.28517 c -0.3162,-0.38756 -1.7549,-1.08882 -4.3183,-2.07769 l -1.0999,0 2.811,1.18143 -0.1223,0.40739 0.2852,-0.16296 0.6926,0.2037 -0.4889,0.81478 -0.2037,-0.0407 -0.1629,-0.28517 -0.2445,-0.0407 -0.3666,0.12221 0.1222,-0.40739 0.3666,-0.16295 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.2852,0.20369 -0.2444,-0.0407 -0.6926,-0.48887 -0.5703,0.36665 -1.5481,-1.26291 -1.8333,0 -0.082,0.32592 -0.2444,-0.0407 0.082,-0.28518 -3.2998,0 1.0184,1.54808 0.2037,0.0407 -0.1629,0.69256 -0.4482,-0.12222 -0.082,0.2037 c 0.3277,0.0876 0.5625,0.55849 0.6926,1.38512 l -0.1629,0.69256 -0.2445,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89625 -0.4889,-0.12222 -0.2036,0.937 0.4481,0.12221 -0.1222,0.40739 -0.4482,-0.12221 -0.1222,0.40738 0.4481,0.12222 -0.1629,0.69256 c -0.4097,-0.10952 -0.6971,0.12321 -0.937,0.69256 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28518 -0.2037,0.28518 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28518 l 0.2037,0 0,-0.20369 -0.163,-0.16296 c 0.014,-0.071 0.021,-0.12963 0.041,-0.20369 l 0.5296,0.16296 0.163,-0.65183 -0.4074,-0.61108 0.937,-1.38512 -0.2037,-0.0407 0.2852,-0.16296 0.082,-0.28517 -0.2037,-1.4666 0.6518,-0.24443 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06752 -0.199,-1.68478 -1.0592,-1.91473 l 0.2851,-0.16295 0.082,-0.24444 -1.5888,0 0,0.0815 0.6926,0.16296 -0.937,0.7333 c 0.085,-0.31635 0.049,-0.64018 -0.041,-0.97774 l -1.5888,0 -0.2037,0.69257 -0.2445,-0.0407 0.163,-0.65183 -0.937,0 0.2444,0.48887 -0.082,0.44813 -0.3666,-0.57035 0.082,-0.36665 -0.4481,0 -0.8555,3.09616 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18143 0.3666,-1.42586 -0.4888,0 -0.6111,2.36286 -0.2444,0 0.611,-2.36286 -2.6072,0 -0.041,0.16296 0.4481,0.12222 -0.2852,1.05921 c -0.9988,-0.37944 -1.8221,-0.65179 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62501 -0.7741,0.77403 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.20369 l -0.041,-0.2037 0.5704,-0.0815 0,-0.28517 c 0,-0.2009 -0.2546,-0.36699 -0.774,-0.48887 l -0.041,-0.2037 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24444 c -0.2787,-0.13728 -0.624,-0.21604 -1.0185,-0.28518 l -1.711,0 0,0.16296 -0.2444,0.0815 -0.081,-0.24444 -0.5296,0 0.041,0.12222 -0.163,0.16296 -0.082,-0.28518 -2.7295,0 -0.2037,0.97774 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48887 l -2.4036,0 z m 36.2576,12.83275 0,-0.937 -0.041,0.0407 -0.1629,0.61108 0.2037,0.28518 z m -34.3428,-12.75127 -0.2852,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12222 z m 13.4845,0.0407 0.4482,0.12222 -0.041,0.24443 -0.4482,-0.12222 0.041,-0.24443 z m -16.2955,0.36665 0,0.48887 -0.4481,0 0.4481,-0.48887 z m 7.8218,0 0.082,0.0407 0.2037,0.89625 c -0.2224,-0.0204 -0.4372,-0.0455 -0.611,-0.0815 l 0.2036,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4482,0 0,0.28517 -0.4482,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.9739,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.163,0 c 0.038,-0.0691 0.088,-0.17949 0.1222,-0.24443 z m 13.0364,0 0.2037,0.0815 -0.163,0.65183 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8143,0.0407 0.4481,0.12221 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48886 z m -5.8257,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6518,-0.65182 1.0999,-2.64803 -0.2444,-0.28517 0.082,-0.2037 0.5703,-1.01847 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.774,3.87019 -0.2852,0.16295 -0.082,1.14069 -0.2037,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0956 0.4481,-0.21289 0.4481,-0.36665 l -0.2851,-0.28517 1.3851,-5.21458 z m -17.7214,0.20369 0.2445,0 0.041,0.16296 -0.082,0.0407 -0.1222,0 -0.082,-0.2037 z m 14.5438,0.12222 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.6291,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0815 0.1222,-0.40739 z m -29.8209,0.0407 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m -2.0777,0.20369 1.0592,0 c -0.029,0.0977 -0.082,0.18869 -0.1222,0.28518 l -0.937,0 0,-0.28518 z m 11.855,0 0,0.52961 -0.4888,0 0.4888,-0.52961 z m 24.3619,0.16296 c -0.074,0.27638 0.1417,0.51307 0.5703,0.65182 l 0,-0.5296 -0.5703,-0.12222 z m -6.0701,0.32591 0.4481,0.12222 -0.3666,1.30364 -0.4482,-0.12222 0,-1.18142 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48886 -0.2037,0 -1.6703,0.24444 c 0.035,-0.18639 0.075,-0.37491 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3667,0 0.6518,0.20369 0,0.28517 -0.8555,0 0.2037,-0.28517 0,-0.20369 z m 1.0184,0 0.041,0 0.2852,0.44812 -0.041,0.0407 -0.2852,0 0,-0.48886 z m 1.8333,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.20369 -0.4481,0.85552 c -0.076,0.61311 0.1199,0.99045 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2444,0.28517 -0.3667,0.12222 0.041,1.18143 -0.4888,1.79251 -0.5296,-0.12222 -0.4074,-1.30364 0.1222,-0.48887 0.2444,0.0407 -0.1222,0.48887 0.4481,0.12221 0.041,-0.20369 -0.2851,-0.81478 0.2851,-0.12222 c 0.1186,-0.44346 -0.079,-0.76488 -0.5703,-0.89625 l 0.6518,-0.28517 -0.1222,0.40739 0.4889,0.12221 0.3666,-3.21837 0.041,-0.20369 z m -20.4917,0.12221 0.2445,0.0407 0.1222,0.48887 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4482,0 -0.4482,0.52961 0,-0.52961 z m 1.3037,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2573,0.20542 -0.343,0.30401 -0.5704,0.48887 l -0.2037,-0.24444 0,-0.28517 z m 1.3036,0 0.3667,0 0.4074,0 0,0.2037 -0.082,-0.0815 -0.4889,0.12221 0,0.24444 -0.082,0.0407 -0.2037,-0.24444 -0.082,0 0.1629,-0.28517 z m 1.1407,0 0.6111,0 -0.041,0.28517 -0.5703,0 0,-0.28517 z m 7.2923,0 0.6518,0 -0.082,0.24443 0.1222,0.44813 -0.2852,0.0407 -0.4073,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24443 -0.2037,0.0407 -0.082,-0.28517 z m 21.1434,0 0.8148,0 0.2445,0.0407 -0.082,0.20369 -1.1,0.16296 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.20369 0.4889,0.12222 0.041,-0.20369 -0.4481,-0.12222 z m 10.144,0.36665 0.4889,0.12222 0.4074,0.57034 -0.6518,0.32591 0.2851,0.0815 -0.6111,1.01847 c -0.3276,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.2037 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.163,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7285,0.0815 0.082,0.28517 -0.2444,0 0,-0.24443 0.1629,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.611,0 0.1629,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16296 0.2445,-0.0815 z m 3.748,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.0592,0 0.8148,0 0,0.24443 -0.8148,0 0,-0.24443 z m 22.3656,0.0407 0.4482,0.12222 0.2851,0.28517 0.081,-0.40739 0.2445,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1629,0.28518 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.774,0.7333 l -0.3667,-0.61108 0.3667,-1.30365 z m -31.0022,0.0407 0.2851,0.2037 -0.2037,0.0815 -0.082,-0.28518 z m -4.7257,0.0815 0.041,0.0815 -0.1223,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12222 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25431 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1129,0.18842 0.163,0.28517 l -0.3667,0 0,0.24444 0.5296,0.0815 c 0.074,0.13781 0.168,0.27232 0.2445,0.40739 l -1.7925,0 0,-0.20369 c 0.5521,1e-4 0.8147,-0.22358 0.8147,-0.52961 l -0.3666,-0.40738 0,-0.48887 z m -9.2885,0.0407 0.1223,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.1629,-0.16295 z m -3.5035,0.0815 0.082,0.44812 -0.4481,0.12222 -0.041,-0.16296 0.3259,-0.0407 0,-0.32592 0.082,-0.0407 z m 1.6296,0.0407 c 0.2851,1.06671 0.7124,1.54315 1.3036,1.38513 l 0.082,0.16295 -0.163,0.24443 -0.2444,-0.12221 c -0.5964,0.73087 -0.8708,1.45177 -0.6926,2.11842 l -0.8555,-0.65182 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12222 z m 23.5878,0.24444 0.4481,0.12221 -0.082,0.24444 -0.4481,-0.12222 0.082,-0.24443 z m -14.9512,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.5514,0.0407 c 0.1566,0.12931 0.3291,0.24634 0.5704,0.36665 l 0,-0.16295 0.082,0.36665 0,0.0815 -0.4482,0.12221 -0.2037,-0.77404 z m 23.2212,0.0407 0.4481,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.20369 -0.1629,1.4666 -0.4074,0.57035 0.2037,0.24443 -0.3259,0.20369 0.3666,0.57035 -0.2852,0.12221 -0.2444,-0.0407 -0.041,1.14068 -0.3259,1.14069 -0.4481,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.1629,0.0407 c 0.083,0.20379 0.1422,0.44083 0.163,0.69256 l -0.041,0.2037 -0.163,-0.24444 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54807 0.774,-2.85172 0.4481,-0.81478 -0.2851,-1.05921 0.5296,0.16295 0.3259,-2.07768 z m -28.4358,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.2852,-0.16296 -0.2037,0.0815 0.3667,0.48887 -0.4889,0.61108 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48886 -0.163,0 -0.2037,0.28517 -0.2037,0 0.3667,-0.61108 1.2629,-0.2037 z m 4.8072,0 0.163,0.65182 -0.2037,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0885,0.28517 0.2037,0 0,0.28518 -0.2037,0.24443 -0.2445,0 0,-0.32591 c 0.078,-0.065 0.1634,-0.13004 0.2445,-0.2037 z m 32.5911,0.40739 1.5073,1.34438 -0.1222,0.44813 -0.5296,-0.16295 -0.4889,1.79251 -0.2037,-0.0407 0.4074,-2.48507 -0.2852,0.12221 -0.3259,-0.0815 0.041,-0.937 z m 4.4812,0 0.7741,0 -0.1222,0.40739 -0.6926,-0.20369 0.041,-0.2037 z m -27.4172,0.12222 0.041,0 0.2037,0.20369 -0.163,0.0407 -0.082,-0.24443 z m 3.422,0 0.5704,0 0,0.20369 -0.5704,0 0,-0.20369 z m 5.4998,0 0.041,0 0,0.20369 -0.082,0 0.041,-0.20369 z m 0.5296,0.16295 c -0.014,0.0596 -0.024,0.0992 -0.041,0.16296 l 0.4074,0.12222 c -0.1395,0.12917 -0.3455,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4888,-0.24444 z m -4.6442,0.0407 0.6518,0.2037 0,0.44813 c -0.414,0 -0.6518,0.1829 -0.6518,0.48886 l -0.163,0 c 0,-0.45892 -0.1313,-0.73325 -0.4074,-0.7333 l 0,-0.20369 0.5704,-0.2037 z m 11.4476,0.0407 0.3259,0.61109 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.2037 z m -18.0881,0.0407 0.5704,0.28517 0.6518,2.36286 0,0.0815 -0.3667,-0.5296 -0.2037,0 0.5704,0.85552 0.041,0.65182 0.2852,0.12221 -0.3667,0.57035 -1.1814,-4.3998 z m 15.4401,0 0.2444,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2852,-1.09995 z m -7.0886,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16295 -0.4889,0.12222 -0.1629,-0.65182 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16295 0.6518,2.36286 -0.2852,-0.16296 -0.8147,-3.05541 z m -7.8218,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36664 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61108 0.082,0.24444 0.2444,0.16295 c -0.7759,0.20744 -1.0756,0.74803 -0.937,1.71103 l 0.3667,0.57035 -0.2037,0.0407 0.5703,0.24443 -0.1629,1.30364 0.082,0.28518 0.2444,0.12221 -0.2037,0.0407 0.5704,0.85552 c -0.141,0.11253 -0.2864,0.23952 -0.4481,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4073,-0.12222 -0.2036,-0.81477 -0.4482,0.12221 -0.2037,-0.81478 0.4074,-0.12221 -0.1222,-0.44813 -0.6518,0.20369 0.082,0.44813 -0.2037,0.0407 -0.163,-0.61108 c 0.1174,-0.74569 0.3563,-1.18391 0.6519,-1.26291 l -0.082,-0.16295 -0.4074,0.0815 -0.163,-0.61109 0.2037,-0.0407 1.3444,-2.03694 z m 31.3282,0.20369 0.2444,0.0407 0.2445,0.28518 0.2851,-0.12222 0.6926,0.16295 0.4481,2.28138 -0.041,0.2037 0.2852,0.0815 0.2852,-0.12221 0.2444,0.0407 -0.6926,2.64802 c -0.6158,-0.32291 -0.8481,-0.90564 -0.611,-1.79251 l -0.2037,-0.0815 0.2851,-0.12221 0.1223,-0.48887 0.082,-1.18143 -0.5704,-0.12221 -0.6925,2.68876 0.2444,0.28517 -0.3667,0.12222 -0.041,0.2037 0.2037,2.19989 -0.8147,0 c -0.1161,0.56732 -0.1894,1.0843 -0.2445,1.50734 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12221 -0.4481,-0.12221 -0.163,-0.937 0.5704,-0.48886 0,-0.12222 c 0.055,0.0879 0.1486,0.16719 0.2852,0.2037 l 0.2037,0.0407 0.082,-0.20369 0.2444,-1.87399 0.3666,-0.5296 0.7333,-3.62576 0.2445,-0.89626 -0.4482,-0.12221 -0.3666,1.34438 -0.3667,0.12222 0.2445,0.28517 -0.1222,0.48886 -0.5296,-0.16295 0.8147,-3.09616 z m -9.207,0.12222 0.2037,0.0407 -0.2444,0.89626 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01847 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81478 -0.2037,0.0407 -0.2445,-0.77404 0.2445,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12221 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2037,0.69256 -0.2037,-0.0407 0.163,-0.69256 z m -26.5618,0.0407 0.1222,0.44812 -0.3259,0.48887 -0.082,-0.36665 0.2852,-0.57034 z m 13.892,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24444 0.1222,0.12221 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12221 0.774,0.2037 -0.041,0.24443 -0.774,-0.20369 0.041,-0.24444 z m -8.7182,0.0407 0.5704,0.16296 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -15.4807,0.0407 0,0.61108 0.4481,0 c 0,0.33786 0.036,0.62663 0.1222,0.81478 -0.2101,0.0426 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.3667,-0.40739 -0.6518,0.20369 c 0,-0.11014 -0.034,-0.20771 -0.082,-0.28517 l -0.2444,-0.89625 1.3443,-0.16296 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.65182 c 0.3992,-0.22119 0.701,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.19369 0.2037,0.28517 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2445,0.28517 0.1629,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2852,0.32591 l 0.041,0.16295 -0.2037,-0.20369 -0.2444,0.12221 0.041,0.69257 -0.2445,0.12221 -0.081,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3666,0.0815 0.041,-0.2037 -0.2851,-0.5296 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.20369 -0.7741,-0.20369 -0.4481,0.44813 -0.163,-0.24444 0,-0.20369 c 0.2416,3e-5 0.4327,0.0163 0.6111,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40739 z m 16.2956,0 0.2444,0.0815 -0.2444,0.89625 -0.2445,-0.0815 0.2445,-0.89626 z m -19.9621,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.548,0.0815 0.2444,0.28517 -0.2037,0.36665 -0.163,-0.52961 0,-0.0815 0.1223,-0.0407 z m -10.5107,0.12221 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.8361,0 0.1629,0 0,0.24444 -0.1629,0 0,-0.24444 z m -16.6622,0.0407 0.5296,0.937 0.041,0.16295 -0.2037,0.28517 0.774,1.83325 -0.5296,0.32591 -0.2852,-1.50733 -0.1222,-0.44813 -0.2444,-0.12222 -0.163,-1.42586 0.2037,-0.0407 z m -0.8963,0.0407 1.1407,4.23684 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.12221 0.4888,-0.12222 z m 19.8806,0.0815 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -7.7811,0.0815 0.6518,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.3259,0.16296 l -0.3259,-0.0815 0,-0.28517 z m -9.207,0.12221 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24444 0.2444,0.0407 -0.1629,0.48887 -0.2037,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8137,0.0815 0.3666,0 c -0.096,0.17536 -0.2074,0.27297 -0.3666,0.28518 l 0,-0.28518 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61108 -0.1222,0.40739 -0.4481,-0.12221 0.2444,-0.89626 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.29569 0.1603,0.56117 0.6518,0.69256 l -0.2444,0.89626 c -0.1374,-0.16029 -0.2848,-0.28993 -0.4481,-0.40739 l 0.041,-0.2037 -0.4482,-0.12221 0.2445,-0.89626 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.1629,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4144,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12221 l -0.1223,-0.0407 0.163,-0.0815 z m -15.603,0.16295 0.082,0.16296 0.3259,2.9332 0.4074,-0.12222 -0.1222,-0.36665 0.611,0.24443 c -0.4434,0.11852 -0.6364,0.41477 -0.5296,0.81478 l 0.2445,0.12222 -0.2445,0.7333 0.041,0.20369 0.4482,-0.12221 -0.1223,-0.44813 0.2037,-0.0407 0.1223,0.44813 -0.3667,1.14068 -0.3666,-0.0815 c -0.056,0.0711 -0.069,0.13431 -0.1223,0.20369 l -0.4481,-1.58881 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16296 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4482,-0.93699 l -0.4482,-0.77404 -0.041,-0.16296 0.5704,-0.36665 z m 31.1652,0 0.5296,0.12222 -0.2037,0.69256 -0.5296,-0.12222 0.2037,-0.69256 z m -28.9246,0.28518 -0.4074,0.0815 0.041,0.2037 0.4074,-0.12222 -0.041,-0.16295 z m 4.7257,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9067,0 0.5296,0.12222 -0.1222,0.48887 0.4481,0.12221 0.1629,-0.69256 0.4482,0.57035 -0.5704,0.81477 -0.1629,1.87399 -0.4482,0.52961 -0.2444,-0.0407 c 0.5137,-1.92153 0.411,-2.92097 -0.2444,-3.09616 l 0.2037,-0.69256 z m -20.0436,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.7926,0 0.2037,0 c 0.1368,0.16131 0.1865,0.38537 0.1629,0.65182 l -0.1222,0 -0.2444,-0.65182 z m -2.5666,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5476,0.16295 0.2444,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2133,-0.17919 -0.3259,-0.24443 l -0.041,-0.28518 z m -7.1701,0.16296 0.2852,0 c 0,0.0715 0.024,0.14662 0.041,0.20369 l -0.4074,0 0.082,-0.20369 z m 0.7333,0.0815 0.4074,0.12221 -0.3259,0 -0.082,-0.12221 z m -6.7219,0.12221 0.2037,0.0815 -0.082,1.22217 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48886 0.2037,0 0,-0.65182 -0.082,-0.28518 z m 14.6253,0.0407 0.3259,0.0815 -0.163,0.65182 -0.2037,-0.0815 -0.041,-0.5296 0.082,-0.12222 z m -15.3586,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1223,0.16295 0.082,0.28517 -0.3259,-0.40738 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.1629,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24443 c -0.1412,0.67658 -0.1364,1.03083 0.1222,1.09995 l -0.2444,0.2037 -0.082,0.16295 -0.041,0.24444 -0.1222,0.0407 -0.163,-0.57035 0.4482,-0.0815 c -0.206,-0.77058 -0.1475,-1.24297 0.1222,-1.34438 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.7333 0.2852,0.0815 -0.3259,0.12221 -0.082,0.24444 0.2444,0.28517 -0.082,0.16295 -0.4074,0.57035 0.041,0.85551 -0.6518,1.30365 0.2444,0.28517 -0.4888,-0.16296 0.3666,-1.34438 -1.1814,0.7333 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79804 -0.2037,-0.85551 l 0.2852,-0.16296 0.041,-0.20369 0.2037,-1.30365 c 0.1374,-0.12989 0.2764,-0.27148 0.4074,-0.40739 l 0.4481,0.32592 c -0.053,-0.21157 -0.1577,-0.37538 -0.2444,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.1629,-0.16296 l 0.2445,0.0407 0.082,-0.36665 0.3666,-0.16295 -0.1629,-0.16296 c 0.072,-0.0919 0.1339,-0.19122 0.2036,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.1351,-0.21611 0.2037,-0.32591 l 0.2852,0.0815 0.2852,-1.05921 c 0.1084,-0.19992 0.2226,-0.4049 0.3259,-0.61109 l -0.1223,-0.16295 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.2037 l 0.2445,-0.24443 z m -22.1619,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.4319,0.20369 0.4889,0.12222 -0.4074,0.93699 c -0.091,-0.13611 -0.2088,-0.26481 -0.3667,-0.36665 l 0.2852,-0.69256 z m -10.8773,0.16296 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9778,0.0407 0.4073,0.12221 -0.041,0.16296 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3923,0.32591 0.4074,0.0815 -0.1629,0.65182 -0.2852,-0.57035 0.041,-0.16295 z m 23.9138,0.0407 c 0.4519,0.27924 0.6049,0.76826 0.4074,1.50734 l -0.5297,1.05921 c -0.1997,1.12234 -0.2914,1.89101 -0.2851,2.40359 l -0.163,-0.0407 0.041,-0.77404 0.1222,-0.48886 -0.3666,-0.77404 0.8962,-2.11842 -0.1222,-0.77404 z m -21.8361,0.12221 0.2445,0 0,0.2037 -0.2445,0 0,-0.2037 z m 12.0995,0 0.041,0 -0.163,0.57035 c -0.02,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77404 z m -19.9621,0.0407 0.2037,0.0407 0.1222,0.24443 -0.3666,-0.12221 0.041,-0.16296 z m -4.1146,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6258,0 c 0.1217,0.0561 0.2252,0.11426 0.4074,0.16295 l -0.082,0.36665 -0.163,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.1245,0.0815 0.2444,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1223,-0.48887 z m -25.4618,0.0815 c 0.1305,0.006 0.2859,0.0201 0.4481,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69256 l -0.4481,-0.77404 c 0.047,-0.1747 0.2132,-0.25603 0.4889,-0.28517 l 0.3666,0 -0.041,-0.0407 z m 14.0141,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1477,0.0407 0.2851,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5703,0 0,0.0815 -0.3666,0.57034 0.1222,0.16296 -0.6111,-0.16296 c 0.107,-0.16058 0.1904,-0.41429 0.2852,-0.65182 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.082,0.16295 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.016,-0.15376 0.041,-0.24443 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.326,0 -0.041,0.2037 -0.2445,0 0,0.48886 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2445,-0.0407 0,-0.48886 -0.2852,0.0407 -0.041,-0.24443 z m -7.6996,0.0815 0,0.77404 c -0.2652,-0.0831 -0.4074,-0.28894 -0.4074,-0.65182 0.1827,2e-5 0.3,-0.0425 0.4074,-0.12222 z m 5.5405,0 0.4074,0.12222 -0.082,0.36665 -0.4482,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24443 0,0.28518 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.20369 0.2444,-0.36665 0.163,-0.28517 -0.4482,-0.12222 0.5704,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1762,0.0407 0.2852,0.0407 l 0,0.65182 -0.2444,-0.0815 -0.041,0.12222 -0.1223,0 0,0.44812 0,0.0815 0.4482,0.12222 0.041,-0.2037 0.1629,0 -0.5296,0.77404 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12221 0.082,0.24444 -0.1222,0.20369 c -0.155,0.0762 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c 0,-0.0298 0.01,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2444,-1.05921 l 0.4481,-1.62955 z m -7.2922,0.44812 c 0.2126,0.11968 0.3123,0.32246 0.2851,0.61109 l -0.2037,-0.12222 -0.082,-0.48887 z m 18.3324,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.20369 0.082,0.36665 c -0.1678,-0.14917 -0.2705,-0.48918 -0.2851,-1.01847 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.9355,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.8962,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.5177,0 0.4074,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.7333,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44813 z m 7.1293,0.0815 0.082,0.12221 0.2852,0.0815 0.082,-0.0407 -0.2037,1.34438 -0.6926,2.52581 -0.2444,0.48887 -0.082,-0.36665 0.2037,-0.28517 -0.2037,-0.2037 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12222 0.2037,0.0407 0.041,-1.05921 0.2852,-0.97773 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81477 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24444 0,0.0407 -0.1629,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4074,0.12222 -0.1222,0.36665 -0.2852,-0.48887 z m -10.6329,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48887 z m 27.4173,0 0.3666,0.0815 c -0.05,0.18575 -0.025,0.33527 0,0.44812 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44813 z m -3.9517,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23873 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2444,0.81477 -0.2037,-0.0407 0.2444,-0.81477 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4074,0.24443 l -0.163,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12222 l 0.1222,-0.36664 z m -21.9175,0.16295 0.082,0 c 0.01,0.0632 0,0.14341 0,0.20369 l -0.082,-0.20369 z m 32.4688,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.2429,0.36665 0.041,0.12222 -0.1629,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7627,0.16296 0.2037,0.0815 -0.7333,2.81099 -0.2037,-0.0815 0.7333,-2.81098 z m 9.4514,0 -0.2037,0.81477 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2444,0.0407 l 0.2444,-0.89626 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2375,0.33745 0.3667,0.48886 l 0,0.12222 0.1629,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.20369 l -0.163,0.65183 -0.2036,-0.0407 c 0.071,-0.26674 -0.1677,-0.49256 -0.6111,-0.61109 l 0.2444,-0.85551 z m 1.0185,0.0407 0,0.12221 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4888,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44813 0.2445,0.89626 -0.4482,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2444,-0.0407 0.6518,-2.4036 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2036,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24443 0.6926,0.16296 0.082,-0.20369 -0.6926,-0.2037 z m -28.6801,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.126,0.1796 -0.3024,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1447,-0.11438 0.3061,-0.20677 0.4888,-0.24443 z m 13.3623,0.20369 c 0.1273,0.11381 0.2392,0.22321 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24444 z m -12.9549,0.2037 0.041,0 0.3259,0.12221 c 0.028,0.10642 0.051,0.19752 0.082,0.28518 l -0.2037,0.77403 -0.2037,-0.0407 c 0.1426,-0.53338 0.011,-0.85798 -0.2852,-0.937 l -0.2037,0.0815 0.041,-0.16296 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5666,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.4438,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4073,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0185,0 0.4074,0 0,0.20369 c -0.1952,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28517 z m -19.4325,0.0815 0.163,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8105,0.12222 0,0.52961 -0.041,0.0407 -0.041,0.16296 -0.2444,0 0.2037,-0.69256 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3666,0 -0.1222,-0.12222 0.041,-0.16296 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.0441,0 c 0.6944,0.36416 0.9331,1.0147 0.6925,1.91472 l -0.4888,-0.12221 -0.163,0.5296 0.3666,0.57035 -0.8555,1.2629 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30364 -0.5703,0.24443 0.2037,0.0407 -0.3667,0.57035 c -0.1386,0.96297 0.1611,1.50359 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03694 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16295 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.26291 l 0.1629,-0.61108 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44813 -0.4074,-0.12221 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12222 0.082,-0.36665 0.4482,0.12222 0.082,-0.36665 -0.4074,-0.12222 0.1629,-0.61108 c 0.3696,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.4 0,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61108 z m -24.5248,0.0407 0.4888,0.12222 -0.4074,0.57035 -0.2444,-0.0815 0.163,-0.61109 z m 23.3026,0 c 0.1376,0.0728 0.2979,0.11504 0.4481,0.16296 l -0.1222,0.40739 -0.3259,-0.52961 0,-0.0407 z m -16.7029,0.0815 0.6518,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.2444,-0.85552 z m 5.7034,0.2037 0.082,0 c -0.036,0.16124 -0.082,0.31655 -0.1222,0.44812 l -0.082,0 0.1222,-0.44812 z m 4.8887,0.0407 0,0.16295 -0.082,0.24443 -0.2037,0 0.041,-0.20369 0.2444,-0.20369 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12222 z m -8.6367,0.0815 0.6519,0.36665 -0.2852,1.01847 -0.2037,-0.0815 -0.2444,-0.937 0.082,-0.36665 z m 20.8991,0 0.4888,0.12222 0.3667,1.14069 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44812 -0.4481,-0.12222 -0.041,0.2037 0.2444,0.73329 -0.2444,0.12222 c -0.1069,0.40004 0.086,0.69626 0.5296,0.81478 l -0.5704,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.93319 -0.082,0.16296 -0.5703,-0.32591 0.082,-0.2037 0.4074,-0.77403 c 0.069,-0.55308 -0.1194,-0.87896 -0.4889,-0.97774 l 0.1222,-0.36665 0.4889,0.12222 0.041,-0.24443 -0.2037,-0.28518 0.3259,-0.0815 -0.041,-1.09995 0.4481,-1.58882 z m -18.9843,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4074,-0.12222 0.041,-0.20369 z m 11.2032,0 0.1629,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28517 -0.2851,-0.5296 0,-0.0407 z m -19.9621,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.20369 z m 1.1,0.0815 0.1629,0.0407 0,0.16295 -0.1629,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0837,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2037,0.0407 0,0.44813 -1.7111,6.35526 -0.4888,-0.12222 0.2851,-0.12221 0.041,-0.2037 0.6926,-3.4628 0.2852,-0.12222 0.041,-1.05921 0.4888,-1.95546 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6437,0.12221 0.041,0.44813 -0.1222,0.0407 -0.082,-0.32591 0.1629,-0.16296 z m 12.792,0 0.2037,0.0407 -0.1223,0.36665 -0.2037,-0.0407 0.1223,-0.36665 z m -9.5737,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48887 -0.4481,-0.16296 0.082,-0.40739 z m -20.9805,0.32591 0.4889,0.12222 -0.082,0.20369 -0.163,1.38513 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81478 0.041,-0.32591 z m 3.2999,0.0407 0.4481,0.0815 c -0.1069,0.39998 -0.01,0.69501 0.2852,0.77404 l -0.041,0.20369 c -0.4434,-0.11854 -0.7027,-0.10372 -0.7741,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3667,-0.57035 z m 16.8251,0.0407 0.2852,0 -0.082,0.24443 -0.2037,0 0,-0.24443 z m -13.7697,0.16296 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12222 0.2444,-0.97773 z m 20.125,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0961,0 0.2037,0.0407 -0.4481,0.93699 -0.2037,-0.0407 0.2037,-0.81477 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57034 -0.9777,0 0.1629,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.326,0 0,0.2037 -0.3667,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2851,0.12221 -0.2037,-0.0407 c 0.062,-0.23333 0.1326,-0.43445 0.1629,-0.61108 z m -4.3183,0.16296 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.3059,0 0.2037,0.0407 c -0.1069,0.40001 -0.01,0.69503 0.2852,0.77403 l -1.4259,3.50355 0.2037,0.24443 -0.041,0.20369 -0.5296,0.89626 -0.2037,-0.0407 0.163,-1.42586 0.2444,-0.12222 0.1222,-0.44812 0.6926,-3.42207 0.2852,-0.20369 z m -35.3613,0.12221 0.1222,0.85552 0.2037,0.12222 c -0.012,0.0965 -0.014,0.18348 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3666,0.16296 c -0.01,-0.0436 -0.031,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.1629,-1.34439 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1223,-0.44813 z m -4.8072,0.24444 0.2037,0.0815 -0.1629,0.52961 -0.2037,-0.0407 0.1629,-0.57034 z m 28.9654,0 0.2037,0.0407 -0.2852,1.01848 -0.2037,-0.0815 0.2852,-0.97773 z m -20.4917,0.12221 0.3667,0.52961 -0.163,0.61108 -0.2037,-0.32591 -0.4074,-0.12222 c -0.1069,0.40001 -0.412,0.56666 -0.8555,0.44813 0.107,-0.40002 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12221 0.1629,0.24444 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8365,0.2037 0.1223,0 0,0.12221 -0.1223,-0.12221 z m 13.118,0 0.8962,0.24443 -0.4481,1.75177 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34438 l -0.4481,-0.0815 0.163,-0.57034 z m -6.1516,0.0407 0.2852,0.5296 -0.041,0.2037 -0.2852,-0.57035 0.041,-0.16295 z m -28.558,0.0815 -0.2036,1.62956 -0.8148,0.24443 0.2444,-0.89625 c 0.4491,-0.22295 0.7308,-0.54687 0.774,-0.97774 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2851,-0.0815 0.1222,-0.36665 z m 21.8768,0.0407 0.1629,0.0407 0,0.24443 -0.4074,0 0.2445,-0.28517 z m -9.5329,0.0407 0.2037,0 0.1629,0.24443 -0.2851,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9664,0.24443 0.4889,0.12222 -0.082,0.24443 -0.5296,0.937 -0.163,-0.24444 -0.2036,-0.0815 -0.5297,0.28517 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.611,0.44813 l -0.163,-0.24443 -0.2037,-0.0407 -0.2444,0.12221 0.2037,-1.62955 0.6111,0.16295 0.1222,-0.40738 c 0.739,0.19754 1.156,0.0741 1.2629,-0.32592 z m 2.8518,0.12222 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1222,-0.40739 z m 6.6404,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2445,-0.0407 0.1223,-0.44813 z m -9.2885,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12221 0,0.0407 -0.2037,-0.0407 0.041,-0.12221 z m 15.7252,0.0815 c 0,0.20654 -0.1299,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16295 0,-0.0407 0.8555,-0.2037 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.12222 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.20369 -0.2037,-0.20369 -0.4074,0 -0.1629,-0.24443 0.1222,-0.44813 c 0.1892,0.0505 0.3495,-0.044 0.4889,-0.24444 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.098,0.33787 -0.3274,0.59857 -0.6518,0.7333 l -0.1222,-0.0407 0.4481,-0.77404 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.12222 c 0.2001,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1222,0.44813 -0.4074,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57034 0,-0.57034 z m -11.9773,0.16295 -0.082,0.36665 0.4074,0.12222 0.1223,-0.36665 -0.4482,-0.12222 z m 4.9702,0.0407 0.6925,0.2037 -0.1222,0.36665 0.4482,0.12221 0.1629,-0.61108 0.3259,0.36665 c -0.3477,0.17232 -0.5886,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44387 -0.02,-0.7271 -0.4074,-0.81478 l -0.2037,-0.0407 c 0.071,-0.11464 0.1184,-0.28147 0.163,-0.44813 z m 16.9066,0 0.4074,0.12222 -0.082,0.24443 -0.4074,-0.12221 0.082,-0.24444 z m -14.4215,0.2037 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4481,0.0815 -0.082,0.20369 -0.4074,-0.12221 0.041,-0.16296 z m 20.1657,0 0.163,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24443 0.2037,0.0407 c 0.1185,0.0317 0.2232,0.0419 0.3259,0.0407 -0.1474,0.0926 -0.2951,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21897 0.774,0.44813 l -0.4888,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.1221,0.22481 0.1522,0.50258 0.041,0.85551 l 0.6518,0.16296 -0.3666,1.09995 -0.6111,-0.12222 0,2.11842 -1.3444,1.14069 0.2037,0.32591 -1.7518,2.40359 0.4481,-0.12221 0.2445,0.0815 -0.1222,0.40738 -0.2852,-0.0407 -0.2852,-0.32592 -0.2852,-0.0407 -0.1222,0.48886 -0.2852,-0.0815 2.4851,-7.78112 0.2445,-0.0407 -0.2852,0.97773 0.6518,0.12222 0.4074,-1.30364 -0.4481,-0.0815 0.041,-0.12222 -0.2037,-0.0815 -0.2852,0 0.041,-0.12222 0.2852,-0.0407 0.082,-0.20369 -0.2445,-0.0815 0.163,-0.57035 -0.2037,-0.28517 0.082,-0.20369 0.2852,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12221 -0.163,-0.16295 z m 7.8626,0 0.041,0.16295 -0.2852,-0.0815 0.2444,-0.0815 z m -20.0435,0.12222 0.4481,0.77403 -0.3259,0.16296 -0.163,-0.0407 0.041,-0.89625 z m -0.6926,0.0407 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 z m 19.8806,0.16296 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12222 z m -1.3852,0.12222 0.082,0.12221 0,0.28517 -0.4481,-0.12221 0.163,0 0.2037,-0.28517 z m 3.8702,0.12221 0.2445,0.0815 0,0.28517 0,0.65182 0,0.12222 -0.3259,0.12222 -0.4074,-0.0815 0.2851,-1.14069 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.3803,0.12222 0.3667,0.48887 -0.4889,-0.12222 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12221 -0.041,0.2037 -0.7741,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16296 z m 6.4367,0 -0.041,0.2037 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12222 z m -27.1728,0.24444 0,0.20369 -0.4074,0.2037 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.1369,0 0.3666,0.0815 -0.2444,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6068,0.0815 0.2037,0.0407 -0.3666,1.34439 c -0.019,-0.29822 -0.091,-0.4868 -0.2445,-0.57035 l 0.041,-0.32591 0.3667,-0.48886 z m 10.307,0.0815 0.2444,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.163,-0.48887 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24443 0.041,0.16296 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28518 -0.041,-0.0407 0.081,-0.24444 z m 1.3851,0.0407 0.2444,0.28517 0,0.28518 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4073,-0.36665 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2851,0.0407 -0.1629,0.48887 -0.2444,-0.0815 0.1222,-0.44812 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44813 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6518,0.81478 0.3666,0.0815 -0.4481,0.12221 -0.082,0.24444 0.2852,0.32591 -0.041,0.20369 -0.5704,0.61108 0.082,0.97774 -0.8555,1.42586 0.2852,0.28517 -0.6111,-0.12222 0.4481,-1.54807 -1.5073,0.85551 0.2852,0.28517 -1.0185,0.44813 c -0.1112,-0.21926 -0.218,-0.41748 -0.3259,-0.65182 -0.01,-0.0107 0,-0.03 0,-0.0407 l 0.1222,-0.77404 0.2852,0.0815 0.6925,0.44813 c -0.2005,-0.67951 -0.5592,-1.09062 -1.1407,-1.22217 l 0.2037,-0.69256 c 0.015,-0.0461 0.027,-0.0769 0.041,-0.12222 l 0.1223,-0.0407 0.041,-0.2037 -0.082,-0.0407 c 0.068,-0.22572 0.1079,-0.44975 0.1629,-0.65182 l 0.163,-0.12222 0.041,-0.20369 -0.041,-0.12222 c 0.059,-0.23983 0.045,-0.41041 0.082,-0.61108 0.2165,-0.0412 0.45,-0.15496 0.6925,-0.36665 -0.087,0.52224 -0.036,0.83279 0.2445,0.89626 l -0.3259,0.20369 -0.041,0.0815 c -0.1806,0.11242 -0.3752,0.24349 -0.5297,0.36665 l -0.041,0.24443 0.4074,0.12222 -0.3259,1.67029 0.5704,0.12222 0.1222,-0.40739 0.4481,-0.2037 -0.2852,-0.28517 -0.2851,-0.0815 0.082,-0.20369 1.5073,0.12222 0.2037,-0.69256 -0.5296,-0.12222 0.1222,-0.40739 0.5704,0.12222 0.3666,-1.14069 0.2444,-0.16296 -0.2037,-0.0407 0.4889,-1.54807 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.163,0.24443 0.2037,0.0815 0.3259,-0.12222 -0.041,0.16296 c -0.3962,0.0368 -0.7257,0.11789 -0.9778,0.20369 l -0.041,0 -0.1629,-0.0407 0.2852,-0.44813 0.2444,-0.0815 z m -12.0179,0.0815 0.611,0.12221 -0.1222,0.40739 -0.4888,-0.5296 z m 3.9516,0.12221 0.3259,0.0815 -0.041,0.16296 -0.2851,0.0815 0,-0.0407 0,-0.28518 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.3666,0.12222 0.041,-0.40739 0.1222,-0.40739 z m 29.5765,0.0407 0.2036,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1223,-0.36665 z m -7.4553,0.32591 0.4074,0.12222 -0.082,0.44812 -0.4074,-0.24443 0.082,-0.32591 z m -26.358,0.0407 0.4074,0.12222 -0.082,0.20369 -0.4074,-0.12222 0.082,-0.20369 z m 1.6703,0 0.2037,0.24443 -0.041,0.2037 -0.3259,-0.32591 0.1629,-0.12222 z m 18.1695,0.0407 c 0.1619,0.0875 0.2758,0.18386 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.20369 l -0.5296,0 c 0.031,-0.17321 0.06,-0.33607 0.082,-0.48886 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24443 -0.2851,-0.0815 0.041,-0.61109 0.3666,-0.12221 z m -3.2998,0.0815 0.2444,0.0407 -0.1222,0.48887 -0.2852,-0.0407 0.163,-0.48887 z m 10.7143,0.0407 0.7333,0.16296 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1222,0.28517 -0.082,0 -0.2037,-0.28517 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81478 z m 20.0028,0 c -0.1782,0.66667 0.096,1.38755 0.6925,2.11842 l 0.2445,-0.12221 0.1629,0.24443 -0.041,0.16296 c -0.2463,-0.0659 -0.4957,0.0124 -0.6925,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3667,0.12222 c 0.1402,-0.44386 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.2037 c 0.2165,-0.51357 0.4453,-0.70986 0.8148,-0.61108 l 0.1222,-0.40739 -0.611,-0.16295 0.8555,-0.65183 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44813 -0.2852,-0.57035 0.082,-0.36665 z m -17.9659,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2444,-0.32591 0.082,-0.16296 z m -14.2586,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.766,0 0.7333,0 -0.082,0.20369 -0.6926,0.0815 c 0.022,-0.10672 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12221 -0.041,0 0,-0.12221 z m 19.6768,0 0.2037,0.0407 -0.2037,0.81477 -0.2037,-0.0407 0.2037,-0.81477 z m -28.4357,0.16295 0.5704,0.12222 -0.2445,0.69256 -0.3666,-0.61108 0.041,-0.2037 z m 2.1592,0.0407 -0.082,1.14069 0.6111,0.16295 0.082,-1.18142 -0.6111,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40739 z m -13.4438,0.0407 0.1222,0 0.2852,0.7333 -0.1222,0.16295 -0.163,0 -0.2037,-0.61108 c 0,-0.0113 -0.01,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48886 -0.3259,0 0,-0.48886 z m 4.0332,0 0.2444,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12221 z m -25.7062,0.0815 0.082,0.0407 -0.041,0.2037 -0.082,-0.0407 0.041,-0.2037 z m 38.1723,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28517 z m -10.918,0.24443 c 0.2732,-0.0456 0.6794,-0.0134 1.1814,0.0407 l -0.1222,0.40739 c -0.3876,-0.0877 -0.75,0.1822 -0.937,0.77404 l -0.5704,-0.89387 c 0.053,-0.16645 0.1749,-0.28029 0.4482,-0.32592 z m 14.0956,0.0407 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.7741,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.1548,0.0407 0.4889,0.12222 -0.2852,1.01847 -0.3666,-0.48887 0.1629,-0.65182 z m -17.9658,0.0407 0.2444,0.0407 -0.2851,0.0815 0.041,-0.12222 z m 10.8365,0 0.2037,0.0407 -0.041,0.12222 -0.2444,0.12221 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.5737,0.12222 -0.1222,0.0815 -0.082,0.16295 0.2036,0.24443 0,-0.48886 z m -13.8105,0.0815 0.4074,0.0815 -0.3259,0.44813 -0.3259,-0.0815 -0.041,-0.16295 0.2851,-0.28517 z m -10.4292,0.0407 0.1223,0.0815 0,0.24443 -0.163,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28518 z m 13.8513,0.0407 0.611,0.52961 0.041,0.0407 -0.1222,0.61108 c -0.1738,-0.13018 -0.3351,-0.28386 -0.4888,-0.36665 -0.043,-0.24559 -0.071,-0.51516 -0.041,-0.81478 z m -8.5552,0.0407 0.3666,0 0,0.24443 -0.3666,0 0,-0.24443 z m -16.4585,0.0815 0.1629,0.0407 -0.1222,0.40739 -0.2851,-0.0815 0.082,-0.28517 0.1629,-0.0815 z m 4.1961,0.20369 0.5296,0.12222 0,1.18143 c -0.3391,-0.0767 -0.521,-0.50905 -0.5296,-1.30365 z m 1.7925,0.16296 -0.2444,0.69256 0.6518,0.16296 0.2037,-0.69257 -0.6111,-0.16295 z m 3.0147,0.24443 c 0.5369,0.1214 0.591,1.23746 0.1629,3.29985 -0.149,0.24871 -0.3558,0.70204 -0.5703,1.14069 l -0.5704,-0.12222 -0.5296,-1.34438 c 0.3877,0.0877 0.5932,-0.0857 0.7333,-0.52961 l 0.082,-1.18142 0.2037,0.24443 0.6519,0.16296 -0.163,-1.6703 z m 9.6958,0.0407 0.1222,0.12222 -0.2444,0.28517 -0.1222,0.44813 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44813 0.082,-0.12221 0.2445,0.24443 0.3666,-0.44813 z m 5.3776,0 c 0,0.30601 -0.1563,0.44815 -0.5704,0.44813 l 0,0.20369 0.4074,0 -0.3666,0.65183 -0.4074,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.4074,-0.77404 c 0.1595,-0.009 0.3126,-0.0407 0.4888,-0.0407 z m -13.4439,0.0407 0.2852,0.0407 -0.4481,1.2629 -0.082,0.32591 c 0.198,0.0814 0.3666,0.1667 0.5296,0.24444 l -0.2444,0.44813 -0.1223,-0.2037 -0.3259,0.16296 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.2725 0.2037,-0.48887 l -0.2037,0 0.163,-0.48886 0.041,0.0407 0.2851,0 0.163,-1.30364 z m -8.1885,0.0815 0.5704,0.12221 -0.163,0.40739 -0.4074,-0.5296 z m 13.1587,0.0815 0.082,0.0815 -0.163,-0.0407 0.082,-0.0407 z m 4.359,0 0.3259,0 c -0.046,0.25427 -0.075,0.44864 -0.082,0.65182 l -0.611,0 0.082,-0.57035 0.2851,-0.0815 z m -3.1369,0.0815 0.082,0.48887 c -0.2042,-0.10677 -0.3488,-0.235 -0.4481,-0.40739 l 0.3667,-0.0815 z m -1.7517,0.0815 -0.1222,0.48887 -0.163,0 0,-0.40739 0.2852,-0.0815 z m 18.0066,0.0407 0.2036,0.0407 -0.1629,0.65182 -0.2037,-0.0815 0.163,-0.61108 z m 0.6518,0 0.4888,0.12222 -0.4073,1.4666 -0.163,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2444,0.0407 l 0,-0.36665 0.3259,-1.22217 z m -21.225,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.5036,0.12222 c 0.081,0.0361 0.1343,0.0796 0.2037,0.12221 l -0.2445,0.0407 0.041,-0.16295 z m -12.181,0.0815 0.2852,0.0407 -0.2852,0.89626 -0.2851,-0.0407 0.2851,-0.89626 z m 1.7926,0.16296 -0.1223,0.44813 0.6111,0.12221 -0.4888,-0.57034 z m 19.5954,0 c 0.045,0.041 0.155,0.11945 0.2036,0.16295 l -0.082,0.52961 -0.8962,2.85172 -0.5704,0.81478 0.3667,1.05921 -0.6518,-0.16296 -0.3667,2.07768 -0.5296,-0.12221 0,-0.97773 0.3259,-0.12222 0.082,-0.2037 0.163,-1.4666 0.4889,-0.57034 -0.1223,-0.12222 c 0.028,-0.0546 0.041,-0.12719 0.041,-0.20369 l 0.2037,-0.12222 -0.4074,-0.57034 0.3667,-0.12222 0.2444,0.0407 0.082,-1.14069 0.3667,-1.14068 0.5296,0.12221 0.1629,-0.61108 z m 1.2629,0.0815 0.1222,0.16295 -0.163,-0.0407 0.041,-0.12221 z m 1.8332,0.12221 0.082,1.62956 0.4889,0.12221 0.2037,-0.20369 -0.2445,0.81478 c -0.1147,-0.18977 -0.1569,-0.28133 -0.2851,-0.48887 l -0.2037,0.0815 c -0.022,-0.0177 -0.056,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4481,-1.26291 z m 0.5296,0 0.3667,0.0815 0,0.0815 -0.2445,0.36665 -0.2444,-0.0815 0.1222,-0.44813 z m 3.7887,0.16296 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.1222,-0.40739 z m 1.7925,0.24443 0.2037,0.0815 0,1.05921 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.1629,0.12222 l -0.3667,-0.0815 0.3259,-1.22217 z m -32.1022,0.0407 0.2444,0.0815 -0.9777,3.09615 -0.2444,-0.0407 0.9777,-3.13689 z m 29.5764,0.16296 0.082,0.0407 -0.1629,0.61109 -0.2037,-0.0407 0.1222,-0.44813 0.1629,-0.16295 z m -14.0141,0.16295 0.2036,0 0,0.48887 -0.2036,0 0,-0.48887 z m 11.692,0.0815 0.2037,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12222 z m -24.2804,0.0815 -0.1629,0.44812 0.6111,0.16296 0.1629,-0.48887 -0.6111,-0.12221 z m 27.1321,0.0407 0.2037,0.0407 0.041,0.69257 -0.4074,-0.12222 0.163,-0.61108 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65183 -0.2444,-0.0815 0.1629,-0.61109 z m 31.5726,0.2037 0.4074,0.12222 -0.082,1.05921 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14069 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5546,0.24443 0.041,0 0,0.44813 -0.2037,0 0.1629,-0.44813 z m -5.5405,0.0407 0.6926,0.16296 -0.5704,1.18142 -0.3259,0.44813 -0.082,0 0.2037,-0.61108 0,-1.05921 c 0.035,-0.0284 0.048,-0.0738 0.081,-0.12222 z m 5.9479,0.2037 0.4074,0 0,0.48886 0.2444,0 0.041,-0.0407 -0.041,0.28517 -0.3259,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.3667,-0.0815 -0.1629,0.0407 c 0.1408,-0.12156 0.2037,-0.25688 0.2037,-0.44812 z m 13.8919,0 0.2445,0.0407 0.1222,0.7333 -0.082,0.24444 -0.4074,-0.61109 0.1222,-0.40738 z m -11.8142,0.20369 0.082,0 -0.2037,0.89625 -0.082,0.0407 -0.2037,-0.20369 c -0.1036,0 -0.1645,0.009 -0.2445,0.0407 l 0.2037,-0.65182 0.4481,-0.12222 z m 0.774,0 0.4889,0 0.1629,0.0407 -0.2444,0.77404 -0.5296,0.32591 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.20369 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36665 z m 2.8517,0 0.6518,0 -0.082,0.20369 -0.611,-0.12221 0.041,-0.0815 z m -22.5286,0.16296 0.6518,0.16295 -0.4888,0.61108 -0.3667,-0.0815 0.2037,-0.69256 z m 14.9512,0.12221 0.2037,0 0.3666,0.0815 -0.4074,0.20369 -0.041,0.2037 0.041,0.12221 -0.1629,0.0407 -0.2037,0 0.2037,-0.65182 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.20369 -0.2037,-0.0407 0.041,-0.20369 z m -18.8214,0.16296 0.2444,0.0407 -0.041,0.2037 -0.2851,0.0407 0.082,-0.28517 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2444,-0.0815 0,-0.0407 z m 6.1516,0.20369 0.6518,0.12222 0.2852,0.85551 c 0.027,0.314 0.036,0.61618 -0.041,0.937 l -0.2037,-0.0815 0.1629,-0.44813 -0.5703,-0.12221 -0.041,0.20369 0.3259,0.81478 -0.3259,0.12221 c -0.1051,0.33294 -0.023,0.60721 0.2852,0.77404 -0.041,0.10991 -0.074,0.22 -0.1222,0.32591 l -0.2445,0.0815 0.1222,-0.40739 -0.5703,-0.12221 -0.2444,1.75177 c -0.1708,0.17432 -0.368,0.37121 -0.5704,0.5296 l 0.2037,-0.28517 c 0.09,-0.61376 -0.1265,-0.99034 -0.6111,-1.09995 l 0.1222,-0.40739 0.6111,0.12222 0.1222,-0.28517 -0.3259,-0.28518 0.4482,-0.12221 0,-1.18143 0.5296,-1.79251 z m -27.3765,0.0407 0.8147,0.40739 -0.3259,1.09995 -0.2851,-0.0815 -0.3259,-1.01847 0.1222,-0.40739 z m 2.485,0.0407 0.5704,0.12221 -0.081,0.2037 -0.5296,-0.12222 0.041,-0.20369 z m 32.0208,0.12221 0.2852,0.0407 -0.2037,0.69256 -0.2852,-0.0407 0.2037,-0.69257 z m -23.3026,0.0407 0.2037,0 0,0.2037 -0.2445,-0.0407 0.041,-0.16296 z m 10.1439,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8143,0.28518 -0.3666,1.34438 -0.041,0 0.4073,-1.34438 z m -11.4884,0.0815 0.2445,0.0815 -0.082,0.2037 -0.2852,0.12221 0.1222,-0.40739 z m 10.307,0 0.041,0 c 0.027,0.19876 0.01,0.41807 -0.041,0.65183 l -0.163,-0.0407 0.163,-0.61109 z m 1.5888,0 0.1222,0.0407 0,0.2037 -0.1629,-0.0407 0.041,-0.2037 z m -16.3363,0.12222 0.163,0 -0.4482,0.44813 -0.2037,0 0.4889,-0.44813 z m 3.1369,0 0.2852,0 -0.082,0.44813 -0.3259,0 0.1222,-0.44813 z m -22.4471,0.20369 0.082,0.12222 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12221 0.081,-0.28518 z m -18.9028,0.0815 0.2037,0.0407 0,0.24443 c -0.066,-0.0966 -0.1383,-0.18401 -0.2037,-0.28517 z m 10.7143,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.1629,-0.20369 0.3259,-0.28517 z m 19.7176,0 0.2037,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.1553,0.0407 0.611,0.12221 -0.082,0.24443 -0.611,-0.16295 0.082,-0.20369 z m 7.944,0 0.163,0.0407 -0.2852,0.97774 -0.1222,-0.0407 0.2444,-0.97773 z m -29.4542,0.0815 1.2222,0.0815 -0.2037,0.61108 -1.2629,0 0.2444,-0.69256 z m 10.9181,0.0407 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.16296 c 0.029,-0.0137 0.051,-0.0271 0.081,-0.0407 z m 14.2993,0.0815 0.2852,0.40739 -0.2852,0.44813 -0.2444,-0.0407 0.2444,-0.81478 z m 1.1407,0.32591 0.1222,0.61108 -0.2852,-0.0815 0.163,-0.52961 z m 4.1554,0.0407 0.1222,0 c -0.064,0.20395 -0.057,0.39208 0,0.5296 l -0.041,0 -0.1222,0.40739 0.041,0.89626 -0.4074,0.48886 -0.2037,-0.0407 0.3259,-1.18143 -0.4481,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.082,-0.28517 z m -17.2326,0.0407 0.3667,0 0,0.28517 -0.2445,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.774,0 0.4074,0 -0.1629,0.57034 -0.2445,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.037,0 0.4074,0 -0.1222,0.69256 c -0.146,0.15267 -0.3488,0.24965 -0.5704,0.32591 l -0.6111,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.4141,0 0.5704,-0.19281 0.5704,-0.65182 z m -22.4471,0.0407 c 0.01,0.0179 0.071,0.0223 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7702,0.0407 0.8148,0.20369 -0.082,0.20369 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40738 z m 21.4287,0 0.2851,0.16295 -0.082,0.2037 -0.2851,-0.0407 0.082,-0.32591 z m -2.3222,0.0815 0.2852,0.0815 -0.2852,0 0,-0.0815 z m -14.2993,0.36665 0.4889,0.52961 -0.2037,0.65182 -0.041,0 -0.2445,-0.32591 -0.5296,-0.12222 c -0.048,0.151 -0.1391,0.2794 -0.2444,0.36665 l -0.8555,-0.24443 c -0.047,-0.23181 -0.2221,-0.40088 -0.6111,-0.48887 l 0.041,-0.20369 0.5704,0.12222 0.2036,0.24443 c 0.1053,-0.3329 0.569,-0.44606 1.4259,-0.52961 z m 3.1776,0.32591 0.3667,0.44813 -0.6518,-0.12221 0.2851,-0.32592 z m 21.6731,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.3444,0.12222 0.2037,0.36665 -0.041,0.2037 -0.2444,-0.36665 c 0.023,-0.0703 0.061,-0.13195 0.082,-0.2037 z m -25.9099,0.40739 0.2444,0.0407 -0.1222,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5073,0.0815 0.2037,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.1022,-0.11766 -0.163,-0.16295 z m -3.911,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.4889,0.61108 0,-0.48886 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12221 0.1559,0.20013 0.3052,0.42706 0.4889,0.65182 l -0.3259,0.44812 -0.1222,-0.12221 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28518 0.041,0.61108 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4889,-0.48887 l 0.082,-0.20369 -0.3666,-0.0815 c -0.1552,-0.17217 -0.3026,-0.34479 -0.4482,-0.52961 l 0.6518,0.12222 0.163,-0.48886 z m 11.7328,0.24443 0.4482,0 0,0.48886 -0.4482,0 0,-0.48886 z m 11.6921,0 0.1629,0 0,0.12221 -0.1629,-0.12221 z m -4.4405,0.0407 0.1629,0.28517 -0.041,0.16295 -0.9777,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.1794,-0.0411 0.3596,-0.19639 0.4888,-0.40738 l 0.3667,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.1569,0.22679 0.1629,0.36665 l -0.6926,0 0.163,-0.28517 0.3667,-0.0815 z m 17.1103,0.0407 0.1629,0.0407 -0.041,0.16296 -0.1629,-0.0815 0.041,-0.12222 z m -21.1435,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.15471 0.2445,0.28517 l -0.3667,0 0,-0.28517 z m 11.6921,0.44813 0.5296,0.12222 -0.082,0.24443 -0.5296,-0.12222 0.082,-0.24443 z m -13.0365,0.0815 0.163,0.12221 -0.082,0.2037 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2444,0.0407 0.1222,0.0815 0.163,0 -0.082,0.24444 -0.3666,0.20369 -0.1223,0.0407 0,-0.0815 0.1223,0.0407 0.041,-0.20369 -0.1223,-0.28518 0,-0.0815 z m 25.4211,0.0407 0.1222,0.44813 -0.1222,0.28517 0,-0.7333 z m -16.1734,0.16296 -0.041,0.20369 -0.041,0.48887 -0.937,-0.12222 -0.081,-0.0815 0.7741,-0.36665 -0.3667,-0.0815 0.6926,-0.0407 z m -3.5035,0.0407 -0.041,0.12222 -0.2852,-0.0815 0.3259,-0.0407 z m 4.7664,0 0.4482,0.0815 0,0.0407 0,0.20369 c -0.1905,-3e-5 -0.299,0.0479 -0.4074,0.12222 l -0.041,-0.44813 z m -2.5665,0.0407 -0.1222,0.44813 -0.6111,-0.0815 -0.2445,-0.24444 -0.082,0.2037 -0.2851,-0.0407 0.082,-0.24443 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2851,0 0.7333,-0.0407 z m 3.7887,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.163,0.24443 0.2851,0 0.163,-0.12222 0.2852,0.28518 -0.3259,0.36664 c -0.7619,0.018 -1.1994,0.12476 -1.2629,0.32592 l -0.082,0.20369 0.2851,0.0815 0.5296,0 -0.2444,0.28517 c -0.3067,1e-5 -0.7246,-0.15749 -1.1814,-0.36665 l 0.1222,-0.32591 -0.3667,-0.0815 -0.3259,0.16296 c -0.3253,-0.18391 -0.6735,-0.42525 -1.0592,-0.69256 0.53,0.11988 0.9408,0.0209 1.2222,-0.28518 0.452,0.0971 0.8964,0.16296 1.3851,0.16296 l 0.082,0 0.163,0.0407 0.041,-0.16296 0.1222,-0.12221 z m 1.9147,0.0815 c 0.012,0.27819 0.1751,0.47169 0.6111,0.57035 l -0.041,0.12221 -0.1629,0.0815 c -0.4016,-0.0334 -0.7787,-0.0703 -1.1,-0.0815 0.1876,-0.17417 0.4654,-0.46551 0.6926,-0.69256 z m 25.1767,0 0.1222,0.0407 -0.2445,1.01847 -0.1222,-0.0407 0.2445,-1.01848 z m -10.9588,0.0815 0.2444,0.0815 -0.082,0.28517 -0.1629,0 0,-0.36665 z m -20.8176,0.12222 c 0.2965,0.34462 0.6324,0.71226 0.9778,1.09995 l -0.7333,-0.16296 c -0.294,-0.25079 -0.5828,-0.52525 -0.8555,-0.81477 l 0.611,-0.12222 z m -1.0592,0.24443 0.4482,0.7333 -0.3259,0 c -0.2314,-0.13532 -0.4738,-0.24993 -0.6926,-0.40739 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.4481,-0.0815 z m 23.2212,0.16296 0.5703,0.12221 0,1.18143 -0.4481,0.12222 -0.5296,-0.12222 0.4074,-1.30364 z m 11.2847,0.12221 -0.2037,0.40739 0.082,-0.32591 0.1222,-0.0815 z m -16.2956,0.12222 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.6769,0.12222 c 0.029,0.006 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.3666,0 0.2037,-0.0815 z m 29.1691,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1195,-0.0874 0.2148,-0.19178 0.3259,-0.28517 z m 3.8294,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2037,0.0815 c -0.072,0.0648 -0.1696,0.10081 -0.2445,0.16296 -0.1919,0.15941 -0.368,0.33853 -0.5703,0.48886 -0.078,-0.0803 -0.1398,-0.20168 -0.2037,-0.32591 0.1573,-0.0786 0.2843,-0.16145 0.4481,-0.24443 l 0.3259,0.0815 0.041,-0.2037 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.20369 c 0.1087,10e-6 0.2966,-0.11103 0.5296,-0.28517 l 0.7333,-0.0407 z m -4.9294,0.12222 c 0.1297,0.14533 0.2302,0.25608 0.3667,0.40738 l 0,0.2037 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.163,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2444,-0.16296 l 0.1629,-0.0407 0.041,-0.16295 z m 10.0218,0.0815 0.3666,0.24444 -0.082,0.0815 -0.2037,0 c 0,-0.12071 -0.037,-0.22822 -0.082,-0.32591 z m -2.037,0.32591 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 6.6405,0 0.4074,0 0,0.0815 -0.2445,0.12222 -0.1629,0 0,-0.2037 z m -3.0962,0.12222 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8257,0 0.2444,0.0407 0.2444,0.28517 0.082,0 0,0.40739 c -0.3615,0.0312 -0.7579,0.0611 -1.1406,0.0815 l 0.3259,-0.48887 c 0.079,-0.004 0.1557,0 0.2444,0 l 0,-0.32591 z m -6.4775,0.32591 0.6518,0 0,0.48887 -1.0185,0 0.3667,-0.48887 z m 8.1885,0.0407 0.2852,0.0815 -0.041,0.12222 c -0.1063,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24443 z m 9.4107,0.0407 c -0.02,0.28762 -0.042,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40738 -0.3259,-0.44812 0.5703,-0.81478 z m -12.0587,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2445,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2445,-0.24443 z m -8.6367,0.16295 0.6519,0 0,0.2037 -0.6519,0.20369 0,-0.40739 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.40739 -0.4888,0 0.4888,-0.40739 z m -15.1548,0.2037 0.041,0 0,0.20369 -0.4482,0 0,-0.0407 0.4074,-0.16295 z m 3.3406,0 0.611,0 0,0.20369 -0.611,0 0,-0.20369 z m 4.9701,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.9109,0 0.6519,0 0,0.20369 -0.6519,0 0,-0.20369 z m 18.0474,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.163,0.48887 -0.5296,-0.12222 0.041,-0.0815 c 0.1755,-0.0707 0.415,-0.20083 0.6111,-0.28518 z m 5.296,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24444 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2445,-0.12222 z m -32.6318,0.28518 0.6518,0 0,0.24443 -0.6518,0 0,-0.24443 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.24443 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.6111,0 1.0184,0.28517 1.2222,-0.28517 1.3037,0 0,0.48887 -5.1739,0 0,-0.2037 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4481,0.48887 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.48887 z m 5.459,0 0.5704,0 0,0.28517 -0.5704,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.20369 l -0.041,0 0.041,-0.16295 0.041,-0.0407 z m -30.5134,0.28517 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#ef2929;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <path
+       id="path3644"
+       d="m -532.05291,220.01223 -2.5666,0.48887 0,1.34438 0.5704,-0.61108 0.6518,0 0,0.20369 -1.2222,0.40739 0,2.07768 0.2037,0 -0.2037,0.28517 0,0.85552 c -0.1242,0.11339 -0.1888,0.18925 -0.2852,0.28517 l 0,0.48887 c 0.096,-0.0462 0.1848,-0.0603 0.2852,-0.12222 l 0,0.7333 -0.2852,0.24444 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24443 0.066,0.0489 0.108,0.10818 0.163,0.16296 l 0,0.16295 -0.2445,-0.0815 c -0.024,-0.006 -0.057,-0.001 -0.082,0 0.036,-0.12665 0.062,-0.25693 0.1223,-0.36665 l -0.163,-0.61109 -0.4074,0.0815 0,3.87019 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85551 c -0.09,0.26172 -0.1903,0.5021 -0.2852,0.69256 l 0,0.97773 0.2445,0.0815 -0.041,0.16296 -0.2037,-0.0815 0,11.12171 0.1629,-1.18143 0.1222,0.0407 0,1.01847 0.2037,0 0.4889,0.52961 c -0.1,0.0821 -0.1897,0.19341 -0.2444,0.36665 l -0.2037,-0.24443 -0.082,0 -0.163,-0.65183 0,0.57035 -0.041,0 -0.2444,0.12221 0,0.89626 0.2852,-0.12222 0,0.32591 -0.1223,-0.0407 -0.1222,0.40738 0.2445,0.0407 0.3666,-0.12221 0,0.24443 -0.3666,0 0,0.85552 -0.2852,0.0815 0,0.2037 0.2852,-0.0815 0,0.0815 c 0.414,4e-5 0.5703,-0.14215 0.5703,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1222,0.0815 -0.082,0.24444 0.1222,0 0,0.0815 0.2037,0.24444 0,0.28517 -1.0185,0 0,0.24443 3.3814,0 c 0.2346,-0.63833 0.5269,-0.97773 0.937,-0.97773 l 0,-0.40739 -0.5704,0 -0.2852,0.2037 -0.1629,0 -0.2444,-0.32592 0.082,-0.24443 -0.2445,0.0815 -0.6518,0 -0.3259,0.12222 0,-0.0407 -0.3667,-0.0815 -0.2851,0.20369 -0.4482,-0.20369 0,-0.24443 1.0593,0 0,-0.2037 -0.2037,-0.20369 0,-0.24444 0.4888,0.16296 -0.082,0.20369 0.5704,0.12222 0.2851,-0.0407 0.6111,0.2037 -0.082,0.24443 0.2852,0.0815 0.5703,-0.0407 0.6519,0.24443 0,0.2037 c -0.3219,6e-5 -0.8163,0.38651 -1.3852,1.18142 l 18.577,0 c 0.082,-0.0802 0.1634,-0.16303 0.2444,-0.24443 0.2121,0.0756 0.504,0.16494 0.7333,0.24443 l 1.4666,0 -0.2444,-0.40739 1.1407,0.0815 0.2037,0.0815 -0.041,0.16296 -0.5297,0.0815 0.7333,0 7.8626,0 0.041,-0.16295 c 0.061,0.0307 0.1356,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3037,0 0.3666,-0.24443 -0.041,0.24443 2.5666,0 0.082,-0.24443 0.2444,0.0407 -0.082,0.20369 0.4481,0 0,-1.34438 -0.082,0.24443 -0.2444,-0.0407 0.1222,-0.40738 0.2037,0.0815 0,-9.04402 -0.1222,-0.0407 0.1222,-0.57035 0,-1.71103 -0.2851,0.0815 -0.041,0.20369 0.2036,0.32591 -0.611,1.09995 -0.2037,-0.0407 0.937,-3.50354 0,-1.58881 -0.2852,0.12221 -0.041,1.05921 -0.6518,2.36286 -0.5704,0.28517 1.1815,-4.3998 0.3666,0.57035 0,-1.34439 -0.163,-0.0407 0.163,-0.57034 0,-1.83325 c -0.2597,-0.39208 -0.5239,-0.78277 -0.8148,-1.14069 l 0.8148,0.0407 0,-1.22216 -0.2037,0.85551 -0.2444,-0.0815 0.3259,-1.18142 0.1222,0.0407 0,-3.54429 -0.082,0.28518 -0.4481,-0.12222 0.5296,-2.03694 0,-7.98482 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.2037 -0.3259,-0.5296 0.082,-0.28518 0.2037,0.0407 0.8555,0.77404 0.2852,-0.16295 0.082,-0.28518 c -0.3163,-0.38756 -1.755,-1.08881 -4.3183,-2.07768 l -1.1,0 2.811,1.18143 -0.1222,0.40739 0.2851,-0.16296 0.6926,0.2037 -0.4889,0.81477 -0.2037,-0.0407 -0.1629,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40739 0.3667,-0.16295 0,-0.0407 -0.2445,-0.28517 -0.2444,-0.0815 -0.2852,0.20369 -0.2444,-0.0407 -0.6926,-0.48886 -0.5703,0.36665 -1.5481,-1.26291 -1.8332,0 -0.082,0.32591 -0.2445,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54808 0.2037,0.0407 -0.1629,0.69256 -0.4481,-0.12222 -0.082,0.2037 c 0.3276,0.0876 0.5624,0.55849 0.6925,1.38512 l -0.1629,0.69256 -0.2445,-0.0815 0.1223,-0.44813 -0.7333,-0.20369 -0.163,0.44813 0.4889,0.12221 -0.2445,0.89626 -0.4888,-0.12222 -0.2037,0.937 0.4481,0.12221 -0.1222,0.40739 -0.4481,-0.12222 -0.1223,0.40739 0.4482,0.12222 -0.163,0.69256 c -0.4096,-0.10952 -0.6971,0.12321 -0.937,0.69256 -0.022,0.0836 -0.038,0.17514 -0.041,0.24443 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0894 -0.01,-0.18893 0,-0.28517 l 0.2037,0 0,-0.20369 -0.163,-0.16296 c 0.014,-0.071 0.021,-0.12963 0.041,-0.20369 l 0.5296,0.16295 0.163,-0.65182 -0.4074,-0.61108 0.937,-1.38512 -0.2037,-0.0407 0.2852,-0.16296 0.082,-0.28517 -0.2037,-1.4666 0.6518,-0.24443 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06752 -0.199,-1.68478 -1.0592,-1.91473 l 0.2852,-0.16296 0.082,-0.24443 -1.5889,0 0,0.0815 0.6926,0.16295 -0.937,0.7333 c 0.085,-0.31634 0.049,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48887 -0.082,0.44813 -0.3667,-0.57035 0.082,-0.36665 -0.4481,0 -0.8555,3.09616 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18143 0.3667,-1.42586 -0.4889,0 -0.6111,2.36286 -0.2444,0 0.6111,-2.36286 -2.6073,0 -0.041,0.16296 0.4481,0.12221 -0.2852,1.05921 c -0.9988,-0.37943 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62502 -0.774,0.77404 -0.017,-0.069 -0.022,-0.13369 -0.041,-0.20369 l -0.041,-0.2037 0.5703,-0.0815 0,-0.28517 c 0,-0.20089 -0.2546,-0.36699 -0.774,-0.48886 l -0.041,-0.2037 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13727 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16296 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12222 -0.163,0.16295 -0.081,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48886 c 0.085,-0.17618 0.1553,-0.35747 0.2037,-0.48887 l -2.4036,0 z m 36.2576,12.83274 0,-0.93699 -0.041,0.0407 -0.163,0.61108 0.2037,0.28517 z m -34.3429,-12.75126 -0.2852,0.44813 -0.4888,0.0815 0.082,-0.28517 0,-0.12221 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12221 -0.041,0.24444 -0.4481,-0.12222 0.041,-0.24443 z m -16.2956,0.36665 0,0.48886 -0.4481,0 0.4481,-0.48886 z m 7.8219,0 0.082,0.0407 0.2037,0.89625 c -0.2225,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16295 0.1629,-0.0407 z m 1.4666,0 0.4074,0.48886 -0.4074,0 0,-0.48886 z m -2.5666,0.16295 0.082,0.28518 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1515,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2145,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.9739,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24444 -0.163,0 c 0.038,-0.0692 0.088,-0.17949 0.1223,-0.24444 z m 13.0364,0 0.2037,0.0815 -0.1629,0.65182 -0.3259,-0.57034 0.2851,-0.16296 z m 11.8143,0.0407 0.4481,0.12222 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48887 z m -5.8257,0.16296 0.2445,0.0407 -0.163,1.58881 -0.2852,0.16296 -0.1222,0.48887 -0.5296,2.52581 -0.6518,-0.65183 1.1,-2.64802 -0.2445,-0.28518 0.082,-0.20369 0.5704,-1.01847 z m 0.9778,0.0407 0.5703,0.12221 -0.2852,0.16296 -0.082,0.20369 -0.774,3.8702 -0.2852,0.16295 -0.082,1.14069 -0.2037,0.77404 -0.5703,0 0.1629,-0.57035 c 0.245,-0.0956 0.4482,-0.21288 0.4482,-0.36665 l -0.2852,-0.28517 1.3851,-5.21457 z m -17.7214,0.20369 0.2444,0 0.041,0.16296 -0.082,0.0407 -0.1222,0 -0.082,-0.2037 z m 14.5437,0.12222 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.6291,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2444,-0.0815 0.1222,-0.40739 z m -29.8209,0.0407 0.6519,0 0,0.20369 -0.6519,0 0,-0.20369 z m -2.0776,0.20369 1.0592,0 c -0.029,0.0977 -0.082,0.18869 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855,0 0,0.52961 -0.4889,0 0.4889,-0.52961 z m 24.3618,0.16296 c -0.074,0.27638 0.1417,0.51307 0.5704,0.65182 l 0,-0.52961 -0.5704,-0.12221 z m -6.0701,0.32591 0.4481,0.12221 -0.3666,1.30365 -0.4481,-0.12222 0,-1.18143 0.3666,-0.12221 z m -17.0696,0.44812 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57034 l 1.7926,-0.16296 z m 0.3667,0 0.6518,0.2037 0,0.28517 -0.8555,0 0.2037,-0.28517 0,-0.2037 z m 1.0185,0 0.041,0 0.2851,0.44813 -0.041,0.0407 -0.2851,0 0,-0.48887 z m 1.8332,0 -0.082,0.32592 -0.2852,0.0407 0.1223,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.2037 -0.4481,0.85551 c -0.076,0.61312 0.1199,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12221 -0.082,0.28517 0.2444,0.28517 -0.3666,0.12222 0.041,1.18142 -0.4889,1.79251 -0.5296,-0.12221 -0.4074,-1.30365 0.1222,-0.48886 0.2444,0.0407 -0.1222,0.48886 0.4482,0.12222 0.041,-0.20369 -0.2852,-0.81478 0.2852,-0.12222 c 0.1185,-0.44346 -0.079,-0.76489 -0.5704,-0.89625 l 0.6518,-0.28518 -0.1222,0.40739 0.4889,0.12222 0.3666,-3.21837 0.041,-0.2037 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48887 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.5296 0,-0.5296 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20541 -0.3429,0.30401 -0.5704,0.48886 l -0.2037,-0.24443 0,-0.28517 z m 1.3037,0 0.3666,0 0.4074,0 0,0.20369 -0.082,-0.0815 -0.4889,0.12221 0,0.24444 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.163,-0.28517 z m 1.1406,0 0.6111,0 -0.041,0.28517 -0.5703,0 0,-0.28517 z m 7.2923,0 0.6518,0 -0.082,0.24443 0.1222,0.44813 -0.2851,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24443 -0.2037,0.0407 -0.082,-0.28517 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.20369 -1.1,0.16296 0.1223,-0.40739 z m -12.9142,0.0815 0.2036,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.081,0.20369 0.4888,0.12222 0.041,-0.2037 -0.4481,-0.12221 z m 10.1439,0.36665 0.4889,0.12221 0.4074,0.57035 -0.6518,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.363,-0.37135 -0.2445,-0.81478 l 0.2852,-0.16296 0.041,-0.20369 0,-0.93699 z m -1.3851,0.28517 0.2445,0.0815 0.041,0.7333 -0.4482,-0.12222 0.163,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3667,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44812 z m -24.7285,0.0815 0.082,0.28518 -0.2444,0 0,-0.24444 0.1629,-0.0407 z m -8.2292,0.0407 1.0184,0 c -0.1009,0.0837 -0.1917,0.16588 -0.2851,0.24444 l -0.7333,0 0,-0.24444 z m 2.0776,0 0.4482,0 0,0.24444 -0.6111,0 0.1629,-0.24444 z m 7.8626,0 0,0.24444 -0.2036,0 -0.041,-0.16296 0.2444,-0.0815 z m 3.748,0 0.4074,0 0,0.24444 -0.4074,0 0,-0.24444 z m 1.0592,0 0.8148,0 0,0.24444 -0.8148,0 0,-0.24444 z m 22.3657,0.0407 0.4481,0.12222 0.2852,0.28517 0.082,-0.40739 0.2444,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.163,0.28517 -0.1223,0.48887 c -0.3277,-0.0875 -0.616,0.14207 -0.774,0.7333 l -0.3666,-0.61108 0.3666,-1.30365 z m -31.0023,0.0407 0.2852,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16295 -0.041,0.2037 -0.5296,-0.12222 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25431 0.6518,0.48886 l -0.081,0.12222 c 0.049,0.098 0.1129,0.18841 0.163,0.28517 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.13781 0.1679,0.27232 0.2444,0.40739 l -1.7925,0 0,-0.20369 c 0.5521,1e-4 0.8148,-0.22358 0.8148,-0.52961 l -0.3667,-0.40739 0,-0.48886 z m -9.2884,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.1629,-0.16296 z m -3.5036,0.0815 0.082,0.44813 -0.4481,0.12222 -0.041,-0.16296 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6296,0.0407 c 0.2851,1.06671 0.7124,1.54315 1.3036,1.38512 l 0.082,0.16296 -0.1629,0.24443 -0.2445,-0.12221 c -0.5964,0.73087 -0.8708,1.45177 -0.6925,2.11842 l -0.8555,-0.65183 0.611,-0.16295 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9778,-0.7333 -0.4482,-0.937 -0.041,-0.16295 0.4074,-0.12222 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12221 0.082,-0.24444 z m -14.9512,0.0815 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2445,-0.2037 z m -10.5514,0.0407 c 0.1566,0.12931 0.3292,0.24634 0.5704,0.36665 l 0,-0.16295 0.082,0.36665 0,0.0815 -0.4481,0.12222 -0.2037,-0.77404 z m 23.2212,0.0407 0.4481,0.12222 0,0.97773 -0.2851,0.12222 -0.041,0.20369 -0.163,1.4666 -0.4074,0.57034 0.2037,0.24444 -0.3259,0.20369 0.3666,0.57035 -0.2851,0.12221 -0.2445,-0.0407 -0.041,1.14069 -0.3259,1.14069 -0.4481,-0.16296 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.1629,0.0407 c 0.083,0.20378 0.1422,0.44083 0.163,0.69256 l -0.041,0.20369 -0.163,-0.24443 -0.2851,-0.0815 -0.041,0.0407 0.2444,-1.54807 0.774,-2.85173 0.4482,-0.81477 -0.2852,-1.05921 0.5296,0.16295 0.3259,-2.07768 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2852,-0.16295 -0.2037,0.0815 0.3667,0.48886 -0.4889,0.61109 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.163,0 -0.2037,0.28518 -0.2037,0 0.3667,-0.61109 1.2629,-0.20369 z m 4.8072,0 0.1629,0.65182 -0.2037,0.0407 -0.2037,-0.61108 0.2445,-0.0815 z m -7.0886,0.28517 0.2037,0 0,0.28517 -0.2037,0.24444 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.2037 z m 32.5911,0.40739 1.5073,1.34438 -0.1222,0.44813 -0.5296,-0.16296 -0.4889,1.79251 -0.2037,-0.0407 0.4074,-2.48508 -0.2851,0.12222 -0.326,-0.0815 0.041,-0.93699 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6926,-0.2037 0.041,-0.20369 z m -27.4173,0.12222 0.041,0 0.2037,0.20369 -0.163,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.20369 -0.5703,0 0,-0.20369 z m 5.4997,0 0.041,0 0,0.20369 -0.082,0 0.041,-0.20369 z m 0.5296,0.16295 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16296 l 0.4074,0.12221 c -0.1394,0.12918 -0.3455,0.16299 -0.6518,0.16296 l -0.2037,0 0,-0.20369 0.4889,-0.24444 z m -4.6442,0.0407 0.6518,0.2037 0,0.44812 c -0.414,0 -0.6518,0.1829 -0.6518,0.48887 l -0.163,0 c 0,-0.45892 -0.1313,-0.73325 -0.4074,-0.7333 l 0,-0.20369 0.5704,-0.2037 z m 11.4476,0.0407 0.3259,0.61108 -0.041,0.2037 -0.3259,-0.61109 0.041,-0.20369 z m -18.088,0.0407 0.5703,0.28517 0.6518,2.36285 0,0.0815 -0.3666,-0.5296 -0.2037,0 0.5703,0.85551 0.041,0.65183 0.2852,0.12221 -0.3667,0.57035 -1.1814,-4.3998 z m 15.44,0 0.2444,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2852,-1.09995 z m -7.0886,0.12222 0.5704,0.20369 0,0.24443 -0.7741,0 0.2037,-0.24443 0,-0.20369 z m -9.2884,0.20369 0.4888,0.48887 0.041,0.16295 -0.4888,0.12222 -0.163,-0.65182 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24444 -0.163,0.16295 0.6518,2.36286 -0.2851,-0.16296 -0.8148,-3.05541 z m -7.8219,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4443,0.2037 -0.082,0.61108 0.082,0.24443 0.2445,0.16296 c -0.776,0.20744 -1.0756,0.74803 -0.937,1.71103 l 0.3666,0.57035 -0.2037,0.0407 0.5704,0.24444 -0.163,1.30364 0.082,0.28517 0.2445,0.12222 -0.2037,0.0407 0.5703,0.85552 c -0.1409,0.11253 -0.2864,0.23951 -0.4481,0.40738 l -0.082,-0.20369 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81478 -0.4481,0.12222 -0.2037,-0.81478 0.4073,-0.12221 -0.1222,-0.44813 -0.6518,0.20369 0.082,0.44813 -0.2037,0.0407 -0.1629,-0.61108 c 0.1174,-0.74569 0.3562,-1.18391 0.6518,-1.26291 l -0.082,-0.16295 -0.4074,0.0815 -0.163,-0.61108 0.2037,-0.0407 1.3444,-2.03694 z m 31.3282,0.20369 0.2445,0.0407 0.2444,0.28517 0.2852,-0.12221 0.6925,0.16295 0.4482,2.28138 -0.041,0.20369 0.2851,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6925,2.64803 c -0.6159,-0.32291 -0.8482,-0.90564 -0.6111,-1.79251 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48886 0.082,-1.18143 -0.5704,-0.12222 -0.6925,2.68877 0.2444,0.28517 -0.3666,0.12222 -0.041,0.20369 0.2037,2.1999 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08429 -0.2445,1.50734 -0.1694,0.10755 -0.2848,0.39717 -0.4073,0.85552 l -0.326,0.12221 -0.4481,-0.12221 -0.1629,-0.937 0.5703,-0.48886 0,-0.12222 c 0.055,0.0879 0.1486,0.16719 0.2852,0.20369 l 0.2037,0.0407 0.082,-0.20369 0.2444,-1.87399 0.3666,-0.52961 0.7333,-3.62575 0.2445,-0.89626 -0.4481,-0.12222 -0.3667,1.34439 -0.3666,0.12221 0.2444,0.28518 -0.1222,0.48886 -0.5296,-0.16295 0.8147,-3.09616 z m -9.207,0.12222 0.2037,0.0407 -0.2444,0.89625 -0.2852,0.16296 -0.2037,-0.0815 0.5296,-1.01847 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81477 -0.2037,0.0407 -0.2444,-0.77404 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44812 -0.2037,0.0407 -0.041,-0.12221 c 0.028,-0.10615 0.05,-0.23044 0.082,-0.32592 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2037,0.69256 -0.2037,-0.0407 0.163,-0.69257 z m -26.5618,0.0407 0.1223,0.44813 -0.326,0.48887 -0.082,-0.36665 0.2852,-0.57035 z m 13.892,0.0815 0,0.0407 -0.3259,0.20369 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16296 0.1222,-0.0407 z m 27.1321,0.12222 0.774,0.2037 -0.041,0.24443 -0.774,-0.2037 0.041,-0.24443 z m -8.7181,0.0407 0.5703,0.16296 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.24443 z m -15.4808,0.0407 0,0.61108 0.4481,0 c 0,0.33785 0.036,0.62662 0.1222,0.81478 -0.2101,0.0426 -0.4005,0.0946 -0.5703,0.16295 l 0,-0.0407 -0.3667,-0.40739 -0.6518,0.20369 c 0,-0.11014 -0.034,-0.20771 -0.082,-0.28517 l -0.2444,-0.89626 1.3444,-0.16295 z m 2.8925,0 0.2851,0.20369 0.2037,0 1.874,-0.20369 0,0.20369 -0.2852,0.65182 c 0.3993,-0.22118 0.701,-0.47341 0.8148,-0.77403 0.071,0.0934 0.1313,0.19369 0.2037,0.28517 l -0.3666,0.0407 0,0.44812 0.4073,0 0.2445,0.28518 0.1629,-0.24444 c 0.093,0.10679 0.1891,0.22208 0.2852,0.32591 l 0.041,0.16296 -0.2037,-0.20369 -0.2444,0.12221 0.041,0.69256 -0.2444,0.12222 -0.082,0.16295 -0.6519,-0.12221 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3667,0.0815 0.041,-0.2037 -0.2852,-0.5296 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.2037 -0.082,0.16296 c -0.064,0.002 -0.1436,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.20369 -0.774,-0.20369 -0.4482,0.44812 -0.1629,-0.24443 0,-0.20369 c 0.2415,2e-5 0.4326,0.0163 0.6111,0 0.5353,-0.0491 0.774,-0.17787 0.774,-0.40739 z m 16.2955,0 0.2444,0.0815 -0.2444,0.89625 -0.2444,-0.0815 0.2444,-0.89625 z m -19.962,0.40739 0,0.44812 0.4073,0 0,-0.44812 -0.4073,0 z m -1.5481,0.0815 0.2444,0.28518 -0.2037,0.36665 -0.1629,-0.52961 0,-0.0815 0.1222,-0.0407 z m -10.5106,0.12222 0.041,0.32591 -0.163,0.0407 0.1222,-0.36665 z m 21.836,0 0.1629,0 0,0.24443 -0.1629,0 0,-0.24443 z m -16.6622,0.0407 0.5296,0.93699 0.041,0.16296 -0.2037,0.28517 0.774,1.83325 -0.5296,0.32591 -0.2851,-1.50734 -0.1223,-0.44812 -0.2444,-0.12222 -0.1629,-1.42586 0.2037,-0.0407 z m -0.8963,0.0407 1.1407,4.23684 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.12221 0.4889,-0.12222 z m 19.8806,0.0815 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44812 z m -7.7811,0.0815 0.6518,0 0,0.2037 c -0.1266,0.0362 -0.2233,0.0983 -0.3259,0.16295 l -0.3259,-0.0815 0,-0.28518 z m -9.207,0.12222 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24443 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48887 z m 5.2553,0 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48887 z m -22.8137,0.0815 0.3666,0 c -0.096,0.17535 -0.2074,0.27297 -0.3666,0.28517 l 0,-0.28517 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7258,0.0815 0.3259,0.61108 -0.1222,0.40739 -0.4482,-0.12222 0.2445,-0.89625 z m 1.0184,0.28517 0.2037,0.0407 c -0.079,0.29569 0.1603,0.56117 0.6518,0.69256 l -0.2444,0.89625 c -0.1373,-0.16028 -0.2848,-0.28993 -0.4481,-0.40738 l 0.041,-0.2037 -0.4481,-0.12222 0.2444,-0.89625 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44812 -0.1629,-0.0815 0.082,-0.40739 z m 3.3814,0 0.5703,0 -0.082,0.20369 -0.2444,0 c -0.089,-0.0653 -0.1748,-0.12662 -0.2445,-0.20369 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12221 l -0.1222,-0.0407 0.1629,-0.0815 z m -15.603,0.16295 0.082,0.16296 0.3259,2.93319 0.4074,-0.12221 -0.1222,-0.36665 0.6111,0.24443 c -0.4434,0.11852 -0.6365,0.41477 -0.5296,0.81478 l 0.2444,0.12222 -0.2444,0.73329 0.041,0.2037 0.4481,-0.12222 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44812 -0.3667,1.14069 -0.3666,-0.0815 c -0.056,0.0711 -0.069,0.13432 -0.1222,0.2037 l -0.4482,-1.58882 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28518 -0.041,-0.24443 -0.4888,0.12222 -0.082,-0.16296 0,-0.0815 0,-0.16295 c 0.3323,-0.11704 0.5134,-0.41156 0.4481,-0.937 l -0.4481,-0.77403 -0.041,-0.16296 0.5703,-0.36665 z m 31.1652,0 0.5296,0.12222 -0.2037,0.69256 -0.5296,-0.12222 0.2037,-0.69256 z m -28.9246,0.28517 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12221 -0.041,-0.16296 z m 4.7257,0 0.1223,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2036,-0.0407 z m 8.5145,0.0407 0.2037,0.0815 -0.2445,0 0.041,-0.0815 z m 16.9066,0 0.5296,0.12222 -0.1222,0.48886 0.4481,0.12222 0.163,-0.69256 0.4481,0.57034 -0.5703,0.81478 -0.163,1.87399 -0.4481,0.5296 -0.2445,-0.0407 c 0.5137,-1.92154 0.411,-2.92097 -0.2444,-3.09616 l 0.2037,-0.69256 z m -20.0435,0.0815 0.2037,0 -0.1222,0.44813 -0.163,0 0,-0.2037 0.082,-0.24443 z m 1.7925,0 0.2037,0 c 0.1368,0.16131 0.1865,0.38537 0.1629,0.65182 l -0.1222,0 -0.2444,-0.65182 z m -2.5666,0.12222 0.2037,0.36665 -0.2851,-0.0815 0.082,-0.28517 z m 12.5476,0.16295 0.2444,0.0815 0.2852,0.20369 -0.1629,0.24444 c -0.1007,-0.099 -0.2134,-0.17919 -0.326,-0.24444 l -0.041,-0.28517 z m -7.17,0.16296 0.2851,0 c 0,0.0715 0.024,0.14662 0.041,0.20369 l -0.4074,0 0.082,-0.20369 z m 0.7333,0.0815 0.4074,0.12222 -0.326,0 -0.082,-0.12222 z m -6.7219,0.12222 0.2036,0.0815 -0.082,1.22216 -0.082,0.2037 -0.2037,-0.0815 0.041,-0.48886 0.2037,0 0,-0.65183 -0.082,-0.28517 z m 14.6252,0.0407 0.3259,0.0815 -0.1629,0.65182 -0.2037,-0.0815 -0.041,-0.5296 0.082,-0.12222 z m -15.3585,0.0407 0,0.20369 -0.1223,0 0.1223,-0.20369 z m -1.4666,0.16295 0.1222,0 0.1222,0.16296 0.082,0.28517 -0.3259,-0.40739 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.2037 -0.163,0 0.041,-0.2037 z m -5.2553,0.16296 -0.041,0.24443 c -0.1413,0.67658 -0.1365,1.03083 0.1222,1.09995 l -0.2445,0.2037 -0.082,0.16295 -0.041,0.24443 -0.1222,0.0407 -0.1629,-0.57034 0.4481,-0.0815 c -0.206,-0.77058 -0.1475,-1.24297 0.1222,-1.34438 z m 1.8739,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.7333 0.2852,0.0815 -0.3259,0.12222 -0.081,0.24443 0.2444,0.28518 -0.082,0.16295 -0.4074,0.57034 0.041,0.85552 -0.6518,1.30364 0.2444,0.28518 -0.4888,-0.16296 0.3666,-1.34438 -1.1814,0.7333 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79804 -0.2037,-0.85552 l 0.2852,-0.16295 0.041,-0.2037 0.2037,-1.30364 c 0.1374,-0.12989 0.2764,-0.27148 0.4074,-0.40739 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2444,-0.5296 0.051,-0.0555 0.1128,-0.10648 0.1629,-0.16296 l 0.2445,0.0407 0.082,-0.36665 0.3666,-0.16295 -0.1629,-0.16296 c 0.072,-0.0919 0.1339,-0.19122 0.2037,-0.28517 l 0.7333,0.0407 0.1629,-0.61109 -0.4074,-0.12221 c 0.071,-0.1075 0.1351,-0.21611 0.2037,-0.32591 l 0.2852,0.0815 0.2852,-1.05921 c 0.1084,-0.19991 0.2226,-0.40489 0.3259,-0.61108 l -0.1222,-0.16295 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4888,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.2037 l 0.2444,-0.24443 z m -22.1619,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.4319,0.20369 0.4889,0.12222 -0.4074,0.93699 c -0.091,-0.13611 -0.2088,-0.26481 -0.3666,-0.36665 l 0.2851,-0.69256 z m -10.8773,0.16296 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9778,0.0407 0.4074,0.12221 -0.041,0.16296 -0.2037,0.0407 -0.163,-0.28518 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.163,0.65183 -0.2852,-0.57035 0.041,-0.16295 z m 23.9137,0.0407 c 0.4519,0.27925 0.6049,0.76827 0.4074,1.50734 l -0.5296,1.05921 c -0.1998,1.12235 -0.2915,1.89102 -0.2852,2.4036 l -0.163,-0.0407 0.041,-0.77404 0.1223,-0.48887 -0.3667,-0.77404 0.8963,-2.11842 -0.1223,-0.77404 z m -21.836,0.12222 0.2444,0 0,0.2037 -0.2444,0 0,-0.2037 z m 12.0994,0 0.041,0 -0.1629,0.57035 c -0.021,0.0768 -0.028,0.13059 -0.041,0.20369 l -0.041,0 0.2037,-0.77404 z m -19.962,0.0407 0.2037,0.0407 0.1222,0.24443 -0.3667,-0.12221 0.041,-0.16296 z m -4.1147,0.20369 0.041,0.2037 -0.2851,0.5296 -0.041,-0.16295 0.2851,-0.57035 z m 3.6258,0 c 0.1218,0.0561 0.2252,0.11427 0.4074,0.16296 l -0.082,0.36665 -0.163,-0.24443 -0.082,-0.0407 -0.082,-0.24444 z m 31.1245,0.0815 0.2444,0.0815 -0.1222,0.48887 -0.2444,-0.0815 0.1222,-0.48887 z m -25.4618,0.0815 c 0.1305,0.006 0.286,0.0201 0.4481,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69256 l -0.4481,-0.77404 c 0.047,-0.1747 0.2133,-0.25603 0.4889,-0.28517 l 0.3666,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.20369 -0.041,0 -0.3259,0 0.2037,-0.24443 z m -8.1478,0.0407 0.2852,0 -0.1223,0.5296 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5703,0 0,0.0815 -0.3666,0.57034 0.1222,0.16296 -0.6111,-0.16296 c 0.1071,-0.16058 0.1904,-0.4143 0.2852,-0.65182 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2407,0 0.4888,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.082,0.16296 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2426,-0.4948 -0.2036,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.016,-0.15376 0.041,-0.24443 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.20369 -0.2445,0 0,0.48887 0.2037,0 -0.041,0.20369 -0.3259,0.52961 0,-0.28517 -0.4888,0.12221 -0.041,-0.5296 0.2444,-0.0407 0,-0.48887 -0.2852,0.0407 -0.041,-0.24443 z m -7.6997,0.0815 0,0.77404 c -0.2652,-0.0831 -0.4074,-0.28894 -0.4074,-0.65183 0.1827,3e-5 0.3,-0.0425 0.4074,-0.12221 z m 5.5405,0 0.4074,0.12221 -0.082,0.36665 -0.4481,-0.12221 0,-0.0407 0.1629,-0.2037 -0.082,0 0.041,-0.12221 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24443 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.20369 0.2444,-0.36665 0.163,-0.28517 -0.4481,-0.12222 0.5703,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1762,0.0407 0.2852,0.0407 l 0,0.65183 -0.2444,-0.0815 -0.041,0.12221 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.2037 0.1629,0 -0.5296,0.77404 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12221 0.082,0.24444 -0.1222,0.20369 c -0.1549,0.0762 -0.2587,0.22703 -0.2851,0.44813 l -0.041,0.12221 -0.163,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43314 -0.1523,-0.79239 -0.2444,-1.05921 l 0.4481,-1.62956 z m -7.2922,0.44813 c 0.2126,0.11968 0.3124,0.32246 0.2852,0.61108 l -0.2037,-0.12221 -0.082,-0.48887 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1762,0.0407 -0.2852,0.0407 l 0,0.48886 -0.2444,0 0.082,-0.93699 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2851,0 0.1222,0.0407 0,0.40739 -0.2036,0 0,0.20369 0.082,0.36665 c -0.1679,-0.14917 -0.2705,-0.48918 -0.2852,-1.01847 z m 25.3395,0.0407 0.4482,0.12222 -0.1223,0.40738 -0.4481,-0.12221 0.1222,-0.40739 z m -33.9354,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1223,0.16295 l -0.041,-0.12221 0.163,-0.0407 z m -0.8963,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.01,-0.0447 0.028,-0.075 0.041,-0.12222 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.5177,0 0.4074,0.12221 -0.082,0.24444 -0.3666,-0.24444 0.041,-0.12221 z m 0.7333,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44812 z m 7.1293,0.0815 0.082,0.12222 0.2852,0.0815 0.082,-0.0407 -0.2037,1.34438 -0.6926,2.52581 -0.2444,0.48887 -0.082,-0.36665 0.2037,-0.28517 -0.2037,-0.2037 -0.2444,0.0815 -0.163,-0.28517 0.2852,-0.12222 0.2037,0.0407 0.041,-1.05921 0.2851,-0.97773 0.4074,0.0815 0.1223,-0.5296 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.181,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2445,0.0815 -0.082,0.24443 0,0.0407 -0.163,0.52961 -0.2037,-0.0815 0.2037,-0.81478 z m -20.2472,0.2037 0.4074,0.12221 -0.1222,0.36665 -0.2852,-0.48886 z m -10.6328,0.32591 0.041,0.16295 -0.1222,0.0407 0,-0.16295 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2036,0.0407 -0.2444,0.12222 -0.1222,0.48887 -0.163,-0.61109 0.2037,-0.48886 z m 27.4172,0 0.3667,0.0815 c -0.05,0.18576 -0.025,0.33528 0,0.44813 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44812 z m -3.9517,0.0815 0.041,0 c -0.023,0.12024 -0.051,0.23874 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2444,0.81478 -0.2037,-0.0407 0.2444,-0.81478 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4074,0.24444 l -0.163,0.32591 -0.1629,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1097,-0.0903 -0.163,-0.12222 l 0.1222,-0.36665 z m -21.9175,0.16296 0.082,0 c 0.01,0.0632 0,0.14341 0,0.20369 l -0.082,-0.20369 z m 32.4689,0 0.3259,0.5296 -0.4482,-0.12221 0.1223,-0.40739 z m -33.243,0.36665 0.041,0.12221 -0.1629,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7627,0.16295 0.2037,0.0815 -0.7333,2.81098 -0.2037,-0.0815 0.7333,-2.81098 z m 9.4514,0 -0.2037,0.81478 0,0.0815 c -0.07,0.01 -0.1707,0.0316 -0.2444,0.0407 l 0.2444,-0.89626 0.2037,-0.0407 z m 1.5888,0.16296 c 0,0.0512 0,0.10831 0,0.16295 -0.1403,0.1712 -0.5032,0.28725 -1.0184,0.40739 l 0.082,-0.24443 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2375,0.33744 0.3667,0.48886 l 0,0.12222 0.1629,0.0407 c 0.068,0.0685 0.1302,0.14363 0.2037,0.20369 l -0.1629,0.65182 -0.2037,-0.0407 c 0.071,-0.26673 -0.1677,-0.49255 -0.6111,-0.61108 l 0.2444,-0.85551 z m 1.0185,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4482,0.12222 -0.041,0.20369 -0.4889,-0.12221 0.082,-0.2037 z m -24.1989,0.0407 0.1223,0.44813 0.2444,0.89625 -0.4481,0.7333 0.3259,-0.12221 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24444 -0.2445,-0.0815 -0.082,0.44812 -0.2444,-0.0407 0.6518,-2.40359 z m -1.2221,0.0815 0.2037,0.0815 -0.1222,0.5296 -0.2037,-0.0407 0.1222,-0.57034 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24443 0.6925,0.16296 0.082,-0.2037 -0.6925,-0.20369 z m -28.6802,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.126,0.1796 -0.3024,0.32896 -0.5296,0.44812 l -0.041,-0.20369 c 0.1448,-0.11438 0.3062,-0.20677 0.4889,-0.24443 z m 13.3623,0.20369 c 0.1273,0.11381 0.2392,0.22321 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.9549,0.20369 0.041,0 0.3259,0.12222 c 0.029,0.10642 0.051,0.19752 0.082,0.28517 l -0.2037,0.77404 -0.2037,-0.0407 c 0.1427,-0.53337 0.01,-0.85798 -0.2852,-0.93699 l -0.2037,0.0815 0.041,-0.16296 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5666,0.0407 0.082,0.24444 -0.1222,-0.0407 0.041,-0.2037 z m 13.4439,0 0.2037,0 c -0.015,0.10051 -0.023,0.21902 -0.041,0.32591 l -0.163,0.16296 0,-0.48887 z m 8.5551,0 0.3667,0 -0.041,0.16296 -0.4074,-0.12222 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0185,0 0.4074,0 0,0.2037 c -0.1951,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28518 z m -19.4324,0.0815 0.1629,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8104,0.12222 0,0.5296 -0.041,0.0407 -0.041,0.16296 -0.2444,0 0.2037,-0.69256 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16295 0,0.12222 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2851,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0555,0.16295 -0.082,0.36665 -0.3667,0 -0.1222,-0.12221 0.041,-0.16296 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9331,1.01471 0.6925,1.91473 l -0.4888,-0.12222 -0.163,0.52961 0.3667,0.57034 -0.8555,1.26291 0.2037,0.0407 -0.2445,0.12221 -0.082,0.28518 0.163,1.30364 -0.5704,0.24443 0.2037,0.0407 -0.3666,0.57035 c -0.1387,0.96297 0.161,1.50359 0.937,1.71103 l -0.2445,0.16295 -0.082,0.24444 0.082,0.61108 -1.3444,-2.03694 -0.2036,-0.0407 0.1629,-0.61109 0.4481,0.0815 0.041,-0.16295 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.26291 l 0.163,-0.61108 0.2037,0.0407 -0.082,0.44812 0.6925,0.2037 0.082,-0.44813 -0.4074,-0.12221 0.2445,-0.81478 0.4074,0.12221 0.2036,-0.81477 -0.4073,-0.12222 0.082,-0.36665 0.4481,0.12222 0.082,-0.36665 -0.4074,-0.12222 0.163,-0.61108 c 0.3695,0.0988 0.5983,-0.13823 0.8147,-0.65182 0.1069,-0.4 -0.01,-0.61478 -0.4481,-0.7333 l 0.163,-0.61109 z m -24.5248,0.0407 0.4889,0.12222 -0.4074,0.57034 -0.2445,-0.0815 0.163,-0.61109 z m 23.3026,0 c 0.1377,0.0728 0.2979,0.11504 0.4481,0.16296 l -0.1222,0.40739 -0.3259,-0.52961 0,-0.0407 z m -16.7029,0.0815 0.6518,0 0.2037,0.24443 0.163,0 -0.163,0.61109 -0.6111,0 -0.2444,-0.85552 z m 5.7034,0.20369 0.082,0 c -0.036,0.16125 -0.082,0.31656 -0.1222,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.8887,0.0407 0,0.16296 -0.082,0.24443 -0.2037,0 0.041,-0.20369 0.2444,-0.2037 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12222 z m -8.6366,0.0815 0.6518,0.36665 -0.2852,1.01847 -0.2037,-0.0815 -0.2444,-0.93699 0.082,-0.36665 z m 20.899,0 0.4889,0.12222 0.3666,1.14068 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.4481,-0.12221 -0.041,0.20369 0.2444,0.7333 -0.2444,0.12222 c -0.1069,0.40003 0.086,0.69626 0.5296,0.81478 l -0.5703,0.24443 0.082,-0.36665 -0.4074,-0.12222 -0.3259,2.9332 -0.082,0.16296 -0.5704,-0.32591 0.082,-0.2037 0.4074,-0.77404 c 0.069,-0.55307 -0.1193,-0.87895 -0.4889,-0.97773 l 0.1223,-0.36665 0.4888,0.12222 0.041,-0.24444 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09995 0.4482,-1.58881 z m -18.9843,0.0407 0.4074,0.12221 -0.041,0.2037 -0.4074,-0.12222 0.041,-0.20369 z m 11.2032,0 0.1629,0 c 0.066,0.0584 0.1536,0.1174 0.2445,0.16295 l -0.041,0.12222 -0.082,0.28517 -0.2852,-0.5296 0,-0.0407 z m -19.9621,0.0407 0.3259,0.48886 -0.2444,-0.24443 -0.2037,-0.0407 0.1222,-0.20369 z m 1.1,0.0815 0.1629,0.0407 0,0.16296 -0.1629,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0837,0 c 0.044,0.10287 0.088,0.18378 0.163,0.2037 l 0.2037,0.0407 0,0.44812 -1.711,6.35527 -0.4889,-0.12222 0.2852,-0.12222 0.041,-0.20369 0.6925,-3.4628 0.2852,-0.12222 0.041,-1.05921 0.4889,-1.95547 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.163,-0.57035 0.041,-0.0407 z m -15.6437,0.12222 0.041,0.44813 -0.1222,0.0407 -0.082,-0.32591 0.1629,-0.16296 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1346,0.0336 0.3236,0.0612 0.4888,0.0815 l -0.1222,0.48886 -0.4481,-0.16295 0.082,-0.40739 z m -20.9806,0.32591 0.4889,0.12222 -0.082,0.20369 -0.163,1.38512 c 0.01,-0.18441 -0.023,-0.35229 -0.082,-0.57034 l -0.2036,-0.81478 0.041,-0.32591 z m 3.2999,0.0407 0.4481,0.0815 c -0.1069,0.39998 -0.01,0.69501 0.2852,0.77404 l -0.041,0.20369 c -0.4434,-0.11854 -0.7027,-0.10372 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61109 0.3666,-0.57034 z m 16.8251,0.0407 0.2852,0 -0.082,0.24443 -0.2037,0 0,-0.24443 z m -13.7697,0.16295 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12221 0.2444,-0.97774 z m 20.125,0.2037 0.4481,0.16295 -0.041,0.16296 -0.4888,-0.12222 0.082,-0.20369 z m 3.0962,0 0.2037,0.0407 -0.4482,0.93699 -0.2037,-0.0407 0.2037,-0.81478 0.2445,-0.12221 z m -19.514,0.12221 0.937,0.0407 -0.1222,0.57035 -0.9777,0 0.1629,-0.61109 z m 8.5959,0.16296 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.20369 -0.2852,0 0,-0.20369 z m 2.3629,0 0.3259,0 0,0.20369 -0.3667,0 0,-0.12221 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.5296 -0.2852,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1327,-0.43445 0.163,-0.61108 z m -4.3184,0.16295 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.306,0 0.2037,0.0407 c -0.107,0.40001 -0.01,0.69504 0.2851,0.77404 l -1.4258,3.50354 0.2037,0.24444 -0.041,0.20369 -0.5296,0.89626 -0.2037,-0.0407 0.1629,-1.42586 0.2444,-0.12222 0.1223,-0.44813 0.6925,-3.42206 0.2852,-0.2037 z m -35.3614,0.12222 0.1222,0.85552 0.2037,0.12221 c -0.012,0.0965 -0.014,0.18349 -0.041,0.28518 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.1372 0.041,0.2037 l -0.3666,0.16295 c -0.01,-0.0435 -0.032,-0.0797 -0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 0.163,-1.34438 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6925,0.0815 0.1222,-0.44813 z m -4.8071,0.24443 0.2036,0.0815 -0.1629,0.52961 -0.2037,-0.0407 0.163,-0.57035 z m 28.9653,0 0.2037,0.0407 -0.2852,1.01847 -0.2037,-0.0815 0.2852,-0.97774 z m -20.4917,0.12222 0.3667,0.52961 -0.163,0.61108 -0.2037,-0.32591 -0.4074,-0.12222 c -0.1069,0.40001 -0.412,0.56666 -0.8555,0.44813 0.107,-0.40003 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12221 0.1629,0.24444 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8366,0.20369 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8962,0.24444 -0.4481,1.75177 c -0.2955,-0.079 -0.3768,-0.54439 -0.1629,-1.34438 l -0.4482,-0.0815 0.163,-0.57035 z m -6.1516,0.0407 0.2852,0.52961 -0.041,0.20369 -0.2852,-0.57034 0.041,-0.16296 z m -28.5579,0.0815 -0.2037,1.62956 -0.8148,0.24443 0.2444,-0.89626 c 0.4491,-0.22295 0.7309,-0.54686 0.7741,-0.97773 z m 0.6925,0 0.2445,0.0815 -0.082,0.36665 -0.2852,-0.0815 0.1222,-0.36665 z m 21.8768,0.0407 0.163,0.0407 0,0.24443 -0.4074,0 0.2444,-0.28517 z m -9.5329,0.0407 0.2037,0 0.163,0.24443 -0.2852,0 -0.082,0 0,-0.0407 0,-0.20369 z m -6.9663,0.24443 0.4888,0.12222 -0.082,0.24443 -0.5296,0.937 -0.1629,-0.24444 -0.2037,-0.0815 -0.5296,0.28518 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.163,-0.24444 -0.2037,-0.0407 -0.2444,0.12222 0.2037,-1.62955 0.6111,0.16295 0.1222,-0.40739 c 0.739,0.19754 1.156,0.0741 1.2629,-0.32591 z m 2.8517,0.12222 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1223,-0.40739 z m 6.6404,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.44812 z m -9.2884,0.12221 0.2037,0.0815 -0.2445,0.0815 0.041,-0.16296 z m -0.041,0.28517 0.1629,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.7252,0.0815 c 0,0.20654 -0.13,0.30826 -0.326,0.36665 l -0.5296,0.0407 0,-0.16295 0,-0.0407 0.8556,-0.2037 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1748,0.11085 0.2037,0.2037 l -0.2445,0 0,-0.2037 z m 1.548,0 0.4074,0 0.082,0.12222 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.20369 -0.2037,-0.20369 -0.4074,0 -0.1629,-0.24444 0.1222,-0.44812 c 0.1892,0.0505 0.3495,-0.044 0.4889,-0.24444 z m 1.2222,0 0.3259,0 c 0.015,0.0191 -0.011,0.0592 0,0.0815 -0.099,0.33787 -0.3273,0.59857 -0.6518,0.7333 l -0.1222,-0.0407 0.4481,-0.77404 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.12222 c 0.2001,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1222,0.44812 -0.4074,-0.12221 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57034 0,-0.57034 z m -11.9772,0.16295 -0.082,0.36665 0.4074,0.12222 0.1222,-0.36665 -0.4482,-0.12222 z m 4.9701,0.0407 0.6926,0.2037 -0.1223,0.36665 0.4482,0.12221 0.1629,-0.61108 0.3259,0.36665 c -0.3477,0.17231 -0.5886,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.088,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44386 -0.02,-0.72709 -0.4074,-0.81477 l -0.2036,-0.0407 c 0.071,-0.11464 0.1184,-0.28147 0.1629,-0.44813 z m 16.9066,0 0.4074,0.12222 -0.082,0.24443 -0.4074,-0.12222 0.082,-0.24443 z m -14.4215,0.2037 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4481,0.0815 -0.082,0.20369 -0.4074,-0.12222 0.041,-0.16295 z m 20.1657,0 0.163,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24443 0.2037,0.0407 c 0.1185,0.0317 0.2232,0.0419 0.3259,0.0407 -0.1474,0.0926 -0.295,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3877,0.0877 0.6346,0.21897 0.7741,0.44813 l -0.4889,0.24443 0.4074,0.0815 0.082,-0.28518 c 0.1221,0.22482 0.1522,0.50258 0.041,0.85552 l 0.6518,0.16296 -0.3666,1.09995 -0.6111,-0.12222 0,2.11842 -1.3444,1.14069 0.2037,0.32591 -1.7518,2.40359 0.4481,-0.12221 0.2445,0.0815 -0.1222,0.40739 -0.2852,-0.0407 -0.2852,-0.32591 -0.2852,-0.0407 -0.1222,0.48887 -0.2851,-0.0815 2.485,-7.78112 0.2445,-0.0407 -0.2852,0.97773 0.6518,0.12222 0.4074,-1.30364 -0.4481,-0.0815 0.041,-0.12222 -0.2037,-0.0815 -0.2852,0 0.041,-0.12221 0.2852,-0.0407 0.082,-0.2037 -0.2445,-0.0815 0.163,-0.57035 -0.2037,-0.28517 0.082,-0.20369 0.2852,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12221 -0.163,-0.16295 z m 7.8626,0 0.041,0.16295 -0.2852,-0.0815 0.2445,-0.0815 z m -20.0435,0.12221 0.4481,0.77404 -0.3259,0.16296 -0.163,-0.0407 0.041,-0.89626 z m -0.6926,0.0407 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 z m 19.8806,0.16296 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12221 z m -1.3851,0.12221 0.082,0.12222 0,0.28517 -0.4482,-0.12221 0.163,0 0.2037,-0.28518 z m 3.8702,0.12222 0.2444,0.0815 0,0.28517 0,0.65182 0,0.12222 -0.3259,0.12222 -0.4074,-0.0815 0.2852,-1.14069 0.041,0 c 0.064,-0.008 0.1027,-0.0322 0.1629,-0.0407 z m -25.3804,0.12222 0.3667,0.48886 -0.4889,-0.12221 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12221 -0.041,0.2037 -0.774,0.0815 -0.2037,-0.0815 0,-0.0407 1.0184,-0.16296 z m 6.4367,0 -0.041,0.2037 0.4074,0.0815 0.041,-0.16295 -0.4074,-0.12222 z m -27.1728,0.24444 0,0.20369 -0.4074,0.20369 0.3259,0.32592 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32592 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.1369,0 0.3667,0.0815 -0.2445,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6067,0.0815 0.2037,0.0407 -0.3667,1.34438 c -0.019,-0.29822 -0.091,-0.48679 -0.2444,-0.57034 l 0.041,-0.32591 0.3666,-0.48887 z m 10.3069,0.0815 0.2444,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.163,-0.48887 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24443 0.041,0.16296 c -0.01,0.1969 0.032,0.3372 0.1223,0.44812 l 0,0.0815 -0.163,0 -0.4074,0.44813 -0.2037,0 0.2445,-0.85552 0.1629,-0.28517 -0.041,-0.0407 0.082,-0.24443 z m 1.3851,0.0407 0.2445,0.28517 0,0.28517 c -0.1626,-0.11746 -0.281,-0.25346 -0.4074,-0.36665 l 0.1629,-0.20369 z m -7.6996,0.20369 0.2852,0.0407 -0.163,0.48887 -0.2444,-0.0815 0.1222,-0.44813 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16295 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44813 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6518,0.81478 0.3666,0.0815 -0.4481,0.12222 -0.082,0.24443 0.2852,0.32591 -0.041,0.2037 -0.5703,0.61108 0.082,0.97773 -0.8556,1.42586 0.2852,0.28518 -0.6111,-0.12222 0.4482,-1.54808 -1.5074,0.85552 0.2852,0.28517 -1.0185,0.44813 c -0.1111,-0.21926 -0.218,-0.41748 -0.3259,-0.65182 0,-0.0107 0.01,-0.03 0,-0.0407 l 0.1222,-0.77404 0.2852,0.0815 0.6926,0.44813 c -0.2006,-0.67952 -0.5593,-1.09062 -1.1407,-1.22217 l 0.2037,-0.69256 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 -0.082,-0.0407 c 0.068,-0.22573 0.1079,-0.44976 0.1629,-0.65182 l 0.163,-0.12222 0.041,-0.20369 -0.041,-0.12222 c 0.059,-0.23983 0.045,-0.41041 0.082,-0.61108 0.2165,-0.0412 0.45,-0.15497 0.6925,-0.36665 -0.087,0.52224 -0.036,0.83279 0.2445,0.89625 l -0.3259,0.2037 -0.041,0.0815 c -0.1805,0.11243 -0.3752,0.2435 -0.5296,0.36665 l -0.041,0.24444 0.4074,0.12221 -0.326,1.6703 0.5704,0.12221 0.1222,-0.40738 0.4481,-0.2037 -0.2851,-0.28517 -0.2852,-0.0815 0.082,-0.20369 1.5073,0.12221 0.2037,-0.69256 -0.5296,-0.12221 0.1222,-0.40739 0.5704,0.12221 0.3666,-1.14068 0.2445,-0.16296 -0.2037,-0.0407 0.4888,-1.54807 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36664 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.163,0.24443 0.2037,0.0815 0.3259,-0.12222 -0.041,0.16296 c -0.3962,0.0368 -0.7256,0.11789 -0.9777,0.20369 l -0.041,0 -0.163,-0.0407 0.2852,-0.44812 0.2444,-0.0815 z m -12.0179,0.0815 0.6111,0.12221 -0.1223,0.40739 -0.4888,-0.5296 z m 3.9516,0.12221 0.326,0.0815 -0.041,0.16295 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8104,0.0815 0.2851,0.0815 -0.082,0.61108 -0.3666,0.12222 0.041,-0.40739 0.1222,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1223,0.36665 -0.2036,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4073,0.12221 -0.082,0.44813 -0.4073,-0.24443 0.082,-0.32591 z m -26.3581,0.0407 0.4074,0.12221 -0.082,0.2037 -0.4074,-0.12222 0.082,-0.20369 z m 1.6703,0 0.2037,0.24443 -0.041,0.20369 -0.3259,-0.32591 0.1629,-0.12221 z m 18.1695,0.0407 c 0.1619,0.0875 0.2758,0.18386 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.20369 l -0.5296,0 c 0.031,-0.17321 0.06,-0.33608 0.082,-0.48886 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.20369 -0.082,0.57035 -0.041,0.24443 -0.2851,-0.0815 0.041,-0.61108 0.3666,-0.12222 z m -3.2998,0.0815 0.2444,0.0407 -0.1222,0.48887 -0.2852,-0.0407 0.163,-0.48887 z m 10.7143,0.0407 0.7333,0.16296 0,0.0815 -0.082,0.24444 -0.082,0.12221 0,0.16296 0,0.0407 -0.1222,0.28517 -0.082,0 -0.2037,-0.28517 c 0.017,-0.32331 -0.065,-0.5992 -0.1629,-0.81478 z m 20.0028,0 c -0.1782,0.66667 0.096,1.38755 0.6926,2.11842 l 0.2444,-0.12221 0.163,0.24443 -0.041,0.16295 c -0.2464,-0.0658 -0.4958,0.0124 -0.6926,0.16296 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3667,0.12222 c 0.1402,-0.44387 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2851,-0.20369 c 0.2164,-0.51357 0.4452,-0.70986 0.8147,-0.61108 l 0.1223,-0.40739 -0.6111,-0.16296 0.8555,-0.65182 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44812 -0.2852,-0.57034 0.082,-0.36665 z m -17.9658,0.0815 0.2851,0.0815 -0.1222,0.40738 -0.2444,-0.32591 0.082,-0.16295 z m -14.2586,0.0407 0.2851,0.0407 -0.082,0.20369 c -0.113,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.7659,0 0.7333,0 -0.082,0.20369 -0.6926,0.0815 c 0.022,-0.10672 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6769,0 0.2037,0.0407 -0.2037,0.81478 -0.2037,-0.0407 0.2037,-0.81478 z m -28.4358,0.16296 0.5704,0.12222 -0.2445,0.69256 -0.3666,-0.61109 0.041,-0.20369 z m 2.1592,0.0407 -0.082,1.14069 0.6111,0.16295 0.082,-1.18142 -0.6111,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40738 z m -13.4438,0.0407 0.1222,0 0.2852,0.7333 -0.1222,0.16296 -0.163,0 -0.2037,-0.61108 c 0,-0.0113 -0.01,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13406 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.081,0.48887 -0.3259,0 0,-0.48887 z m 4.0332,0 0.2444,0.0407 -0.041,0.16296 -0.2444,-0.0815 0.041,-0.12222 z m -25.7062,0.0815 0.082,0.0407 -0.041,0.2037 -0.082,-0.0407 0.041,-0.2037 z m 38.1723,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.20369 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28517 z m -10.918,0.24443 c 0.2732,-0.0456 0.6795,-0.0134 1.1814,0.0407 l -0.1222,0.40739 c -0.3875,-0.0877 -0.75,0.1822 -0.937,0.77404 l -0.5703,-0.89626 c 0.053,-0.16645 0.1749,-0.28028 0.4481,-0.32591 z m 14.0957,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.774,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.1549,0.0407 0.4888,0.12222 -0.2852,1.01847 -0.3666,-0.48887 0.163,-0.65182 z m -17.9659,0.0407 0.2444,0.0407 -0.2851,0.0815 0.041,-0.12221 z m 10.8366,0 0.2036,0.0407 -0.041,0.12221 -0.2444,0.12222 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.5736,0.12221 -0.1222,0.0815 -0.082,0.16296 0.2037,0.24443 0,-0.48887 z m -13.8105,0.0815 0.4074,0.0815 -0.3259,0.44813 -0.3259,-0.0815 -0.041,-0.16296 0.2851,-0.28517 z m -10.4291,0.0407 0.1222,0.0815 0,0.24443 -0.163,-0.0407 c 0.032,-0.10244 0.017,-0.18858 0.041,-0.28517 z m 13.8512,0.0407 0.6111,0.52961 0.041,0.0407 -0.1223,0.61109 c -0.1737,-0.13018 -0.3351,-0.28386 -0.4888,-0.36665 -0.043,-0.2456 -0.071,-0.51516 -0.041,-0.81478 z m -8.5552,0.0407 0.3667,0 0,0.24443 -0.3667,0 0,-0.24443 z m -16.4585,0.0815 0.163,0.0407 -0.1223,0.40738 -0.2851,-0.0815 0.082,-0.28518 0.1629,-0.0815 z m 4.1961,0.20369 0.5296,0.12222 0,1.18142 c -0.3391,-0.0767 -0.5209,-0.50904 -0.5296,-1.30364 z m 1.7925,0.16296 -0.2444,0.69256 0.6518,0.16295 0.2037,-0.69256 -0.6111,-0.16295 z m 3.0147,0.24443 c 0.5369,0.1214 0.591,1.23746 0.163,3.29985 -0.1491,0.24871 -0.3559,0.70204 -0.5704,1.14069 l -0.5703,-0.12222 -0.5296,-1.34438 c 0.3877,0.0877 0.5931,-0.0857 0.7333,-0.52961 l 0.082,-1.18143 0.2037,0.24444 0.6518,0.16295 -0.163,-1.67029 z m 9.6959,0.0407 0.1222,0.12222 -0.2445,0.28517 -0.1222,0.44812 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44813 0.082,-0.12222 0.2445,0.24444 0.3666,-0.44813 z m 5.3775,0 c 0,0.306 -0.1563,0.44815 -0.5704,0.44813 l 0,0.20369 0.4074,0 -0.3666,0.65182 -0.4074,-0.0815 0.082,-0.0815 0,-0.28518 -0.041,-0.0407 0.4074,-0.77404 c 0.1595,-0.009 0.3126,-0.0407 0.4888,-0.0407 z m -13.4438,0.0407 0.2851,0.0407 -0.4481,1.2629 -0.082,0.32591 c 0.198,0.0814 0.3666,0.1667 0.5296,0.24444 l -0.2444,0.44812 -0.1223,-0.20369 -0.3259,0.16295 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.27251 0.2037,-0.48887 l -0.2037,0 0.163,-0.48887 0.041,0.0407 0.2851,0 0.163,-1.30364 z m -8.1886,0.0815 0.5704,0.12221 -0.163,0.40739 -0.4074,-0.5296 z m 13.1587,0.0815 0.082,0.0815 -0.163,-0.0407 0.082,-0.0407 z m 4.3591,0 0.3259,0 c -0.046,0.25428 -0.075,0.44865 -0.082,0.65182 l -0.6111,0 0.082,-0.57034 0.2852,-0.0815 z m -3.1369,0.0815 0.082,0.48887 c -0.2043,-0.10677 -0.3489,-0.235 -0.4482,-0.40739 l 0.3667,-0.0815 z m -1.7518,0.0815 -0.1222,0.48886 -0.163,0 0,-0.40738 0.2852,-0.0815 z m 18.0066,0.0407 0.2037,0.0407 -0.163,0.65182 -0.2037,-0.0815 0.163,-0.61108 z m 0.6518,0 0.4889,0.12221 -0.4074,1.4666 -0.163,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2444,0.0407 l 0,-0.36665 0.3259,-1.22216 z m -21.225,0.0407 0.1223,0 0,0.0407 -0.1223,-0.0407 z m 3.5036,0.12221 c 0.081,0.0361 0.1343,0.0796 0.2037,0.12222 l -0.2445,0.0407 0.041,-0.16296 z m -12.1809,0.0815 0.2851,0.0407 -0.2851,0.89625 -0.2852,-0.0407 0.2852,-0.89626 z m 1.7925,0.16296 -0.1222,0.44812 0.611,0.12222 -0.4888,-0.57034 z m 19.5954,0 c 0.045,0.041 0.1551,0.11945 0.2037,0.16295 l -0.082,0.52961 -0.8963,2.85172 -0.5703,0.81477 0.3666,1.05922 -0.6518,-0.16296 -0.3667,2.07768 -0.5296,-0.12221 0,-0.97774 0.3259,-0.12221 0.082,-0.2037 0.163,-1.4666 0.4889,-0.57034 -0.1222,-0.12222 c 0.028,-0.0546 0.041,-0.12719 0.041,-0.20369 l 0.2036,-0.12222 -0.4073,-0.57034 0.3666,-0.12222 0.2444,0.0407 0.082,-1.14069 0.3667,-1.14069 0.5296,0.12222 0.163,-0.61108 z m 1.2629,0.0815 0.1222,0.16296 -0.163,-0.0407 0.041,-0.12222 z m 1.8332,0.12222 0.082,1.62956 0.4889,0.12221 0.2037,-0.20369 -0.2445,0.81477 c -0.1146,-0.18977 -0.1569,-0.28132 -0.2851,-0.48886 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4481,-1.26291 z m 0.5296,0 0.3667,0.0815 0,0.0815 -0.2445,0.36665 -0.2444,-0.0815 0.1222,-0.44813 z m 3.7887,0.16296 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40738 z m 1.7926,0.24443 0.2036,0.0815 0,1.05921 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.1629,0.12221 l -0.3667,-0.0815 0.326,-1.22217 z m -32.1023,0.0407 0.2445,0.0815 -0.9778,3.09615 -0.2444,-0.0407 0.9777,-3.13689 z m 29.5764,0.16295 0.082,0.0407 -0.1629,0.61109 -0.2037,-0.0407 0.1222,-0.44813 0.163,-0.16296 z m -14.0141,0.16296 0.2037,0 0,0.48887 -0.2037,0 0,-0.48887 z m 11.692,0.0815 0.2037,0.0815 0.041,0.24444 -0.2852,-0.2037 0.041,-0.12221 z m -24.2803,0.0815 -0.163,0.44813 0.6111,0.16296 0.1629,-0.48887 -0.611,-0.12222 z m 27.132,0.0407 0.2037,0.0407 0.041,0.69256 -0.4073,-0.12221 0.1629,-0.61109 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65182 -0.2444,-0.0815 0.1629,-0.61109 z m 31.5727,0.2037 0.4073,0.12221 -0.082,1.05921 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14069 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5547,0.24443 0.041,0 0,0.44813 -0.2037,0 0.163,-0.44813 z m -5.5405,0.0407 0.6926,0.16295 -0.5704,1.18143 -0.3259,0.44813 -0.082,0 0.2037,-0.61108 0,-1.05921 c 0.035,-0.0284 0.048,-0.0738 0.082,-0.12222 z m 5.9479,0.20369 0.4074,0 0,0.48887 0.2444,0 0.041,-0.0407 -0.041,0.28517 -0.3259,0.0815 -0.041,-0.12222 0.041,-0.20369 -0.3666,-0.0815 -0.163,0.0407 c 0.1408,-0.12156 0.2037,-0.25688 0.2037,-0.44813 z m 13.8919,0 0.2445,0.0407 0.1222,0.7333 -0.082,0.24443 -0.4074,-0.61108 0.1222,-0.40739 z m -11.8142,0.2037 0.082,0 -0.2037,0.89625 -0.082,0.0407 -0.2037,-0.20369 c -0.1035,0 -0.1645,0.009 -0.2444,0.0407 l 0.2036,-0.65183 0.4482,-0.12221 z m 0.774,0 0.4889,0 0.1629,0.0407 -0.2444,0.77403 -0.5296,0.32592 -0.2444,0 0.082,-0.2037 0.1629,0 0,-0.20369 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36665 z m 2.8517,0 0.6519,0 -0.082,0.20369 -0.6111,-0.12222 0.041,-0.0815 z m -22.5286,0.16295 0.6519,0.16296 -0.4889,0.61108 -0.3667,-0.0815 0.2037,-0.69256 z m 14.9512,0.12222 0.2037,0 0.3666,0.0815 -0.4073,0.20369 -0.041,0.2037 0.041,0.12221 -0.163,0.0407 -0.2037,0 0.2037,-0.65182 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.20369 -0.2037,-0.0407 0.041,-0.20369 z m -18.8214,0.16295 0.2445,0.0407 -0.041,0.2037 -0.2852,0.0407 0.082,-0.28518 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2444,-0.0815 0,-0.0407 z m 6.1516,0.2037 0.6518,0.12221 0.2852,0.85552 c 0.027,0.314 0.036,0.61618 -0.041,0.93699 l -0.2037,-0.0815 0.163,-0.44813 -0.5704,-0.12222 -0.041,0.2037 0.3259,0.81477 -0.3259,0.12222 c -0.1051,0.33294 -0.023,0.60721 0.2852,0.77404 -0.04,0.10991 -0.074,0.22 -0.1222,0.32591 l -0.2445,0.0815 0.1223,-0.40739 -0.5704,-0.12222 -0.2444,1.75177 c -0.1708,0.17433 -0.368,0.37122 -0.5704,0.52961 l 0.2037,-0.28517 c 0.09,-0.61376 -0.1265,-0.99034 -0.6111,-1.09995 l 0.1223,-0.40739 0.611,0.12222 0.1223,-0.28518 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18142 0.5296,-1.79251 z m -27.3765,0.0407 0.8148,0.40739 -0.3259,1.09994 -0.2852,-0.0815 -0.3259,-1.01847 0.1222,-0.40739 z m 2.4851,0.0407 0.5703,0.12221 -0.082,0.2037 -0.5296,-0.12222 0.041,-0.20369 z m 32.0207,0.12221 0.2852,0.0407 -0.2037,0.69256 -0.2852,-0.0407 0.2037,-0.69256 z m -23.3026,0.0407 0.2037,0 0,0.2037 -0.2445,-0.0407 0.041,-0.16296 z m 10.144,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8142,0.28517 -0.3666,1.34439 -0.041,0 0.4074,-1.34439 z m -11.4883,0.0815 0.2444,0.0815 -0.082,0.20369 -0.2852,0.12222 0.1222,-0.40739 z m 10.3069,0 0.041,0 c 0.027,0.19875 0.01,0.41807 -0.041,0.65182 l -0.163,-0.0407 0.163,-0.61108 z m 1.5888,0 0.1222,0.0407 0,0.20369 -0.1629,-0.0407 0.041,-0.2037 z m -16.3363,0.12222 0.163,0 -0.4481,0.44812 -0.2037,0 0.4888,-0.44812 z m 3.1369,0 0.2852,0 -0.082,0.44812 -0.3259,0 0.1222,-0.44812 z m -22.4471,0.20369 0.082,0.12222 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5297,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12222 0.082,-0.28517 z m -18.9028,0.0815 0.2037,0.0407 0,0.24443 c -0.066,-0.0966 -0.1383,-0.18401 -0.2037,-0.28517 z m 10.7143,0.20369 -0.082,0.28518 -0.041,0.0815 -0.041,0.12222 -0.1629,-0.20369 0.3259,-0.28518 z m 19.7176,0 0.2037,0.0407 -0.082,0.16296 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.2037 z m -4.1553,0.0407 0.6111,0.12222 -0.081,0.24443 -0.6111,-0.16295 0.082,-0.2037 z m 7.9441,0 0.1629,0.0407 -0.2852,0.97773 -0.1222,-0.0407 0.2445,-0.97774 z m -29.4542,0.0815 1.2221,0.0815 -0.2037,0.61108 -1.2629,0 0.2445,-0.69256 z m 10.918,0.0407 0.6518,0 0,0.20369 -0.1222,0 -0.6111,-0.16295 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.2993,0.0815 0.2852,0.40739 -0.2852,0.44812 -0.2444,-0.0407 0.2444,-0.81477 z m 1.1407,0.32591 0.1222,0.61108 -0.2852,-0.0815 0.163,-0.5296 z m 4.1554,0.0407 0.1222,0 c -0.064,0.20395 -0.057,0.39208 0,0.5296 l -0.041,0 -0.1222,0.40739 0.041,0.89626 -0.4074,0.48886 -0.2037,-0.0407 0.3259,-1.18142 -0.4481,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.081,-0.28517 z m -17.2326,0.0407 0.3667,0 0,0.28517 -0.2445,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.7741,0 0.4074,0 -0.163,0.57034 -0.2444,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44812 z m 2.0369,0 0.4074,0 -0.1222,0.69256 c -0.146,0.15267 -0.3488,0.24964 -0.5704,0.32591 l -0.611,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.414,0 0.5703,-0.19281 0.5703,-0.65182 z m -22.4471,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7702,0.0407 0.8148,0.2037 -0.082,0.20369 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1223,-0.40739 z m 21.4287,0 0.2852,0.16296 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.32591 z m -2.3221,0.0815 0.2851,0.0815 -0.2851,0 0,-0.0815 z m -14.2994,0.36665 0.4889,0.52961 -0.2037,0.65182 -0.041,0 -0.2444,-0.32591 -0.5296,-0.12222 c -0.048,0.151 -0.1392,0.2794 -0.2445,0.36665 l -0.8555,-0.24443 c -0.047,-0.23182 -0.2221,-0.40089 -0.6111,-0.48887 l 0.041,-0.20369 0.5704,0.12221 0.2037,0.24444 c 0.1052,-0.3329 0.5689,-0.44606 1.4258,-0.52961 z m 3.1777,0.32591 0.3666,0.44813 -0.6518,-0.12222 0.2852,-0.32591 z m 21.673,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.3443,0.12222 0.2036,0.36665 -0.041,0.20369 -0.2444,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.20369 z m -25.91,0.40739 0.2445,0.0407 -0.1223,0.40738 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5073,0.0815 0.2037,0.0407 -0.041,0.12222 c -0.061,-0.0423 -0.1022,-0.11767 -0.163,-0.16296 z m -3.9109,0.0815 c 0.1983,0.0449 0.3656,0.10693 0.5296,0.12222 l 0.4888,0.61108 0,-0.48886 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12222 0.1559,0.20014 0.3052,0.42706 0.4889,0.65182 l -0.3259,0.44813 -0.1222,-0.12221 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28517 0.041,0.61109 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4889,-0.48887 l 0.082,-0.20369 -0.3666,-0.0815 c -0.1552,-0.17217 -0.3026,-0.34479 -0.4482,-0.52961 l 0.6519,0.12222 0.1629,-0.48887 z m 11.7328,0.24444 0.4481,0 0,0.48886 -0.4481,0 0,-0.48886 z m 11.692,0 0.163,0 0,0.12221 -0.163,-0.12221 z m -4.4405,0.0407 0.1629,0.28518 -0.041,0.16295 -0.9777,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.1794,-0.0411 0.3596,-0.19639 0.4889,-0.40739 l 0.3666,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.1569,0.22678 0.1629,0.36665 l -0.6925,0 0.1629,-0.28517 0.3667,-0.0815 z m 17.1103,0.0407 0.163,0.0407 -0.041,0.16296 -0.163,-0.0815 0.041,-0.12222 z m -21.1435,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.1547 0.2445,0.28517 l -0.3667,0 0,-0.28517 z m 11.6921,0.44813 0.5296,0.12221 -0.082,0.24444 -0.5296,-0.12222 0.082,-0.24443 z m -13.0365,0.0815 0.163,0.12221 -0.081,0.2037 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2445,0.0407 0.1222,0.0815 0.1629,0 -0.082,0.24443 -0.3666,0.2037 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.2037 -0.1222,-0.28517 0,-0.0815 z m 25.4211,0.0407 0.1222,0.44813 -0.1222,0.28517 0,-0.7333 z m -16.1734,0.16296 -0.041,0.20369 -0.041,0.48887 -0.937,-0.12222 -0.082,-0.0815 0.7741,-0.36665 -0.3667,-0.0815 0.6926,-0.0407 z m -3.5035,0.0407 -0.041,0.12221 -0.2852,-0.0815 0.3259,-0.0407 z m 4.7664,0 0.4482,0.0815 0,0.0407 0,0.2037 c -0.1905,-3e-5 -0.299,0.0478 -0.4074,0.12221 l -0.041,-0.44812 z m -2.5665,0.0407 -0.1222,0.44812 -0.6111,-0.0815 -0.2444,-0.24443 -0.082,0.2037 -0.2852,-0.0407 0.082,-0.24444 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2852,0 0.7333,-0.0407 z m 3.7887,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.163,0.24444 0.2852,0 0.1629,-0.12222 0.2852,0.28517 -0.3259,0.36665 c -0.7619,0.018 -1.1994,0.12476 -1.2629,0.32591 l -0.082,0.2037 0.2851,0.0815 0.5297,0 -0.2445,0.28517 c -0.3067,1e-5 -0.7246,-0.1575 -1.1814,-0.36665 l 0.1222,-0.32591 -0.3666,-0.0815 -0.3259,0.16295 c -0.3254,-0.1839 -0.6736,-0.42524 -1.0593,-0.69256 0.53,0.11989 0.9409,0.021 1.2222,-0.28517 0.452,0.0971 0.8964,0.16296 1.3851,0.16296 l 0.082,0 0.163,0.0407 0.041,-0.16296 0.1222,-0.12222 z m 1.9148,0.0815 c 0.012,0.27819 0.175,0.47169 0.611,0.57035 l -0.041,0.12221 -0.1629,0.0815 c -0.4016,-0.0334 -0.7787,-0.0704 -1.1,-0.0815 0.1876,-0.17418 0.4654,-0.46552 0.6926,-0.69256 z m 25.1766,0 0.1222,0.0407 -0.2444,1.01847 -0.1223,-0.0407 0.2445,-1.01847 z m -10.9588,0.0815 0.2445,0.0815 -0.082,0.28517 -0.163,0 0,-0.36665 z m -20.8175,0.12222 c 0.2965,0.34461 0.6323,0.71225 0.9777,1.09995 l -0.7333,-0.16296 c -0.294,-0.2508 -0.5827,-0.52525 -0.8555,-0.81478 l 0.6111,-0.12221 z m -1.0592,0.24443 0.4481,0.7333 -0.3259,0 c -0.2314,-0.13532 -0.4738,-0.24994 -0.6926,-0.40739 0.047,-0.0675 0.091,-0.14686 0.1222,-0.24443 l 0.4482,-0.0815 z m 23.2211,0.16295 0.5704,0.12222 0,1.18143 -0.4482,0.12221 -0.5296,-0.12221 0.4074,-1.30365 z m 11.2847,0.12222 -0.2037,0.40739 0.082,-0.32591 0.1222,-0.0815 z m -16.2956,0.12222 0.2445,0 0,0.0815 -0.2445,-0.0407 0,-0.0407 z m -19.6768,0.12221 c 0.029,0.007 0.054,-0.005 0.081,0 l 0.082,0.0815 -0.3667,0 0.2037,-0.0815 z m 29.169,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1196,-0.0874 0.2148,-0.19178 0.3259,-0.28518 z m 3.8294,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2037,0.0815 c -0.072,0.0648 -0.1696,0.10081 -0.2444,0.16296 -0.192,0.1594 -0.3681,0.33853 -0.5704,0.48886 -0.078,-0.0803 -0.1397,-0.20168 -0.2037,-0.32591 0.1573,-0.0786 0.2844,-0.16146 0.4482,-0.24443 l 0.3259,0.0815 0.041,-0.2037 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.20369 c 0.1087,10e-6 0.2967,-0.11103 0.5296,-0.28517 l 0.7333,-0.0407 z m -4.9294,0.12221 c 0.1298,0.14533 0.2302,0.25609 0.3667,0.40739 l 0,0.2037 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.163,-0.0407 c -0.08,-0.0559 -0.1659,-0.10467 -0.2444,-0.16295 l 0.163,-0.0407 0.041,-0.16296 z m 10.0218,0.0815 0.3666,0.24443 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.32591 z m -2.0369,0.32591 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.0815 -0.2445,0.12222 -0.1629,0 0,-0.2037 z m -3.0962,0.12222 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8257,0 0.2444,0.0407 0.2445,0.28517 0.082,0 0,0.40739 c -0.3616,0.0312 -0.758,0.0611 -1.1407,0.0815 l 0.3259,-0.48887 c 0.079,-0.004 0.1557,0 0.2444,0 l 0,-0.32591 z m -6.4775,0.32591 0.6518,0 0,0.48887 -1.0184,0 0.3666,-0.48887 z m 8.1885,0.0407 0.2852,0.0815 -0.041,0.12221 c -0.1062,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24443 z m 9.4107,0.0407 c -0.02,0.28762 -0.041,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40739 -0.3259,-0.44813 0.5704,-0.81477 z m -12.0587,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24444 -0.2444,-0.0407 c 0.043,-0.0934 0.1037,-0.18419 0.2444,-0.24443 z m -8.6366,0.16295 0.6518,0 0,0.2037 -0.6518,0.20369 0,-0.40739 z m 1.0184,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.5851,0 0.3666,0 -0.3666,0.40739 -0.4889,0 0.4889,-0.40739 z m -15.1549,0.2037 0.041,0 0,0.20369 -0.4481,0 0,-0.0407 0.4074,-0.16295 z m 3.3406,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.9701,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.911,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.0473,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.163,0.48887 -0.5296,-0.12222 0.041,-0.0815 c 0.1755,-0.0707 0.415,-0.20082 0.6111,-0.28517 z m 5.296,0 c 0.072,0.0901 0.1611,0.14842 0.2445,0.24444 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2444,-0.12222 z m -32.6318,0.28517 0.6518,0 0,0.24444 -0.6518,0 0,-0.24444 z m 2.9332,0 0.3666,0 -0.3666,0.52961 0,-0.52961 z m -3.5443,0.24444 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.6111,0 1.0185,0.28517 1.2221,-0.28517 1.3037,0 0,0.48886 -5.1739,0 0,-0.20369 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4481,0.48886 -0.2037,-0.20369 -1.0185,0.20369 -2.4851,0 -0.4481,-0.48886 z m 5.459,0 0.5704,0 0,0.28517 -0.5704,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.20369 l -0.041,0 0.041,-0.16295 0.041,-0.0407 z m -30.5134,0.28517 1.0185,0 0,0.20369 -1.0185,0 0,-0.20369 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#fce94f;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <path
+       id="path3646"
+       d="m -542.81241,163.54183 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2036,0 -0.2036,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.1079,0.10817 0.1629,0.16295 l 0,0.16296 -0.2444,-0.0815 c -0.024,-0.006 -0.057,-0.001 -0.081,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.163,-0.61108 -0.4073,0.0815 0,3.87019 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85552 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2037,-0.0815 0,11.12172 0.163,-1.18143 0.1222,0.0407 0,1.01847 0.2037,0 0.4889,0.5296 c -0.1,0.0821 -0.1897,0.19341 -0.2445,0.36665 l -0.2037,-0.24443 -0.082,0 -0.1629,-0.65182 0,0.57034 -0.041,0 -0.2445,0.12222 0,0.89625 0.2852,-0.12221 0,0.32591 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.3667,-0.12222 0,0.24443 -0.3667,0 0,0.85552 -0.2852,0.0815 0,0.20369 0.2852,-0.0815 0,0.0815 c 0.4141,4e-5 0.5704,-0.14215 0.5704,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1223,0.0815 -0.082,0.24443 0.1223,0 0,0.0815 0.2037,0.24443 0,0.28517 -1.0185,0 0,0.24444 3.3813,0 c 0.2347,-0.63833 0.527,-0.97774 0.937,-0.97774 l 0,-0.40738 -0.5703,0 -0.2852,0.20369 -0.163,0 -0.2444,-0.32591 0.082,-0.24443 -0.2444,0.0815 -0.6519,0 -0.3259,0.12222 0,-0.0407 -0.3666,-0.0815 -0.2852,0.2037 -0.4481,-0.2037 0,-0.24443 1.0592,0 0,-0.20369 -0.2037,-0.2037 0,-0.24443 0.4889,0.16295 -0.082,0.2037 0.5703,0.12222 0.2852,-0.0407 0.6111,0.20369 -0.082,0.24443 0.2851,0.0815 0.5704,-0.0407 0.6518,0.24444 0,0.20369 c -0.3219,7e-5 -0.8163,0.38652 -1.3851,1.18143 l 18.5769,0 c 0.082,-0.0802 0.1634,-0.16304 0.2444,-0.24444 0.2121,0.0756 0.5041,0.16494 0.7333,0.24444 l 1.4666,0 -0.2444,-0.40739 1.1407,0.0815 0.2037,0.0815 -0.041,0.16296 -0.5296,0.0815 0.7333,0 7.8626,0 0.041,-0.16296 c 0.061,0.0307 0.1355,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3036,0 0.3667,-0.24444 -0.041,0.24444 2.5665,0 0.082,-0.24444 0.2444,0.0407 -0.082,0.2037 0.4482,0 0,-1.34439 -0.082,0.24444 -0.2445,-0.0407 0.1223,-0.40739 0.2037,0.0815 0,-9.04403 -0.1223,-0.0407 0.1223,-0.57034 0,-1.71104 -0.2852,0.0815 -0.041,0.2037 0.2037,0.32591 -0.6111,1.09995 -0.2037,-0.0407 0.937,-3.50354 0,-1.58882 -0.2852,0.12222 -0.041,1.05921 -0.6518,2.36285 -0.5703,0.28517 1.1814,-4.39979 0.3666,0.57034 0,-1.34438 -0.1629,-0.0407 0.1629,-0.57035 0,-1.83324 c -0.2597,-0.39209 -0.5238,-0.78278 -0.8147,-1.14069 l 0.8147,0.0407 0,-1.22217 -0.2037,0.85552 -0.2444,-0.0815 0.3259,-1.18143 0.1222,0.0407 0,-3.54428 -0.082,0.28517 -0.4481,-0.12222 0.5296,-2.03694 0,-7.98482 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2852,-0.16296 0.082,-0.28517 c -0.3163,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.1,0 2.811,1.18142 -0.1222,0.40739 0.2852,-0.16295 0.6925,0.20369 -0.4888,0.81478 -0.2037,-0.0407 -0.163,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40739 0.3667,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2445,-0.0815 -0.2851,0.2037 -0.2445,-0.0407 -0.6925,-0.48887 -0.5704,0.36665 -1.5481,-1.2629 -1.8332,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2999,0 1.0185,1.54807 0.2037,0.0407 -0.163,0.69256 -0.4481,-0.12221 -0.082,0.20369 c 0.3276,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44813 -0.7333,-0.2037 -0.163,0.44813 0.4889,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 -0.1222,0.40739 0.4481,0.12221 -0.163,0.69256 c -0.4096,-0.10951 -0.697,0.12321 -0.937,0.69257 -0.022,0.0836 -0.038,0.17514 -0.041,0.24443 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.1629,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.2037 l 0.5296,0.16296 0.1629,-0.65182 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2852,-0.16295 0.081,-0.28518 -0.2037,-1.46659 0.6518,-0.24444 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2852,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6925,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48886 -0.082,0.44813 -0.3667,-0.57034 0.082,-0.36665 -0.4481,0 -0.8555,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.1629,-0.24443 0.2851,-0.12222 0.082,-1.18142 0.3667,-1.42586 -0.4889,0 -0.6111,2.36285 -0.2444,0 0.6111,-2.36285 -2.6073,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9987,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4354,0.62502 -0.774,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5703,-0.0815 0,-0.28517 c 10e-5,-0.20089 -0.2546,-0.36699 -0.774,-0.48887 l -0.041,-0.20369 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2786,-0.13728 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83274 0,-0.93699 -0.041,0.0407 -0.163,0.61109 0.2037,0.28517 z m -34.3429,-12.75127 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.2956,0.36665 0,0.48887 -0.4481,0 0.4481,-0.48887 z m 7.8219,0 0.082,0.0407 0.2037,0.89626 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1223,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.974,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24443 z m 13.0365,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8142,0.0407 0.4482,0.12221 -0.1223,0.48887 -0.4888,-0.12222 0.1629,-0.48886 z m -5.8256,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6519,-0.65182 1.1,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.7741,3.87019 -0.2851,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5704,0 0.163,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2852,-0.28517 1.3852,-5.21458 z m -17.7214,0.2037 0.2444,0 0.041,0.16295 -0.082,0.0407 -0.1222,0 -0.082,-0.20369 z m 14.5438,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2445,-0.0815 0.1223,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.8208,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.16295 c -0.074,0.27639 0.1418,0.51308 0.5704,0.65182 l 0,-0.5296 -0.5704,-0.12222 z m -6.07,0.32591 0.4481,0.12222 -0.3667,1.30364 -0.4481,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6518,0.20369 0,0.28518 -0.8555,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8332,0 -0.082,0.32591 -0.2851,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6519,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.12222 -0.4074,-1.30364 0.1223,-0.48887 0.2444,0.0407 -0.1222,0.48887 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81478 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48887 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3037,0 0.3666,0 0.4074,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.2922,0 0.6519,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4482,-0.12222 z m 10.144,0.36665 0.4888,0.12222 0.4074,0.57034 -0.6518,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.363,-0.37134 -0.2444,-0.81478 l 0.2851,-0.16295 0.041,-0.20369 0,-0.937 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5026,0.0407 0,0.40739 -0.2851,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2445,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7284,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1918,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4073,0 0,0.24443 -0.4073,0 0,-0.24443 z m 1.0592,0 0.8147,0 0,0.24443 -0.8147,0 0,-0.24443 z m 22.3656,0.0407 0.4481,0.12221 0.2852,0.28518 0.082,-0.40739 0.2444,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.163,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.6161,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.0023,0.0407 0.2852,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -20.4916,0.0407 0.3666,0 0,0.28517 -0.3666,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.1629,0.28518 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5521,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3667,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.163,-0.16296 z m -3.5035,0.0815 0.082,0.44812 -0.4482,0.12222 -0.041,-0.16295 0.326,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2851,1.0667 0.7124,1.54315 1.3037,1.38512 l 0.081,0.16295 -0.163,0.24444 -0.2444,-0.12222 c -0.5965,0.73087 -0.8709,1.45178 -0.6926,2.11842 l -0.8555,-0.65182 0.6111,-0.16296 -0.1222,-0.40739 c -0.3696,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6034,0 0,0.0815 -0.041,0.16296 -0.2036,-0.0407 0.2444,-0.20369 z m -10.5513,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2211,0.0407 0.4482,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.163,1.46659 -0.4074,0.57035 0.2037,0.24443 -0.3259,0.2037 0.3667,0.57034 -0.2852,0.12222 -0.2444,-0.0407 -0.041,1.14069 -0.3259,1.14068 -0.4482,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.163,0.0407 c 0.083,0.20379 0.1422,0.44083 0.1629,0.69256 l -0.041,0.2037 -0.1629,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2444,-1.54808 0.7741,-2.85172 0.4481,-0.81478 -0.2852,-1.05921 0.5296,0.16296 0.326,-2.07769 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2851,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.326,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.1629,0 -0.2037,0.28517 -0.2037,0 0.3666,-0.61108 1.2629,-0.2037 z m 4.8072,0 0.1629,0.65183 -0.2036,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0886,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.20369 z m 32.5911,0.40738 1.5074,1.34439 -0.1223,0.44812 -0.5296,-0.16295 -0.4888,1.79251 -0.2037,-0.0407 0.4074,-2.48507 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4173,0.12222 0.041,0 0.2037,0.2037 -0.1629,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4073,0.12222 c -0.1394,0.12918 -0.3454,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4889,-0.24443 z m -4.6443,0.0407 0.6518,0.20369 0,0.44813 c -0.414,0 -0.6518,0.1829 -0.6518,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4476,0.0407 0.326,0.61109 -0.041,0.20369 -0.326,-0.61108 0.041,-0.2037 z m -18.088,0.0407 0.5703,0.28518 0.6519,2.36285 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85552 0.041,0.65182 0.2851,0.12222 -0.3666,0.57034 -1.1814,-4.3998 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2445,-0.0407 0.2852,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.163,-0.65182 0.1223,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36285 -0.2852,-0.16295 -0.8148,-3.05542 z m -7.8219,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4444,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.776,0.20744 -1.0756,0.74804 -0.937,1.71104 l 0.3667,0.57034 -0.2037,0.0407 0.5703,0.24443 -0.1629,1.30365 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.5703,0.85552 c -0.1409,0.11253 -0.2863,0.23952 -0.4481,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81477 -0.4481,0.12221 -0.2037,-0.81477 0.4074,-0.12222 -0.1222,-0.44813 -0.6519,0.2037 0.082,0.44812 -0.2037,0.0407 -0.1629,-0.61108 c 0.1174,-0.74568 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61109 0.2037,-0.0407 1.3444,-2.03695 z m 31.3282,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28137 -0.041,0.2037 0.2852,0.0815 0.2851,-0.12222 0.2445,0.0407 -0.6926,2.64802 c -0.6159,-0.32291 -0.8481,-0.90564 -0.6111,-1.79251 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48887 0.082,-1.18142 -0.5703,-0.12222 -0.6926,2.68876 0.2444,0.28518 -0.3666,0.12221 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08429 -0.2444,1.50733 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12222 -0.4482,-0.12222 -0.1629,-0.93699 0.5703,-0.48887 0,-0.12222 c 0.055,0.0879 0.1487,0.1672 0.2852,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2444,-1.87399 0.3667,-0.5296 0.7333,-3.62576 0.2444,-0.89625 -0.4481,-0.12222 -0.3667,1.34438 -0.3666,0.12222 0.2444,0.28517 -0.1222,0.48887 -0.5296,-0.16296 0.8148,-3.09615 z m -9.207,0.12221 0.2037,0.0407 -0.2445,0.89626 -0.2851,0.16295 -0.2037,-0.0815 0.5296,-1.01848 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2445,-0.0407 0.1222,-0.40739 z m -24.973,0.0815 0.2037,0.81478 -0.2037,0.0407 -0.2444,-0.77404 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2036,0.69256 -0.2037,-0.0407 0.1629,-0.69256 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48886 -0.082,-0.36665 0.2851,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1223,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12222 0.7741,0.20369 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24443 z m -8.7181,0.0407 0.5703,0.16296 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -15.4808,0.0407 0,0.61109 0.4482,0 c 0,0.33785 0.036,0.62662 0.1222,0.81477 -0.2102,0.0426 -0.4006,0.0946 -0.5704,0.16296 l 0,-0.0407 -0.3666,-0.40739 -0.6518,0.2037 c 0,-0.11015 -0.034,-0.20771 -0.082,-0.28518 l -0.2445,-0.89625 1.3444,-0.16296 z m 2.8925,0 0.2852,0.2037 0.2037,0 1.8739,-0.2037 0,0.2037 -0.2851,0.65182 c 0.3992,-0.22119 0.7009,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.1937 0.2036,0.28517 l -0.3666,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2851,0.32591 l 0.041,0.16295 -0.2037,-0.20369 -0.2444,0.12222 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.107,-0.24434 -0.1223,-0.36665 l 0.326,0 0.3666,0.0815 0.041,-0.20369 -0.2852,-0.52961 c -0.2711,-0.0725 -0.5057,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1436,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.2037 -0.774,-0.2037 -0.4481,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2415,3e-5 0.4326,0.0163 0.6111,0 0.5354,-0.049 0.774,-0.17787 0.774,-0.40739 z m 16.2955,0 0.2445,0.0815 -0.2445,0.89626 -0.2444,-0.0815 0.2444,-0.89626 z m -19.962,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.5481,0.0815 0.2445,0.28517 -0.2037,0.36665 -0.163,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.5106,0.12222 0.041,0.32591 -0.163,0.0407 0.1222,-0.36665 z m 21.836,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.6622,0.0407 0.5296,0.93699 0.041,0.16295 -0.2037,0.28518 0.7741,1.83325 -0.5296,0.32591 -0.2852,-1.50734 -0.1222,-0.44813 -0.2444,-0.12222 -0.163,-1.42586 0.2037,-0.0407 z m -0.8962,0.0407 1.1407,4.23685 -0.326,-0.0815 0,-0.0815 -0.2851,-0.16295 -0.6926,-3.46281 -0.041,-0.20369 -0.2852,-0.12222 0.4889,-0.12222 z m 19.8805,0.0815 0.2445,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -7.7811,0.0815 0.6518,0 0,0.20369 c -0.1266,0.0362 -0.2232,0.0983 -0.3259,0.16296 l -0.3259,-0.0815 0,-0.28517 z m -9.207,0.12222 0.1222,0.36665 -0.2036,0.0407 -0.1223,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.9811,0.24444 0.2444,0.0407 -0.163,0.48886 -0.2036,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8138,0.0815 0.3667,0 c -0.095,0.17535 -0.2075,0.27297 -0.3667,0.28517 l 0,-0.28517 z m 7.1293,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.5073,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61109 -0.1222,0.40738 -0.4481,-0.12221 0.2444,-0.89626 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56117 0.6518,0.69256 l -0.2445,0.89626 c -0.1373,-0.16028 -0.2847,-0.28993 -0.4481,-0.40739 l 0.041,-0.20369 -0.4481,-0.12222 0.2444,-0.89626 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.1222,-0.0407 0.1629,-0.0815 z m -15.603,0.16296 0.082,0.16295 0.3259,2.9332 0.4074,-0.12222 -0.1222,-0.36665 0.6111,0.24444 c -0.4434,0.11851 -0.6365,0.41476 -0.5296,0.81477 l 0.2444,0.12222 -0.2444,0.7333 0.041,0.20369 0.4481,-0.12221 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44813 -0.3666,1.14069 -0.3667,-0.0815 c -0.056,0.071 -0.068,0.13431 -0.1222,0.20369 l -0.4481,-1.58881 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24443 -0.4889,0.12221 -0.082,-0.16295 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93699 l -0.4481,-0.77404 -0.041,-0.16295 0.5703,-0.36665 z m 31.1653,0 0.5296,0.12221 -0.2037,0.69256 -0.5296,-0.12221 0.2037,-0.69256 z m -28.9246,0.28517 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.7257,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9066,0 0.5296,0.12221 -0.1222,0.48887 0.4481,0.12222 0.163,-0.69256 0.4481,0.57034 -0.5703,0.81478 -0.163,1.87398 -0.4481,0.52961 -0.2444,-0.0407 c 0.5137,-1.92153 0.4109,-2.92097 -0.2445,-3.09615 l 0.2037,-0.69256 z m -20.0435,0.0815 0.2037,0 -0.1222,0.44813 -0.163,0 0,-0.20369 0.082,-0.24444 z m 1.7925,0 0.2037,0 c 0.1368,0.16132 0.1866,0.38537 0.163,0.65183 l -0.1222,0 -0.2445,-0.65183 z m -2.5665,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5475,0.16296 0.2445,0.0815 0.2851,0.2037 -0.1629,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.3259,-0.24443 l -0.041,-0.28517 z m -7.17,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.0815 0.4074,0.12222 -0.3259,0 -0.082,-0.12222 z m -6.7219,0.12222 0.2037,0.0815 -0.082,1.22217 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48887 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6252,0.0407 0.326,0.0815 -0.163,0.65182 -0.2037,-0.0815 -0.041,-0.52961 0.082,-0.12222 z m -15.3585,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1222,0.16295 0.082,0.28518 -0.3259,-0.40739 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.163,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24444 c -0.1412,0.67657 -0.1364,1.03083 0.1222,1.09995 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.4481,-0.0815 c -0.2059,-0.77059 -0.1474,-1.24298 0.1223,-1.34439 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.1629,0.65182 0,0.12222 -0.4888,0.7333 0.2851,0.0815 -0.3259,0.12221 -0.082,0.24444 0.2445,0.28517 -0.082,0.16296 -0.4074,0.57034 0.041,0.85552 -0.6518,1.30364 0.2444,0.28517 -0.4889,-0.16295 0.3667,-1.34439 -1.1815,0.7333 0.2445,0.28518 -0.8555,0.44812 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79803 -0.2037,-0.85551 l 0.2851,-0.16296 0.041,-0.20369 0.2037,-1.30364 c 0.1375,-0.1299 0.2765,-0.27149 0.4074,-0.40739 l 0.4482,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2445,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.2444,0.0407 0.082,-0.36665 0.3667,-0.16296 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.19121 0.2037,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.32591 l 0.2851,0.0815 0.2852,-1.05921 c 0.1084,-0.19992 0.2227,-0.4049 0.3259,-0.61108 l -0.1222,-0.16296 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2444,-0.24444 z m -22.162,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.432,0.2037 0.4888,0.12221 -0.4074,0.937 c -0.091,-0.13612 -0.2088,-0.26481 -0.3666,-0.36665 l 0.2852,-0.69256 z m -10.8773,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9777,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.163,0.65182 -0.2851,-0.57034 0.041,-0.16296 z m 23.9137,0.0407 c 0.452,0.27924 0.6049,0.76826 0.4074,1.50734 l -0.5296,1.05921 c -0.1997,1.12234 -0.2914,1.89101 -0.2852,2.40359 l -0.1629,-0.0407 0.041,-0.77404 0.1222,-0.48886 -0.3666,-0.77404 0.8962,-2.11842 -0.1222,-0.77404 z m -21.836,0.12222 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.0994,0 0.041,0 -0.1629,0.57034 c -0.02,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.962,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16295 z m -4.1146,0.20369 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6257,0 c 0.1218,0.0561 0.2252,0.11426 0.4074,0.16295 l -0.082,0.36665 -0.1629,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.1245,0.0815 0.2445,0.0815 -0.1223,0.48887 -0.2444,-0.0815 0.1222,-0.48886 z m -25.4618,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1223,0.36665 c -0.2956,-0.079 -0.5499,0.15923 -0.6925,0.69256 l -0.4481,-0.77403 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1478,0.0407 0.2852,0 -0.1222,0.52961 -0.2445,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5704,0 0,0.0815 -0.3667,0.57035 0.1223,0.16295 -0.6111,-0.16295 c 0.107,-0.16059 0.1904,-0.4143 0.2851,-0.65183 z m 1.0593,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1223,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.082,0.16295 0.041,0.44813 -0.1629,0.0407 c -0.1809,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.017,-0.15377 0.041,-0.24444 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48886 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2444,-0.0407 0,-0.48886 -0.2851,0.0407 -0.041,-0.24444 z m -7.6996,0.0815 0,0.77404 c -0.2653,-0.0831 -0.4074,-0.28894 -0.4074,-0.65182 0.1826,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.5404,0 0.4074,0.12222 -0.082,0.36665 -0.4481,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24444 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2445,-0.36665 0.1629,-0.28517 -0.4481,-0.12222 0.5703,-0.28517 z m -18.8213,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2851,0.0407 l 0,0.65182 -0.2444,-0.0815 -0.041,0.12222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.163,0 -0.5296,0.77403 -0.2445,-0.32591 -0.082,0.36665 0.2445,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.1222,0.20369 c -0.155,0.0762 -0.2588,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.163,0 c 0,-0.0298 0.01,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.1629,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2445,-1.05921 l 0.4482,-1.62955 z m -7.2923,0.44813 c 0.2126,0.11967 0.3124,0.32245 0.2852,0.61108 l -0.2037,-0.12222 -0.082,-0.48886 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2852,0.0407 l 0,0.48887 -0.2444,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.2037 0.082,0.36665 c -0.1679,-0.14918 -0.2705,-0.48918 -0.2852,-1.01848 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.9355,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.1629,-0.0407 z m -0.8963,0.0407 0.4482,0.93699 -0.2037,0.0407 -0.081,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2445,-0.0815 -0.2037,-0.69256 0.2445,-0.0407 z m 17.5178,0 0.4073,0.12222 -0.082,0.24443 -0.3666,-0.24443 0.041,-0.12222 z m 0.7332,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44813 z m 7.1294,0.0815 0.082,0.12222 0.2851,0.0815 0.082,-0.0407 -0.2037,1.34439 -0.6925,2.52581 -0.2444,0.48886 -0.082,-0.36665 0.2036,-0.28517 -0.2036,-0.20369 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12221 0.2037,0.0407 0.041,-1.05921 0.2852,-0.97773 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.163,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4073,0.12222 -0.1222,0.36665 -0.2851,-0.48887 z m -10.6329,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2037,0.0407 -0.2445,0.12221 -0.1222,0.48887 -0.1629,-0.61108 0.2037,-0.48887 z m 27.4172,0 0.3667,0.0815 c -0.05,0.18576 -0.024,0.33527 0,0.44813 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44813 z m -3.9516,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23874 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2445,0.81477 -0.2037,-0.0407 0.2445,-0.81478 z m 14.7474,0.0407 c 0.1068,0.0985 0.258,0.168 0.4074,0.24443 l -0.1629,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36665 z m -21.9175,0.16295 0.082,0 c 0.01,0.0632 0,0.14342 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.2429,0.36665 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7626,0.16296 0.2037,0.0815 -0.7333,2.81098 -0.2037,-0.0815 0.7333,-2.81098 z m 9.4515,0 -0.2037,0.81478 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89625 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2374,0.33745 0.3666,0.48887 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1301,0.14364 0.2037,0.2037 l -0.163,0.65182 -0.2037,-0.0407 c 0.071,-0.26674 -0.1676,-0.49256 -0.6111,-0.61108 l 0.2445,-0.85552 z m 1.0184,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5813,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4889,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44812 0.2444,0.89626 -0.4481,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2445,-0.0407 0.6519,-2.40359 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24444 0.6926,0.16295 0.082,-0.20369 -0.6926,-0.2037 z m -28.6802,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.1796 -0.3023,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1448,-0.11438 0.3062,-0.20677 0.4889,-0.24443 z m 13.3624,0.2037 c 0.1272,0.1138 0.2391,0.22321 0.2851,0.32591 l -0.2851,-0.0815 0,-0.24443 z m -12.955,0.20369 0.041,0 0.3259,0.12222 c 0.028,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77404 -0.2037,-0.0407 c 0.1427,-0.53337 0.011,-0.85798 -0.2851,-0.937 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5665,0.0407 0.082,0.24443 -0.1223,-0.0407 0.041,-0.20369 z m 13.4438,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.163,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0184,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28517 z m -19.4324,0.0815 0.1629,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8105,0.12221 0,0.52961 -0.041,0.0407 -0.041,0.16295 -0.2445,0 0.2037,-0.69256 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2445,0 -0.2851,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3667,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9331,1.0147 0.6926,1.91472 l -0.4889,-0.12221 -0.1629,0.5296 0.3666,0.57035 -0.8555,1.2629 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30364 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57034 c -0.1386,0.96298 0.1611,1.5036 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03694 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.2629 l 0.1629,-0.61109 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44812 -0.4074,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12221 0.082,-0.36665 0.4481,0.12221 0.082,-0.36665 -0.4073,-0.12221 0.1629,-0.61109 c 0.3695,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.4 -0.01,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61108 z m -24.5248,0.0407 0.4889,0.12221 -0.4074,0.57035 -0.2444,-0.0815 0.1629,-0.61108 z m 23.3027,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40739 -0.3259,-0.5296 0,-0.0407 z m -16.703,0.0815 0.6518,0 0.2037,0.24444 0.163,0 -0.163,0.61108 -0.611,0 -0.2445,-0.85552 z m 5.7035,0.2037 0.082,0 c -0.036,0.16125 -0.082,0.31655 -0.1222,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.8886,0.0407 0,0.16295 -0.082,0.24444 -0.2037,0 0.041,-0.2037 0.2445,-0.20369 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.6366,0.0815 0.6518,0.36665 -0.2851,1.01847 -0.2037,-0.0815 -0.2445,-0.937 0.082,-0.36665 z m 20.899,0 0.4889,0.12222 0.3667,1.14069 -0.1223,0.44813 -0.2037,-0.0407 0.1223,-0.44813 -0.4482,-0.12222 -0.041,0.2037 0.2445,0.7333 -0.2445,0.12221 c -0.1069,0.40004 0.086,0.69627 0.5296,0.81478 l -0.5703,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.9332 -0.082,0.16295 -0.5703,-0.32591 0.082,-0.20369 0.4073,-0.77404 c 0.069,-0.55307 -0.1193,-0.87896 -0.4888,-0.97774 l 0.1222,-0.36664 0.4889,0.12221 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09995 0.4481,-1.58882 z m -18.9843,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4074,-0.12221 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2852,-0.52961 0,-0.0407 z m -19.962,0.0407 0.3259,0.48887 -0.2445,-0.24444 -0.2036,-0.0407 0.1222,-0.2037 z m 1.0999,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65183 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0838,0 c 0.044,0.10287 0.088,0.18377 0.1629,0.20369 l 0.2037,0.0407 0,0.44813 -1.711,6.35526 -0.4889,-0.12221 0.2852,-0.12222 0.041,-0.20369 0.6926,-3.46281 0.2851,-0.12221 0.041,-1.05922 0.4889,-1.95546 z m 1.0184,0 0.2037,0.0407 -0.2037,0.65182 -0.2036,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6437,0.12222 0.041,0.44812 -0.1222,0.0407 -0.082,-0.32591 0.163,-0.16295 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1346,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1223,0.48887 -0.4481,-0.16296 0.082,-0.40739 z m -20.9805,0.32592 0.4888,0.12221 -0.082,0.2037 -0.1629,1.38512 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81477 0.041,-0.32591 z m 3.2998,0.0407 0.4482,0.0815 c -0.1069,0.39999 -0.01,0.69501 0.2851,0.77404 l -0.041,0.20369 c -0.4433,-0.11854 -0.7027,-0.10371 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3666,-0.57035 z m 16.8252,0.0407 0.2851,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.7698,0.16296 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12222 0.2445,-0.97773 z m 20.125,0.20369 0.4482,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0962,0 0.2037,0.0407 -0.4481,0.937 -0.2037,-0.0407 0.2037,-0.81478 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57034 -0.9778,0 0.163,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2852,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1327,-0.43446 0.163,-0.61109 z m -4.3183,0.16296 0.2037,0.0407 -0.1223,0.36665 -0.2036,-0.0407 0.1222,-0.36665 z m 32.3059,0 0.2037,0.0407 c -0.107,0.40001 -0.01,0.69504 0.2852,0.77404 l -1.4259,3.50354 0.2037,0.24443 -0.041,0.2037 -0.5296,0.89625 -0.2037,-0.0407 0.1629,-1.42586 0.2445,-0.12221 0.1222,-0.44813 0.6926,-3.42207 0.2851,-0.20369 z m -35.3613,0.12222 0.1222,0.85551 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18349 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3667,0.16296 c -0.01,-0.0436 -0.031,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34438 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1222,-0.44813 z m -4.8072,0.24444 0.2037,0.0815 -0.163,0.5296 -0.2037,-0.0407 0.163,-0.57034 z m 28.9653,0 0.2037,0.0407 -0.2852,1.01847 -0.2037,-0.0815 0.2852,-0.97773 z m -20.4916,0.12221 0.3666,0.52961 -0.1629,0.61108 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.40001 -0.4121,0.56665 -0.8555,0.44812 0.1069,-0.40002 0,-0.65551 -0.4482,-0.77404 l 0.041,-0.20369 0.4074,0.12222 0.163,0.24443 c 0.08,-0.29997 0.4464,-0.45431 1.0999,-0.52961 z m 10.8365,0.2037 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8963,0.24443 -0.4481,1.75177 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34438 l -0.4481,-0.0815 0.1629,-0.57034 z m -6.1515,0.0407 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.57035 0.041,-0.16295 z m -28.558,0.0815 -0.2037,1.62955 -0.8148,0.24443 0.2445,-0.89625 c 0.449,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2852,-0.0815 0.1223,-0.36665 z m 21.8767,0.0407 0.163,0.0407 0,0.24444 -0.4074,0 0.2444,-0.28518 z m -9.5329,0.0407 0.2037,0 0.163,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9663,0.24444 0.4889,0.12221 -0.082,0.24444 -0.5296,0.93699 -0.163,-0.24443 -0.2037,-0.0815 -0.5296,0.28517 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.1629,-0.24443 -0.2037,-0.0407 -0.2445,0.12222 0.2037,-1.62956 0.6111,0.16296 0.1222,-0.40739 c 0.7391,0.19754 1.1561,0.0741 1.2629,-0.32591 z m 2.8517,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.6405,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0407 0.1222,-0.44813 z m -9.2885,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.7252,0.0815 c 0,0.20653 -0.13,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.8555,-0.20369 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.5481,0 0.4074,0 0.082,0.12221 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.24443 0.1222,-0.44813 c 0.1893,0.0506 0.3495,-0.044 0.4889,-0.24443 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59857 -0.6519,0.7333 l -0.1222,-0.0407 0.4482,-0.77404 z m 4.4405,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.847,0.0815 0.4074,0.12222 -0.1222,0.44813 -0.4074,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.163,0 -0.163,0.57035 0,-0.57035 z m -11.9772,0.16296 -0.082,0.36665 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.3259,0.36665 c -0.3478,0.17232 -0.5887,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1401,-0.44387 -0.02,-0.72709 -0.4074,-0.81478 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24443 z m -14.4216,0.20369 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4482,0.0815 -0.082,0.2037 -0.4074,-0.12222 0.041,-0.16296 z m 20.1658,0 0.1629,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.1629,0.24444 0.2037,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.3259,0.0407 -0.1473,0.0926 -0.295,0.12532 -0.4888,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21898 0.774,0.44813 l -0.4889,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.1221,0.22481 0.1522,0.50258 0.041,0.85552 l 0.6519,0.16295 -0.3667,1.09995 -0.6111,-0.12222 0,2.11842 -1.3444,1.14069 0.2037,0.32591 -1.7517,2.4036 0.4481,-0.12222 0.2444,0.0815 -0.1222,0.40739 -0.2852,-0.0407 -0.2851,-0.32591 -0.2852,-0.0407 -0.1222,0.48886 -0.2852,-0.0815 2.4851,-7.78113 0.2444,-0.0407 -0.2852,0.97774 0.6519,0.12221 0.4073,-1.30364 -0.4481,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2852,0 0.041,-0.12222 0.2852,-0.0407 0.082,-0.20369 -0.2444,-0.0815 0.1629,-0.57034 -0.2037,-0.28518 0.082,-0.20369 0.2852,-0.0815 z m 6.6811,0.0407 0.2037,0.0407 -0.041,0.12222 -0.1629,-0.16296 z m 7.8626,0 0.041,0.16296 -0.2851,-0.0815 0.2444,-0.0815 z m -20.0435,0.12222 0.4482,0.77404 -0.326,0.16295 -0.1629,-0.0407 0.041,-0.89625 z m -0.6925,0.0407 0.2037,0.0407 -0.1223,0.44812 -0.2037,-0.0407 0.1223,-0.44812 z m 19.8805,0.16295 -0.082,0.24444 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12222 z m -1.3851,0.12222 0.082,0.12222 0,0.28517 -0.4481,-0.12222 0.1629,0 0.2037,-0.28517 z m 3.8702,0.12222 0.2444,0.0815 0,0.28517 0,0.65183 0,0.12221 -0.3259,0.12222 -0.4074,-0.0815 0.2852,-1.14069 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.3803,0.12221 0.3666,0.48887 -0.4888,-0.12222 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1223,0.36665 -0.2037,-0.0407 0.1223,-0.36665 z m -11.4477,0.12222 -0.041,0.20369 -0.774,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16295 z m 6.4368,0 -0.041,0.20369 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12221 z m -27.1728,0.24443 0,0.20369 -0.4074,0.2037 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.1369,0 0.3666,0.0815 -0.2444,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6068,0.0815 0.2037,0.0407 -0.3667,1.34438 c -0.019,-0.29822 -0.091,-0.48679 -0.2444,-0.57034 l 0.041,-0.32592 0.3667,-0.48886 z m 10.3069,0.0815 0.2445,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.1629,-0.48886 z m 2.1185,0.0407 0.2444,0.0407 -0.082,0.24444 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28517 -0.041,-0.0407 0.082,-0.24444 z m 1.3851,0.0407 0.2444,0.28518 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4074,-0.36665 l 0.163,-0.2037 z m -7.6997,0.2037 0.2852,0.0407 -0.163,0.48886 -0.2444,-0.0815 0.1222,-0.44813 z m 13.9735,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6519,0.81478 0.3667,0.0815 -0.4481,0.12222 -0.082,0.24443 0.2851,0.32591 -0.041,0.20369 -0.5703,0.61109 0.082,0.97773 -0.8555,1.42586 0.2852,0.28517 -0.6111,-0.12221 0.4481,-1.54808 -1.5073,0.85551 0.2851,0.28518 -1.0184,0.44812 c -0.1112,-0.21926 -0.218,-0.41747 -0.326,-0.65182 -0.01,-0.0107 0,-0.03 0,-0.0407 l 0.1223,-0.77404 0.2851,0.0815 0.6926,0.44813 c -0.2006,-0.67951 -0.5592,-1.09062 -1.1407,-1.22217 l 0.2037,-0.69256 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 -0.081,-0.0407 c 0.068,-0.22572 0.108,-0.44975 0.163,-0.65182 l 0.1629,-0.12221 0.041,-0.2037 -0.041,-0.12221 c 0.059,-0.23984 0.045,-0.41042 0.082,-0.61109 0.2166,-0.0412 0.4501,-0.15496 0.6926,-0.36665 -0.087,0.52224 -0.036,0.8328 0.2444,0.89626 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.11243 -0.3751,0.24349 -0.5296,0.36665 l -0.041,0.24443 0.4074,0.12222 -0.3259,1.67029 0.5703,0.12222 0.1222,-0.40739 0.4482,-0.20369 -0.2852,-0.28518 -0.2852,-0.0815 0.082,-0.2037 1.5074,0.12222 0.2037,-0.69256 -0.5296,-0.12222 0.1222,-0.40739 0.5703,0.12222 0.3667,-1.14069 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54808 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.1629,0.24444 0.2037,0.0815 0.3259,-0.12221 -0.041,0.16295 c -0.3961,0.0368 -0.7256,0.11789 -0.9777,0.2037 l -0.041,0 -0.1629,-0.0407 0.2851,-0.44813 0.2445,-0.0815 z m -12.018,0.0815 0.6111,0.12222 -0.1222,0.40739 -0.4889,-0.52961 z m 3.9517,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.3667,0.12222 0.041,-0.40739 0.1222,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4074,0.12222 -0.082,0.44813 -0.4074,-0.24444 0.082,-0.32591 z m -26.358,0.0407 0.4073,0.12222 -0.082,0.20369 -0.4073,-0.12221 0.082,-0.2037 z m 1.6702,0 0.2037,0.24443 -0.041,0.2037 -0.3259,-0.32591 0.163,-0.12222 z m 18.1696,0.0407 c 0.1619,0.0875 0.2757,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.2037 l -0.5297,0 c 0.032,-0.17322 0.06,-0.33608 0.082,-0.48887 z m -3.2591,0.20369 0.1629,0 0,0.0407 -0.1629,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24444 -0.2852,-0.0815 0.041,-0.61108 0.3667,-0.12222 z m -3.2999,0.0815 0.2445,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.1629,-0.48886 z m 10.7144,0.0407 0.7333,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1223,0.28518 -0.082,0 -0.2036,-0.28518 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81477 z m 20.0027,0 c -0.1782,0.66667 0.096,1.38754 0.6926,2.11842 l 0.2444,-0.12222 0.163,0.24443 -0.041,0.16296 c -0.2464,-0.0659 -0.4957,0.0124 -0.6926,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3666,0.12221 c 0.1402,-0.44386 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.2037 c 0.2165,-0.51357 0.4453,-0.70986 0.8148,-0.61108 l 0.1222,-0.40739 -0.6111,-0.16295 0.8555,-0.65182 z m 2.4036,0.0407 0.326,0.48887 -0.1223,0.44813 -0.2851,-0.57035 0.082,-0.36665 z m -17.9658,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2445,-0.32591 0.082,-0.16296 z m -14.2586,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6925,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6769,0 0.2037,0.0407 -0.2037,0.81478 -0.2037,-0.0407 0.2037,-0.81478 z m -28.4357,0.16295 0.5703,0.12222 -0.2444,0.69256 -0.3667,-0.61108 0.041,-0.2037 z m 2.1591,0.0407 -0.082,1.14069 0.6111,0.16296 0.082,-1.18143 -0.6111,-0.12222 z m 19.5547,0.12222 0.1629,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1223,-0.40739 z m -13.4438,0.0407 0.1222,0 0.2852,0.7333 -0.1223,0.16295 -0.1629,0 -0.2037,-0.61108 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48887 -0.3259,0 0,-0.48887 z m 4.0331,0 0.2445,0.0407 -0.041,0.16295 -0.2445,-0.0815 0.041,-0.12222 z m -25.7062,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.1723,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5508,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28518 z m -10.918,0.24444 c 0.2732,-0.0456 0.6794,-0.0134 1.1814,0.0407 l -0.1222,0.40738 c -0.3876,-0.0877 -0.7501,0.1822 -0.937,0.77404 l -0.5704,-0.89625 c 0.053,-0.16645 0.1749,-0.28029 0.4482,-0.32591 z m 14.0956,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.774,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.1549,0.0407 0.4889,0.12222 -0.2852,1.01847 -0.3667,-0.48886 0.163,-0.65183 z m -17.9658,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12222 z m 10.8365,0 0.2037,0.0407 -0.041,0.12222 -0.2444,0.12222 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28518 z m 9.5736,0.12222 -0.1222,0.0815 -0.082,0.16295 0.2037,0.24444 0,-0.48887 z m -13.8104,0.0815 0.4073,0.0815 -0.3259,0.44812 -0.3259,-0.0815 -0.041,-0.16295 0.2852,-0.28517 z m -10.4292,0.0407 0.1222,0.0815 0,0.24444 -0.1629,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28517 z m 13.8512,0.0407 0.6111,0.5296 0.041,0.0407 -0.1222,0.61108 c -0.1738,-0.13018 -0.3351,-0.28385 -0.4889,-0.36665 -0.043,-0.24559 -0.071,-0.51516 -0.041,-0.81477 z m -8.5551,0.0407 0.3666,0 0,0.24444 -0.3666,0 0,-0.24444 z m -16.4585,0.0815 0.1629,0.0407 -0.1222,0.40739 -0.2852,-0.0815 0.082,-0.28517 0.163,-0.0815 z m 4.1961,0.2037 0.5296,0.12221 0,1.18143 c -0.3391,-0.0767 -0.521,-0.50905 -0.5296,-1.30364 z m 1.7925,0.16295 -0.2445,0.69256 0.6519,0.16296 0.2037,-0.69256 -0.6111,-0.16296 z m 3.0146,0.24443 c 0.537,0.1214 0.591,1.23746 0.163,3.29985 -0.149,0.24871 -0.3559,0.70204 -0.5703,1.14069 l -0.5704,-0.12222 -0.5296,-1.34438 c 0.3877,0.0877 0.5932,-0.0857 0.7333,-0.5296 l 0.082,-1.18143 0.2037,0.24443 0.6518,0.16296 -0.1629,-1.6703 z m 9.6959,0.0407 0.1222,0.12222 -0.2444,0.28517 -0.1222,0.44813 -0.1223,0 -0.2851,-0.0815 -0.041,-0.44813 0.082,-0.12221 0.2444,0.24443 0.3667,-0.44813 z m 5.3775,0 c 10e-5,0.30601 -0.1563,0.44816 -0.5703,0.44813 l 0,0.2037 0.4074,0 -0.3667,0.65182 -0.4074,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.4074,-0.77404 c 0.1595,-0.009 0.3126,-0.0407 0.4889,-0.0407 z m -13.4438,0.0407 0.2852,0.0407 -0.4482,1.26291 -0.082,0.32591 c 0.198,0.0814 0.3667,0.16669 0.5297,0.24443 l -0.2445,0.44813 -0.1222,-0.2037 -0.3259,0.16296 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.2725 0.2037,-0.48887 l -0.2037,0 0.1629,-0.48886 0.041,0.0407 0.2852,0 0.1629,-1.30365 z m -8.1885,0.0815 0.5703,0.12222 -0.1629,0.40739 -0.4074,-0.52961 z m 13.1586,0.0815 0.082,0.0815 -0.1629,-0.0407 0.082,-0.0407 z m 4.3591,0 0.3259,0 c -0.046,0.25427 -0.075,0.44865 -0.081,0.65182 l -0.6111,0 0.082,-0.57034 0.2852,-0.0815 z m -3.1369,0.0815 0.082,0.48886 c -0.2042,-0.10677 -0.3488,-0.23499 -0.4481,-0.40739 l 0.3666,-0.0815 z m -1.7518,0.0815 -0.1222,0.48887 -0.1629,0 0,-0.40739 0.2851,-0.0815 z m 18.0066,0.0407 0.2037,0.0407 -0.1629,0.65182 -0.2037,-0.0815 0.1629,-0.61109 z m 0.6518,0 0.4889,0.12222 -0.4074,1.4666 -0.1629,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2445,0.0407 l 0,-0.36665 0.3259,-1.22217 z m -21.2249,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.5035,0.12222 c 0.081,0.0361 0.1343,0.0796 0.2037,0.12221 l -0.2444,0.0407 0.041,-0.16295 z m -12.1809,0.0815 0.2852,0.0407 -0.2852,0.89626 -0.2852,-0.0407 0.2852,-0.89625 z m 1.7925,0.16295 -0.1222,0.44813 0.6111,0.12221 -0.4889,-0.57034 z m 19.5954,0 c 0.045,0.041 0.1551,0.11945 0.2037,0.16296 l -0.082,0.5296 -0.8963,2.85172 -0.5703,0.81478 0.3667,1.05921 -0.6519,-0.16296 -0.3666,2.07769 -0.5296,-0.12222 0,-0.97773 0.3259,-0.12222 0.082,-0.20369 0.1629,-1.4666 0.4889,-0.57035 -0.1222,-0.12221 c 0.028,-0.0546 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.12221 -0.4074,-0.57035 0.3666,-0.12222 0.2445,0.0407 0.082,-1.14068 0.3666,-1.14069 0.5296,0.12221 0.163,-0.61108 z m 1.2629,0.0815 0.1222,0.16295 -0.1629,-0.0407 0.041,-0.12222 z m 1.8333,0.12222 0.082,1.62955 0.4888,0.12222 0.2037,-0.2037 -0.2444,0.81478 c -0.1147,-0.18977 -0.1569,-0.28133 -0.2852,-0.48887 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4482,-1.2629 z m 0.5296,0 0.3666,0.0815 0,0.0815 -0.2444,0.36665 -0.2444,-0.0815 0.1222,-0.44812 z m 3.7887,0.16295 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40739 z m 1.7925,0.24443 0.2037,0.0815 0,1.05921 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.163,0.12222 l -0.3666,-0.0815 0.3259,-1.22217 z m -32.1022,0.0407 0.2444,0.0815 -0.9777,3.09615 -0.2445,-0.0407 0.9778,-3.1369 z m 29.5764,0.16296 0.082,0.0407 -0.163,0.61108 -0.2037,-0.0407 0.1223,-0.44813 0.1629,-0.16295 z m -14.0142,0.16295 0.2037,0 0,0.48887 -0.2037,0 0,-0.48887 z m 11.6921,0.0815 0.2037,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12222 z m -24.2804,0.0815 -0.1629,0.44813 0.611,0.16295 0.163,-0.48886 -0.6111,-0.12222 z m 27.1321,0.0407 0.2037,0.0407 0.041,0.69256 -0.4074,-0.12222 0.163,-0.61108 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65182 -0.2445,-0.0815 0.163,-0.61108 z m 31.5726,0.20369 0.4074,0.12222 -0.082,1.05921 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14069 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5547,0.24443 0.041,0 0,0.44813 -0.2036,0 0.1629,-0.44813 z m -5.5404,0.0407 0.6925,0.16296 -0.5703,1.18143 -0.3259,0.44812 -0.082,0 0.2037,-0.61108 0,-1.05921 c 0.035,-0.0284 0.048,-0.0738 0.082,-0.12222 z m 5.9478,0.2037 0.4074,0 0,0.48886 0.2445,0 0.041,-0.0407 -0.041,0.28517 -0.326,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.3666,-0.0815 -0.163,0.0407 c 0.1409,-0.12157 0.2037,-0.25689 0.2037,-0.44813 z m 13.892,0 0.2444,0.0407 0.1222,0.7333 -0.082,0.24443 -0.4074,-0.61108 0.1223,-0.40739 z m -11.8143,0.20369 0.082,0 -0.2037,0.89626 -0.082,0.0407 -0.2037,-0.2037 c -0.1035,0 -0.1645,0.009 -0.2444,0.0407 l 0.2037,-0.65182 0.4481,-0.12222 z m 0.7741,0 0.4888,0 0.163,0.0407 -0.2445,0.77404 -0.5296,0.32591 -0.2444,0 0.082,-0.20369 0.163,0 0,-0.2037 0.2851,-0.0815 -0.2851,-0.28517 0.1222,-0.36665 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.12222 0.041,-0.0815 z m -22.5286,0.16296 0.6518,0.16295 -0.4889,0.61109 -0.3666,-0.0815 0.2037,-0.69256 z m 14.9511,0.12221 0.2037,0 0.3667,0.0815 -0.4074,0.2037 -0.041,0.20369 0.041,0.12222 -0.163,0.0407 -0.2036,0 0.2036,-0.65183 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.2037 -0.2037,-0.0407 0.041,-0.2037 z m -18.8213,0.16296 0.2444,0.0407 -0.041,0.20369 -0.2852,0.0407 0.082,-0.28517 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2445,-0.0815 0,-0.0407 z m 6.1516,0.20369 0.6518,0.12222 0.2851,0.85552 c 0.027,0.31399 0.036,0.61618 -0.041,0.93699 l -0.2036,-0.0815 0.1629,-0.44813 -0.5703,-0.12221 -0.041,0.20369 0.3259,0.81478 -0.3259,0.12222 c -0.1052,0.33293 -0.023,0.60721 0.2851,0.77403 -0.041,0.10991 -0.074,0.22001 -0.1222,0.32591 l -0.2444,0.0815 0.1222,-0.40739 -0.5703,-0.12221 -0.2445,1.75177 c -0.1707,0.17432 -0.3679,0.37121 -0.5703,0.5296 l 0.2037,-0.28517 c 0.09,-0.61375 -0.1266,-0.99034 -0.6111,-1.09995 l 0.1222,-0.40739 0.6111,0.12222 0.1222,-0.28517 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18143 0.5296,-1.79251 z m -27.3766,0.0407 0.8148,0.40739 -0.3259,1.09995 -0.2852,-0.0815 -0.3259,-1.01847 0.1222,-0.40739 z m 2.4851,0.0407 0.5703,0.12222 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.20369 z m 32.0208,0.12222 0.2851,0.0407 -0.2037,0.69256 -0.2851,-0.0407 0.2037,-0.69256 z m -23.3027,0.0407 0.2037,0 0,0.20369 -0.2444,-0.0407 0.041,-0.16295 z m 10.144,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8143,0.28517 -0.3667,1.34438 -0.041,0 0.4074,-1.34438 z m -11.4884,0.0815 0.2444,0.0815 -0.082,0.2037 -0.2851,0.12221 0.1222,-0.40738 z m 10.3069,0 0.041,0 c 0.027,0.19875 0.01,0.41806 -0.041,0.65182 l -0.1629,-0.0407 0.1629,-0.61108 z m 1.5889,0 0.1222,0.0407 0,0.2037 -0.163,-0.0407 0.041,-0.20369 z m -16.3363,0.12221 0.1629,0 -0.4481,0.44813 -0.2037,0 0.4889,-0.44813 z m 3.1369,0 0.2851,0 -0.082,0.44813 -0.3259,0 0.1222,-0.44813 z m -22.4471,0.2037 0.082,0.12221 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.20369 z m 20.1657,0 0.5296,0 0.082,0.0815 -0.082,0.32592 -0.6111,-0.12222 0.082,-0.28517 z m -18.9028,0.0815 0.2037,0.0407 0,0.24444 c -0.066,-0.0966 -0.1384,-0.18401 -0.2037,-0.28518 z m 10.7143,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.163,-0.20369 0.3259,-0.28517 z m 19.7176,0 0.2037,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.1554,0.0407 0.6111,0.12221 -0.082,0.24444 -0.6111,-0.16296 0.082,-0.20369 z m 7.9441,0 0.163,0.0407 -0.2852,0.97773 -0.1222,-0.0407 0.2444,-0.97773 z m -29.4542,0.0815 1.2222,0.0815 -0.2037,0.61109 -1.2629,0 0.2444,-0.69256 z m 10.918,0.0407 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.16296 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.2994,0.0815 0.2851,0.40739 -0.2851,0.44813 -0.2445,-0.0407 0.2445,-0.81478 z m 1.1406,0.32591 0.1223,0.61109 -0.2852,-0.0815 0.1629,-0.52961 z m 4.1554,0.0407 0.1222,0 c -0.064,0.20396 -0.057,0.39209 0,0.52961 l -0.041,0 -0.1222,0.40739 0.041,0.89625 -0.4074,0.48887 -0.2037,-0.0407 0.3259,-1.18143 -0.4481,-0.12222 0.2444,-0.81477 0.4074,0.12221 0.082,-0.28517 z m -17.2325,0.0407 0.3666,0 0,0.28517 -0.2444,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.774,0 0.4074,0 -0.163,0.57034 -0.2444,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.037,0 0.4073,0 -0.1222,0.69256 c -0.1459,0.15267 -0.3487,0.24965 -0.5703,0.32591 l -0.6111,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.414,0 0.5704,-0.19281 0.5704,-0.65182 z m -22.4472,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7703,0.0407 0.8148,0.20369 -0.082,0.2037 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40739 z m 21.4286,0 0.2852,0.16295 -0.082,0.2037 -0.2852,-0.0407 0.082,-0.32591 z m -2.3221,0.0815 0.2852,0.0815 -0.2852,0 0,-0.0815 z m -14.2993,0.36665 0.4888,0.5296 -0.2037,0.65182 -0.041,0 -0.2444,-0.32591 -0.5296,-0.12221 c -0.048,0.151 -0.1391,0.27939 -0.2444,0.36664 l -0.8555,-0.24443 c -0.047,-0.23181 -0.2222,-0.40088 -0.6111,-0.48886 l 0.041,-0.2037 0.5703,0.12222 0.2037,0.24443 c 0.1053,-0.3329 0.5689,-0.44605 1.4259,-0.5296 z m 3.1776,0.32591 0.3667,0.44812 -0.6519,-0.12221 0.2852,-0.32591 z m 21.6731,0 0.1222,0.20369 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.3444,0.12221 0.2037,0.36665 -0.041,0.2037 -0.2445,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.2037 z m -25.9099,0.40739 0.2444,0.0407 -0.1222,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5074,0.0815 0.2037,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.1022,-0.11766 -0.1629,-0.16295 z m -3.9109,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.4889,0.61109 0,-0.48887 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12221 0.1559,0.20013 0.3052,0.42706 0.4889,0.65182 l -0.326,0.44813 -0.1222,-0.12222 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28517 0.041,0.61108 c -0.1697,-0.1506 -0.3284,-0.32459 -0.4888,-0.48887 l 0.082,-0.20369 -0.3667,-0.0815 c -0.1552,-0.17217 -0.3026,-0.34479 -0.4481,-0.5296 l 0.6518,0.12221 0.163,-0.48886 z m 11.7328,0.24443 0.4481,0 0,0.48887 -0.4481,0 0,-0.48887 z m 11.6921,0 0.1629,0 0,0.12222 -0.1629,-0.12222 z m -4.4406,0.0407 0.163,0.28517 -0.041,0.16296 -0.9778,0 -0.2851,0 0,-0.0407 c 0.097,0.0219 0.1954,0.0613 0.2851,0.0407 0.1795,-0.0411 0.3597,-0.1964 0.4889,-0.40739 l 0.3667,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.157,0.22678 0.163,0.36665 l -0.6926,0 0.163,-0.28518 0.3666,-0.0815 z m 17.1103,0.0407 0.163,0.0407 -0.041,0.16296 -0.163,-0.0815 0.041,-0.12221 z m -21.1434,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.15471 0.2444,0.28518 l -0.3666,0 0,-0.28518 z m 11.692,0.44813 0.5296,0.12222 -0.082,0.24443 -0.5296,-0.12221 0.082,-0.24444 z m -13.0364,0.0815 0.1629,0.12222 -0.082,0.20369 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2444,0.0407 0.1222,0.0815 0.163,0 -0.082,0.24444 -0.3667,0.20369 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.20369 -0.1222,-0.28517 0,-0.0815 z m 25.421,0.0407 0.1222,0.44812 -0.1222,0.28518 0,-0.7333 z m -16.1733,0.16295 -0.041,0.2037 -0.041,0.48886 -0.937,-0.12221 -0.082,-0.0815 0.774,-0.36665 -0.3666,-0.0815 0.6925,-0.0407 z m -3.5036,0.0407 -0.041,0.12222 -0.2851,-0.0815 0.3259,-0.0407 z m 4.7665,0 0.4481,0.0815 0,0.0407 0,0.20369 c -0.1904,-2e-5 -0.2989,0.0479 -0.4074,0.12222 l -0.041,-0.44813 z m -2.5666,0.0407 -0.1222,0.44813 -0.6111,-0.0815 -0.2444,-0.24443 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.24443 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2852,0 0.7333,-0.0407 z m 3.7888,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.1629,0.24443 0.2852,0 0.163,-0.12221 0.2851,0.28517 -0.3259,0.36665 c -0.7618,0.018 -1.1993,0.12476 -1.2629,0.32591 l -0.082,0.20369 0.2852,0.0815 0.5296,0 -0.2444,0.28517 c -0.3068,2e-5 -0.7246,-0.15749 -1.1815,-0.36665 l 0.1223,-0.32591 -0.3667,-0.0815 -0.3259,0.16296 c -0.3254,-0.18391 -0.6735,-0.42525 -1.0592,-0.69256 0.5299,0.11988 0.9408,0.0209 1.2222,-0.28517 0.452,0.0971 0.8964,0.16295 1.3851,0.16295 l 0.082,0 0.1629,0.0407 0.041,-0.16295 0.1222,-0.12222 z m 1.9147,0.0815 c 0.012,0.27818 0.1751,0.47168 0.6111,0.57034 l -0.041,0.12222 -0.163,0.0815 c -0.4016,-0.0334 -0.7787,-0.0703 -1.0999,-0.0815 0.1875,-0.17418 0.4654,-0.46552 0.6925,-0.69256 z m 25.1766,0 0.1222,0.0407 -0.2444,1.01847 -0.1222,-0.0407 0.2444,-1.01847 z m -10.9587,0.0815 0.2444,0.0815 -0.082,0.28517 -0.1629,0 0,-0.36665 z m -20.8176,0.12222 c 0.2965,0.34462 0.6324,0.71226 0.9777,1.09995 l -0.7333,-0.16296 c -0.2939,-0.25079 -0.5827,-0.52525 -0.8555,-0.81477 l 0.6111,-0.12222 z m -1.0592,0.24443 0.4481,0.7333 -0.3259,0 c -0.2313,-0.13531 -0.4738,-0.24993 -0.6925,-0.40739 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.4481,-0.0815 z m 23.2212,0.16296 0.5703,0.12222 0,1.18142 -0.4481,0.12222 -0.5296,-0.12222 0.4074,-1.30364 z m 11.2846,0.12222 -0.2037,0.40738 0.082,-0.32591 0.1222,-0.0815 z m -16.2955,0.12221 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.6769,0.12222 c 0.029,0.007 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.3666,0 0.2037,-0.0815 z m 29.169,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1196,-0.0874 0.2149,-0.19178 0.326,-0.28517 z m 3.8295,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2036,0.0815 c -0.072,0.0648 -0.1696,0.10082 -0.2444,0.16296 -0.1919,0.15941 -0.368,0.33853 -0.5703,0.48887 -0.078,-0.0803 -0.1398,-0.20169 -0.2037,-0.32591 0.1572,-0.0786 0.2843,-0.16146 0.4481,-0.24444 l 0.3259,0.0815 0.041,-0.20369 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.20369 -1.1,0.52961 -0.1629,0 0,-0.2037 c 0.1087,2e-5 0.2966,-0.11103 0.5296,-0.28517 l 0.7333,-0.0407 z m -4.9294,0.12222 c 0.1297,0.14533 0.2301,0.25609 0.3666,0.40739 l 0,0.20369 c -0.066,-0.0425 -0.1389,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.1629,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2445,-0.16296 l 0.163,-0.0407 0.041,-0.16295 z m 10.0217,0.0815 0.3667,0.24443 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.32591 z m -2.0369,0.32591 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 6.6404,0 0.4074,0 0,0.0815 -0.2444,0.12222 -0.163,0 0,-0.20369 z m -3.0961,0.12221 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8256,0 0.2445,0.0407 0.2444,0.28517 0.082,0 0,0.40739 c -0.3615,0.0312 -0.758,0.0611 -1.1407,0.0815 l 0.3259,-0.48887 c 0.079,-0.004 0.1557,0 0.2445,0 l 0,-0.32591 z m -6.4774,0.32591 0.6518,0 0,0.48887 -1.0185,0 0.3667,-0.48887 z m 8.1885,0.0407 0.2851,0.0815 -0.041,0.12222 c -0.1062,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24444 z m 9.4107,0.0407 c -0.02,0.28762 -0.042,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40739 -0.3259,-0.44813 0.5703,-0.81478 z m -12.0588,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2444,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2444,-0.24443 z m -8.6366,0.16296 0.6518,0 0,0.20369 -0.6518,0.20369 0,-0.40738 z m 1.0185,0 0.4888,0 0,0.20369 -0.4888,0 0,-0.20369 z m 3.585,0 0.3666,0 -0.3666,0.40738 -0.4889,0 0.4889,-0.40738 z m -15.1549,0.20369 0.041,0 0,0.20369 -0.4481,0 0,-0.0407 0.4074,-0.16296 z m 3.3406,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.9702,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.9109,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.0473,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.1629,0.48886 -0.5296,-0.12221 0.041,-0.0815 c 0.1754,-0.0707 0.4149,-0.20083 0.611,-0.28517 z m 5.2961,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24443 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2444,-0.12221 z m -32.6319,0.28517 0.6519,0 0,0.24443 -0.6519,0 0,-0.24443 z m 2.9332,0 0.3667,0 -0.3667,0.5296 0,-0.5296 z m -3.5442,0.24443 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.611,0 1.0185,0.28517 1.2222,-0.28517 1.3036,0 0,0.48887 -5.1738,0 0,-0.2037 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4482,0.48887 -0.2037,-0.2037 -1.0184,0.2037 -2.4851,0 -0.4481,-0.48887 z m 5.459,0 0.5703,0 0,0.28517 -0.5703,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.16296 0.041,-0.0407 z m -30.5134,0.28517 1.0184,0 0,0.2037 -1.0184,0 0,-0.2037 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <g
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       transform="translate(-1144.3833,-670.93683)"
+       id="g4280">
+      <text
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         xml:space="preserve"
+         style="font-size:38.92898941px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+         x="448.67789"
+         y="763.05591"
+         id="text3608"
+         sodipodi:linespacing="125%"><tspan
+           style="fill:#cccccc;fill-opacity:1"
+           sodipodi:role="line"
+           id="tspan3610"
+           x="448.67789"
+           y="763.05591">Obeo</tspan></text>
+      <text
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         xml:space="preserve"
+         style="font-size:38.92898941px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient4287);fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+         x="448.19492"
+         y="762.7049"
+         id="text3652"
+         sodipodi:linespacing="125%"><tspan
+           style="fill:url(#linearGradient4287);fill-opacity:1"
+           sodipodi:role="line"
+           id="tspan3654"
+           x="448.19492"
+           y="762.7049">Obeo</tspan></text>
+      <path
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         style="fill:none;stroke:url(#linearGradient4289);stroke-width:0.15828319;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 448.01488,762.98588 102.49656,0"
+         id="path3656" />
+    </g>
+    <g
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       transform="translate(-1138.3833,-672.93683)"
+       id="g4320">
+      <text
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         xml:space="preserve"
+         style="font-size:47.73044586px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+         x="488.36356"
+         y="809.74487"
+         id="text3612"
+         sodipodi:linespacing="125%"><tspan
+           style="fill:#cccccc;fill-opacity:1"
+           sodipodi:role="line"
+           id="tspan3614"
+           x="488.36356"
+           y="809.74487">Designer</tspan></text>
+      <text
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         xml:space="preserve"
+         style="font-size:47.73044586px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient4329);fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+         x="488.69382"
+         y="810.61804"
+         id="text3648"
+         sodipodi:linespacing="125%"><tspan
+           style="fill:url(#linearGradient4329);fill-opacity:1"
+           sodipodi:role="line"
+           id="tspan3650"
+           x="488.69382"
+           y="810.61804">Designer</tspan></text>
+      <path
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         style="fill:none;stroke:url(#linearGradient4331);stroke-width:0.15258449;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 493.67614,765.27527 0,42.91111"
+         id="path3658" />
+      <path
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         style="fill:none;stroke:url(#linearGradient4333-5);stroke-width:0.15907384;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 576.75064,784.03042 124.6101,0"
+         id="path3660" />
+      <path
+         inkscape:export-ydpi="112"
+         inkscape:export-xdpi="112"
+         inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD\png\splashscreen.png"
+         style="fill:none;stroke:url(#linearGradient4335);stroke-width:0.13852334;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 703.19034,780.29296 0,15.01249"
+         id="path3662" />
+    </g>
+    <rect
+       y="300.51923"
+       x="-879.34717"
+       height="17.866808"
+       width="457.90967"
+       id="rect3666"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <text
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       sodipodi:linespacing="125%"
+       id="text3670"
+       y="210.88388"
+       x="-649.24847"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#314d5b;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+       xml:space="preserve"><tspan
+         y="210.88388"
+         x="-649.24847"
+         id="tspan3672"
+         sodipodi:role="line">2</tspan></text>
+    <text
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       id="text3674"
+       y="211.43802"
+       x="-627.83978"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#314d5b;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+       xml:space="preserve"><tspan
+         y="211.43802"
+         x="-627.83978"
+         id="tspan3676"
+         sodipodi:role="line">.</tspan></text>
+    <text
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       id="text3678"
+       y="211.30322"
+       x="-617.69684"
+       style="font-size:30.67200089px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#304d5c;fill-opacity:1;stroke:none;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+       xml:space="preserve"><tspan
+         y="211.30322"
+         x="-617.69684"
+         id="tspan3680"
+         sodipodi:role="line">0</tspan></text>
+    <path
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.84883722;fill:#916f6f;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       d="m -501.64797,33.032758 -2.56654,0.488853 0,1.344371 0.57032,-0.611081 0.65187,0 0,0.203696 -1.22219,0.407385 0,2.077651 0.20372,0 -0.20372,0.285169 0,0.855507 c -0.12429,0.113389 -0.1888,0.189245 -0.28519,0.285164 l 0,0.488853 c 0.0956,-0.04621 0.18478,-0.0603 0.28519,-0.122206 l 0,0.733291 -0.28519,0.244427 0,8.555036 0.61115,2.24061 0.0814,0.570332 c -0.0282,0.0807 -0.0612,0.167769 -0.0814,0.244438 0.0662,0.0489 0.10789,0.108168 0.16288,0.162947 l 0,0.162958 -0.24441,-0.08151 c -0.0239,-0.006 -0.057,-0.0011 -0.0815,0 0.0359,-0.126646 0.062,-0.256916 0.12218,-0.366642 l -0.16295,-0.611075 -0.40736,0.0815 0,3.870133 c 0.0133,-0.0023 0.0268,0.0039 0.0409,0 l 0.20372,-0.04071 0.0409,-0.04071 0,0.855512 c -0.0897,0.261711 -0.19028,0.502083 -0.28513,0.692549 l 0,0.977718 0.24435,0.0815 -0.0409,0.162947 -0.20365,-0.08149 0,11.121565 0.16295,-1.181406 0.12225,0.04071 0,1.018465 0.20365,0 0.48891,0.529585 c -0.0998,0.0821 -0.18978,0.193407 -0.24449,0.36665 l -0.20365,-0.244427 -0.0815,0 -0.16294,-0.651808 0,0.570328 -0.0408,0 -0.24442,0.122217 0,0.896241 0.28519,-0.122216 0,0.3259 -0.12225,-0.04077 -0.12225,0.407387 0.2445,0.04071 0.3666,-0.122211 0,0.244428 -0.3666,0 0,0.855509 -0.28519,0.08149 0,0.20369 0.28519,-0.08149 0,0.08149 c 0.41399,4.5e-5 0.57032,-0.142148 0.57032,-0.448125 l -0.20372,-0.20369 0.52962,0 -0.12224,0.08151 -0.0815,0.244421 0.12217,0 0,0.0815 0.20379,0.244433 0,0.285165 -1.01846,0 0,0.244433 3.38121,0 c 0.23471,-0.638315 0.52695,-0.977722 0.937,-0.977722 l 0,-0.407374 -0.57033,0 -0.28519,0.203684 -0.16295,0 -0.24435,-0.325908 0.0814,-0.244425 -0.24436,0.0815 -0.65186,0 -0.3259,0.122217 0,-0.04071 -0.36666,-0.0815 -0.28513,0.203695 -0.44821,-0.203695 0,-0.244421 1.0593,0 0,-0.203684 -0.20378,-0.203709 0,-0.244428 0.48891,0.162954 -0.0815,0.203697 0.57033,0.122217 0.28519,-0.04071 0.61102,0.203684 -0.0815,0.244428 0.28519,0.0815 0.57033,-0.04071 0.65187,0.244438 0,0.20369 c -0.32196,6.5e-5 -0.81637,0.386511 -1.38514,1.181406 l 18.57669,0 c 0.0816,-0.0802 0.16349,-0.163031 0.24452,-0.244433 0.21202,0.07559 0.50392,0.164935 0.73327,0.244433 l 1.46661,0 -0.24452,-0.40738 1.14071,0.0815 0.20365,0.0815 -0.0412,0.162948 -0.52955,0.0815 0.73327,0 7.86255,0 0.0412,-0.162954 c 0.0614,0.03068 0.13555,0.0557 0.20365,0.08149 l -0.0412,0.0815 1.30369,0 0.36663,-0.244427 -0.0412,0.244427 2.56652,0 0.0815,-0.244427 0.24437,0.04071 -0.0815,0.203696 0.44824,0 0,-1.344371 -0.0815,0.244433 -0.24445,-0.04071 0.12226,-0.407386 0.20365,0.0815 0,-9.043902 -0.12226,-0.04071 0.12226,-0.570333 0,-1.711017 -0.28518,0.0815 -0.0412,0.203698 0.20365,0.325907 -0.61108,1.099931 -0.20372,-0.04071 0.93699,-3.503487 0,-1.5888 -0.28518,0.122216 -0.0412,1.059197 -0.65182,2.362811 -0.57028,0.285171 1.18137,-4.399728 0.36671,0.570333 0,-1.344366 -0.16299,-0.04071 0.16299,-0.570339 0,-1.833212 c -0.25969,-0.392088 -0.52386,-0.782771 -0.81481,-1.140677 l 0.81481,0.04071 0,-1.222156 -0.20372,0.855508 -0.24452,-0.0815 0.32597,-1.181412 0.12227,0.04071 0,-3.544233 -0.0815,0.285169 -0.44817,-0.122222 0.52955,-2.036908 0,-7.984709 -0.0412,0.122216 -0.81473,0 -0.65188,-0.366642 -0.81473,0 0.0412,-0.203689 -0.32598,-0.529602 0.0815,-0.285164 0.20371,0.04072 0.85546,0.774028 0.28518,-0.162958 0.0815,-0.285165 c -0.31623,-0.387557 -1.7549,-1.088803 -4.31824,-2.07765 l -1.09998,0 2.8109,1.181401 -0.12212,0.407386 0.28511,-0.162947 0.69253,0.203684 -0.48881,0.81477 -0.20372,-0.04071 -0.16299,-0.285163 -0.24431,-0.04072 -0.3667,0.122215 0.12218,-0.407385 0.36671,-0.162959 0,-0.04072 -0.24444,-0.285163 -0.24445,-0.08151 -0.28519,0.203701 -0.24444,-0.04071 -0.69247,-0.488864 -0.57043,0.366642 -1.54807,-1.262881 -1.83318,0 -0.0815,0.325906 -0.24444,-0.04071 0.0815,-0.285169 -3.2998,0 1.01844,1.54805 0.20366,0.04071 -0.16293,0.692554 -0.44816,-0.122211 -0.0815,0.203684 c 0.32764,0.0876 0.56241,0.558486 0.69255,1.385103 l -0.16293,0.692549 -0.24444,-0.0815 0.12219,-0.448117 -0.73327,-0.203695 -0.16292,0.448122 0.48882,0.122221 -0.24444,0.896239 -0.48883,-0.122211 -0.20372,0.936975 0.44817,0.122222 -0.12227,0.407374 -0.44808,-0.122211 -0.12226,0.407385 0.44816,0.12221 -0.16299,0.69255 c -0.4096,-0.109508 -0.69701,0.123207 -0.93699,0.692547 -0.0217,0.0836 -0.0383,0.175154 -0.0412,0.244437 l -0.24437,-0.285163 -0.20372,0.285163 c -0.008,-0.0895 -0.008,-0.188935 0,-0.285163 l 0.20372,0 0,-0.2037 -0.16299,-0.162948 c 0.0138,-0.071 0.0202,-0.129638 0.0412,-0.203695 l 0.52962,0.162959 0.16299,-0.651811 -0.40744,-0.611082 0.937,-1.385102 -0.20366,-0.04071 0.28511,-0.162947 0.0815,-0.285174 -0.20372,-1.466571 0.6518,-0.244438 -0.24444,-0.0815 0.44816,-0.611075 c 0.15368,-1.067492 -0.19902,-1.684757 -1.05924,-1.914693 l 0.28517,-0.162958 0.0815,-0.244427 -1.5888,0 0,0.08151 0.69254,0.162958 -0.93699,0.733285 c 0.0846,-0.316334 0.0484,-0.640167 -0.0404,-0.977712 l -1.58888,0 -0.20364,0.692549 -0.24438,-0.04072 0.16292,-0.651812 -0.93699,0 0.24445,0.488854 -0.0815,0.448121 -0.36671,-0.570332 0.0815,-0.366643 -0.44809,0 -0.85553,3.096106 c -0.0967,-0.04508 -0.17968,-0.07669 -0.28526,-0.122218 l -0.0412,0 -0.16292,-0.244425 0.28518,-0.122216 0.0815,-1.181408 0.36665,-1.425839 -0.48876,0 -0.61116,2.362819 -0.24437,0 0.61101,-2.362819 -2.60726,0 -0.0409,0.162948 0.44807,0.122222 -0.28511,1.05919 c -0.99876,-0.379435 -1.82209,-0.651766 -2.44431,-0.651811 -0.1476,0.374165 -0.4354,0.625016 -0.77404,0.774033 -0.0169,-0.069 -0.0219,-0.133694 -0.0409,-0.203702 l -0.0409,-0.203684 0.57032,-0.0815 0,-0.285163 c 7e-5,-0.200889 -0.25463,-0.366984 -0.77403,-0.488865 l -0.0409,-0.203684 -0.97769,0 c 0,0.01361 0,0.02711 0,0.04071 l 0,0.244427 c -0.27872,-0.137283 -0.62412,-0.216041 -1.01846,-0.28517 l -1.71104,0 0,0.162949 -0.24443,0.0815 -0.0815,-0.244427 -0.52962,0 0.0409,0.122205 -0.16296,0.162959 -0.0815,-0.285164 -2.7295,0 -0.20366,0.977712 -0.32589,0 0,-0.488858 c 0.0847,-0.176172 0.15528,-0.357469 0.20373,-0.488854 l -2.40361,0 z m 36.25727,12.832559 0,-0.936975 -0.0412,0.04071 -0.16291,0.611081 0.20372,0.285169 z m -34.34259,-12.751091 -0.28518,0.448127 -0.48885,0.0815 0.0815,-0.285162 0,-0.122222 0.69249,-0.122217 z m 13.48451,0.04072 0.44802,0.122222 -0.0412,0.244427 -0.44802,-0.122212 0.0412,-0.244437 z m -16.29547,0.366649 0,0.488863 -0.44807,0 0.44807,-0.488863 z m 7.82182,0 0.0815,0.04071 0.20365,0.896244 c -0.22246,-0.02039 -0.43723,-0.04548 -0.6111,-0.0815 l 0.20364,-0.651812 -0.0408,-0.162958 0.16295,-0.04071 z m 1.46661,0 0.40737,0.488863 -0.40737,0 0,-0.488863 z m -2.56656,0.162958 0.0815,0.285162 -0.12225,0.04072 c -0.071,-0.0791 -0.0815,-0.189546 -0.0815,-0.285162 l 0.12224,-0.04072 z m -6.15148,0.04072 0.44807,0 0,0.285163 -0.44807,0 0,-0.285163 z m 5.2145,0 0.20365,0 0,0.285163 -0.20365,0 0,-0.285163 z m -2.97393,0.285163 c 0,-0.005 0.038,0.005 0.0409,0 l 0,0.244427 -0.16294,0 c 0.0379,-0.0691 0.0876,-0.179476 0.12224,-0.244427 z m 13.03634,0 0.20364,0.0815 -0.16299,0.651813 -0.32586,-0.570344 0.28521,-0.162947 z m 11.81409,0.04072 0.44823,0.122212 -0.12226,0.488864 -0.48889,-0.122221 0.16292,-0.488855 z m -5.82559,0.162948 0.24445,0.04071 -0.16284,1.588799 -0.28525,0.162946 -0.12219,0.488865 -0.52963,2.525772 -0.65181,-0.651805 1.09991,-2.647994 -0.24438,-0.285169 0.0815,-0.203685 0.57028,-1.018465 z m 0.9778,0.04071 0.57028,0.122223 -0.28518,0.162947 -0.0815,0.203695 -0.77407,3.870138 -0.28511,0.162954 -0.0815,1.140665 -0.20365,0.774033 -0.57035,0 0.16299,-0.570333 c 0.24487,-0.0957 0.44809,-0.212887 0.44809,-0.366648 l -0.28518,-0.285164 1.38509,-5.21451 z m -17.72128,0.203701 0.24449,0 0.0409,0.162948 -0.0815,0.04071 -0.12218,0 -0.0815,-0.203689 z m 14.5436,0.122206 0.20371,0.04071 -0.0815,0.448126 -0.24445,-0.0815 0.12219,-0.407385 z m 12.62896,0.04071 0.20372,0.0815 -0.0815,0.407385 -0.24452,-0.0815 0.12226,-0.407385 z m -29.82051,0.04071 0.65179,0 0,0.2037 -0.65179,0 0,-0.2037 z m -2.0777,0.2037 1.05923,0 c -0.0288,0.09769 -0.0825,0.188673 -0.12224,0.285163 l -0.93699,0 0,-0.285163 z m 11.85491,0 0,0.52959 -0.48884,0 0.48884,-0.52959 z m 24.36162,0.162948 c -0.074,0.276386 0.14176,0.513072 0.57035,0.651811 l 0,-0.529596 -0.57035,-0.122215 z m -6.07004,0.325907 0.4481,0.122213 -0.36664,1.303625 -0.44803,-0.122211 0,-1.181414 0.36657,-0.122213 z m -17.06948,0.448121 0,0.488863 -0.20364,0 -1.67026,0.244427 c 0.0345,-0.186376 0.0745,-0.374899 0.0815,-0.570342 l 1.79251,-0.162948 z m 0.36669,0 0.65179,0.203684 0,0.285179 -0.85544,0 0.20365,-0.285179 0,-0.203684 z m 1.01845,0 0.0409,0 0.28519,0.448121 -0.0408,0.04071 -0.2852,0 0,-0.488863 z m 1.83328,0 -0.0815,0.325905 -0.28511,0.04071 0.12212,-0.325906 c 0.0735,-0.01 0.15966,-0.03568 0.24444,-0.04071 z m 10.26609,0 0.65181,0.366642 -0.0815,0.20369 -0.44809,0.855506 c -0.0763,0.613114 0.11995,0.990449 0.52956,1.099934 l -0.1222,0.407385 -0.52955,-0.122216 -0.0816,0.285163 0.24451,0.285175 -0.36663,0.12221 0.0412,1.181413 -0.48883,1.792489 -0.52962,-0.122223 -0.40744,-1.303618 0.12226,-0.488864 0.24452,0.04071 -0.12226,0.488863 0.4481,0.122205 0.0404,-0.203683 -0.28518,-0.814771 0.28518,-0.12221 c 0.11857,-0.44345 -0.0788,-0.764876 -0.57036,-0.896244 l 0.65189,-0.285169 -0.12226,0.407385 0.48882,0.122211 0.36671,-3.218327 0.0412,-0.20369 z m -20.49151,0.122216 0.24443,0.04072 0.12224,0.488864 -0.32597,-0.0815 0,-0.366649 -0.0408,-0.0815 z m -7.74027,0.0815 0.44807,0 -0.44807,0.529602 0,-0.529602 z m 1.30359,0 0.81475,0 c -0.0127,0.01563 -0.0282,0.02521 -0.0409,0.04072 -0.25717,0.205415 -0.34287,0.304006 -0.57025,0.488865 l -0.20372,-0.244428 0,-0.285179 z m 1.30366,0 0.3666,0 0.40744,0 0,0.203695 -0.0815,-0.0815 -0.48884,0.122216 0,0.244426 -0.0815,0.04072 -0.20365,-0.244426 -0.0815,0 0.16295,-0.285175 z m 1.14071,0 0.61102,0 -0.0409,0.285175 -0.57032,0 0,-0.285175 z m 7.29213,0 0.6518,0 -0.0815,0.244437 0.12216,0.448112 -0.28512,0.04072 -0.40737,-0.651813 0,-0.0815 z m 1.26296,0 0.20364,0 0.0815,0.244437 -0.20372,0.04071 -0.0814,-0.285179 z m 21.14316,0 0.81488,0 0.24437,0.04072 -0.0815,0.203695 -1.0999,0.162948 0.12211,-0.407385 z m -12.91407,0.0815 0.20372,0.08151 -0.0815,0.407386 -0.24445,-0.08151 0.1222,-0.407386 z m 5.25537,0 -0.0815,0.203702 0.48883,0.122204 0.0404,-0.203683 -0.44817,-0.122223 z m 10.14383,0.366649 0.4889,0.122217 0.40736,0.570332 -0.65188,0.325905 0.28525,0.0815 -0.61115,1.01846 c -0.32764,-0.0876 -0.36289,-0.371336 -0.24438,-0.814771 l 0.28517,-0.162945 0.0412,-0.203697 0,-0.936979 z m -1.38508,0.285163 0.24445,0.08151 0.0412,0.733285 -0.44817,-0.122216 0.16299,-0.692549 z m -25.50233,0.04071 0,0.407385 -0.2852,0 -0.0815,-0.325906 0.36667,-0.0815 z m 23.91346,0.04071 0.24451,0.08151 -0.12226,0.407379 -0.20372,-0.04071 0.0815,-0.448124 z m -24.7282,0.08151 0.0814,0.285163 -0.24435,0 0,-0.244427 0.16296,-0.04071 z m -8.22919,0.04072 1.01847,0 c -0.10098,0.0837 -0.19176,0.165865 -0.2852,0.244426 l -0.73327,0 0,-0.244426 z m 2.07762,0 0.44815,0 0,0.244426 -0.61109,0 0.16294,-0.244426 z m 7.86253,0 0,0.244426 -0.20365,0 -0.0408,-0.162948 0.24442,-0.0815 z m 3.74797,0 0.40736,0 0,0.244426 -0.40736,0 0,-0.244426 z m 1.05915,0 0.81483,0 0,0.244426 -0.81483,0 0,-0.244426 z m 22.36551,0.04071 0.4481,0.122203 0.28517,0.28517 0.0815,-0.407373 0.24444,0.04071 -0.12226,0.448111 -0.20365,-0.0815 0.16299,0.285175 -0.12225,0.488852 c -0.32764,-0.0875 -0.616,0.142067 -0.77401,0.733291 l -0.36663,-0.611074 0.36663,-1.303618 z m -31.00199,0.04071 0.28512,0.203685 -0.20372,0.08151 -0.0814,-0.285169 z m -4.72573,0.0815 0.0409,0.0815 -0.12225,0 c 0.0274,-0.03109 0.0535,-0.04958 0.0815,-0.0815 z m 31.97977,0.04071 0.52955,0.162958 -0.0412,0.20369 -0.52955,-0.122222 0.0412,-0.244426 z m -20.49146,0.04071 0.3666,0 0,0.285168 -0.3666,0 0,-0.285168 z m 3.54424,0 0.20365,0 c 0.29334,0.100041 0.50276,0.254317 0.65188,0.488863 l -0.0816,0.122211 c 0.0484,0.098 0.11294,0.188415 0.16299,0.285174 l -0.36664,0 0,0.244427 0.52956,0.0815 c 0.0742,0.137797 0.16797,0.272307 0.24452,0.407385 l -1.7925,0 0,-0.203696 c 0.55214,1.07e-4 0.81473,-0.223568 0.81473,-0.529595 l -0.3666,-0.407385 0,-0.488859 z m -9.28843,0.04072 0.12225,0.448122 -0.20373,0.04071 -0.0815,-0.325911 0.16295,-0.162947 z m -3.50347,0.0815 0.0815,0.448112 -0.44807,0.122222 -0.0408,-0.162954 0.3259,-0.04072 0,-0.325901 0.0815,-0.04072 z m 1.62956,0.04071 c 0.28505,1.066685 0.71236,1.543127 1.30359,1.385097 l 0.0815,0.162948 -0.16294,0.244437 -0.2445,-0.122215 c -0.59637,0.73086 -0.87087,1.451755 -0.69257,2.118387 l -0.85551,-0.651812 0.61116,-0.162953 -0.12224,-0.407384 c -0.36956,0.0988 -0.59842,-0.0975 -0.81482,-0.611075 l 0.97777,-0.733291 -0.44815,-0.936975 -0.0409,-0.162959 0.40744,-0.122205 z m 23.5876,0.244427 0.44808,0.122215 -0.0815,0.244428 -0.44817,-0.122216 0.0815,-0.244427 z m -14.95104,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.60341,0 0,0.0815 -0.0412,0.162959 -0.20365,-0.04072 0.24437,-0.203689 z m -10.55124,0.04071 c 0.15661,0.129303 0.32913,0.246326 0.57032,0.366649 l 0,-0.162959 0.0815,0.366643 0,0.08151 -0.44814,0.122204 -0.20365,-0.774017 z m 23.22093,0.04071 0.44818,0.122223 0,0.977712 -0.28519,0.122221 -0.0412,0.203695 -0.16299,1.46657 -0.40744,0.570345 0.20372,0.244426 -0.32591,0.203695 0.36671,0.570333 -0.28525,0.122215 -0.24437,-0.04071 -0.0412,1.140677 -0.32591,1.140665 -0.44823,-0.162949 -0.20365,0.692551 c 0.0137,0.02419 0.0288,0.0565 0.0412,0.0815 l -0.12219,0.0815 0.16291,0.04071 c 0.0833,0.203786 0.1422,0.440824 0.16293,0.692549 l -0.0412,0.203701 -0.16292,-0.244427 -0.2851,-0.0815 -0.0412,0.04071 0.24437,-1.548061 0.774,-2.851679 0.44824,-0.814764 -0.28525,-1.059197 0.52956,0.162959 0.3259,-2.077663 z m -28.43544,0.04072 -0.0409,0.448121 -0.28519,0.0815 -0.28519,-0.162958 -0.20373,0.0815 0.36667,0.488859 -0.48885,0.611075 -0.32597,-0.488865 c 0.0714,-0.01669 0.12789,-0.04071 0.2038,-0.04071 l 0,-0.488865 -0.16295,0 -0.20372,0.285169 -0.20372,0 0.36659,-0.611074 1.26296,-0.203695 z m 4.80713,0 0.16296,0.651822 -0.20373,0.04072 -0.20372,-0.611074 0.24449,-0.0815 z m -7.08855,0.285175 0.20372,0 0,0.285168 -0.20372,0.244427 -0.24442,0 0,-0.325906 c 0.0778,-0.065 0.16337,-0.130041 0.24442,-0.203689 z m 32.59084,0.407373 1.50735,1.344372 -0.12226,0.448116 -0.52962,-0.162948 -0.48882,1.792482 -0.20366,-0.04072 0.4073,-2.485031 -0.2851,0.122217 -0.32591,-0.0815 0.0412,-0.936992 z m 4.48117,0 0.77415,0 -0.12227,0.407385 -0.69254,-0.203684 0.0412,-0.203701 z m -27.41691,0.122222 0.0408,0 0.20365,0.203695 -0.16294,0.04072 -0.0815,-0.244425 z m 3.422,0 0.57031,0 0,0.203695 -0.57031,0 0,-0.203695 z m 5.4997,0 0.0412,0 0,0.203695 -0.0815,0 0.0412,-0.203695 z m 0.52962,0.162958 c -0.0138,0.0596 -0.0231,0.09909 -0.0412,0.162947 l 0.40729,0.122216 c -0.13945,0.129179 -0.34541,0.162983 -0.65174,0.162948 l -0.20372,0 0,-0.203684 0.48883,-0.244427 z m -4.64418,0.04072 0.65179,0.203684 0,0.448128 c -0.41406,0 -0.65179,0.182893 -0.65179,0.488853 l -0.16304,0 c 0,-0.458915 -0.13133,-0.733229 -0.40729,-0.733291 l 0,-0.20369 0.57033,-0.203684 z m 11.44749,0.04071 0.32591,0.61108 -0.0412,0.203684 -0.32591,-0.611069 0.0404,-0.203695 z m -18.08791,0.04071 0.57033,0.285174 0.65179,2.362815 0,0.0815 -0.3666,-0.5296 -0.20372,0 0.57032,0.855506 0.0408,0.651811 0.2852,0.122217 -0.36661,0.570332 -1.1814,-4.39974 z m 15.43986,0 0.24445,0.04072 -0.28518,1.099934 -0.24438,-0.04071 0.28511,-1.099934 z m -7.08849,0.122216 0.57028,0.203689 0,0.244432 -0.77393,0 0.20365,-0.244432 0,-0.203689 z m -9.28836,0.203689 0.48884,0.488859 0.0409,0.162958 -0.48891,0.122211 -0.16296,-0.651812 0.12225,-0.122216 z m 1.99616,0.122216 0.32589,0.325905 0,0.0815 0.0815,0.04071 0.20373,0.244428 -0.16296,0.162952 0.65179,2.36282 -0.28519,-0.162948 -0.81481,-3.055379 z m -7.82175,0.08151 0.0815,0.366643 -0.20365,0.04071 -0.0815,-0.366643 0.20372,-0.04071 z m 2.4443,0.203684 -0.0815,0.611081 0.0815,0.244426 0.24443,0.162948 c -0.77595,0.207437 -1.07559,0.748021 -0.93699,1.711019 l 0.36666,0.570333 -0.20372,0.04071 0.57032,0.244425 -0.16294,1.303629 0.0815,0.285169 0.24443,0.122216 -0.20372,0.04071 0.57032,0.855506 c -0.14091,0.112527 -0.28639,0.239515 -0.44807,0.407386 l -0.0815,-0.203695 -0.40737,0.122215 -0.0815,-0.366642 0.40736,-0.122222 -0.20372,-0.814759 -0.44807,0.122211 -0.20372,-0.814759 0.40737,-0.122217 -0.12225,-0.448126 -0.65172,0.2037 0.0815,0.44811 -0.20371,0.04071 -0.16295,-0.611068 c 0.11738,-0.745669 0.35632,-1.183884 0.65186,-1.262887 l -0.0815,-0.162952 -0.40737,0.0815 -0.16295,-0.611081 0.20364,-0.04072 1.34444,-2.036919 z m 31.32793,0.203696 0.24444,0.04071 0.24437,0.28517 0.28525,-0.122216 0.69255,0.162953 0.4481,2.281341 -0.0404,0.203695 0.28518,0.0815 0.28511,-0.122222 0.24451,0.04071 -0.69261,2.647983 c -0.61586,-0.322888 -0.84817,-0.90561 -0.61109,-1.792466 l -0.20372,-0.08151 0.28519,-0.122215 0.12218,-0.488865 0.0815,-1.181402 -0.57028,-0.122221 -0.69262,2.688726 0.24445,0.285174 -0.36657,0.12221 -0.0404,0.203696 0.20364,2.199867 -0.8148,0 c -0.11605,0.567314 -0.18942,1.084278 -0.24437,1.507313 -0.1695,0.107546 -0.28489,0.397163 -0.40744,0.855506 l -0.32591,0.122217 -0.44817,-0.122217 -0.16291,-0.936979 0.57028,-0.48886 0,-0.12222 c 0.0549,0.0879 0.1487,0.167198 0.28525,0.203701 l 0.20372,0.04071 0.0815,-0.2037 0.24445,-1.873962 0.36663,-0.529595 0.73327,-3.625706 0.24445,-0.89624 -0.44817,-0.122214 -0.36656,1.344359 -0.36671,0.122216 0.24445,0.285169 -0.12226,0.488859 -0.52955,-0.162953 0.81473,-3.096111 z m -9.20699,0.122209 0.20372,0.04072 -0.24438,0.89625 -0.28525,0.162947 -0.20364,-0.08151 0.52955,-1.018465 z m 6.0701,0 0.20372,0.04072 -0.0815,0.407385 -0.24445,-0.04071 0.12226,-0.407385 z m -24.9727,0.08151 0.20372,0.814765 -0.20372,0.04071 -0.24449,-0.774027 0.24449,-0.0815 z m -6.72188,0.04072 0.0408,0 0.12218,0.448122 -0.20372,0.04072 -0.0408,-0.122216 c 0.0274,-0.106142 0.0499,-0.23043 0.0815,-0.325906 0.007,-0.01328 -0.007,-0.02767 0,-0.04071 z m 34.26111,0.04071 0.24444,0.04072 -0.20371,0.692549 -0.20365,-0.04071 0.16292,-0.692547 z m -26.56153,0.04072 0.12224,0.448122 -0.32589,0.488853 -0.0815,-0.366648 0.28514,-0.570327 z m 13.8919,0.0815 0,0.04072 -0.32597,0.203695 -0.20365,-0.04072 c 0.0108,-0.04089 -0.007,-0.0837 0,-0.122217 0.18906,-0.01781 0.37812,-0.05621 0.52962,-0.0815 z m -11.73273,0.244426 0.12224,0.122217 -0.20371,0.0815 -0.0408,-0.162947 0.12224,-0.04071 z m 27.13187,0.122217 0.774,0.203689 -0.0412,0.244427 -0.77407,-0.20369 0.0412,-0.244426 z m -8.71802,0.04072 0.57028,0.162958 -0.0815,0.203689 -0.5297,-0.122211 0.0412,-0.244436 z m -15.4807,0.04071 0,0.611086 0.44815,0 c 0,0.337841 0.0358,0.626607 0.12224,0.814759 -0.21021,0.04267 -0.40055,0.0946 -0.57039,0.162953 l 0,-0.04071 -0.3666,-0.407379 -0.65188,0.203695 c 0,-0.110152 -0.0345,-0.207706 -0.0815,-0.285174 l -0.24442,-0.896239 1.34436,-0.162959 z m 2.89244,0 0.2852,0.2037 0.20365,0 1.87398,-0.2037 0,0.2037 -0.28517,0.651813 c 0.39928,-0.221188 0.70099,-0.473416 0.8148,-0.774034 0.0708,0.0934 0.13122,0.193698 0.20365,0.28517 l -0.36664,0.04071 0,0.448122 0.40744,0 0.24437,0.28517 0.16299,-0.244428 c 0.093,0.10678 0.18913,0.222067 0.28511,0.325907 l 0.0412,0.162947 -0.20372,-0.203689 -0.24445,0.12222 0.0412,0.692548 -0.24438,0.122206 -0.0815,0.162958 -0.65182,-0.122215 c -0.065,-0.128709 -0.10688,-0.244338 -0.12219,-0.366644 l 0.32598,0 0.36656,0.0815 0.0412,-0.203684 -0.28518,-0.529607 c -0.27116,-0.0725 -0.50564,-0.0647 -0.73327,-0.0815 l -0.20364,-0.203691 -0.0815,0.162948 c -0.0643,0.0023 -0.14371,-0.007 -0.20372,0 l -0.52956,-0.61107 -1.05919,0.203696 -0.7741,-0.203696 -0.44808,0.448122 -0.16295,-0.244426 0,-0.203696 c 0.24147,2.8e-5 0.43265,0.01641 0.61103,0 0.53539,-0.04901 0.7741,-0.177868 0.7741,-0.407385 z m 16.29535,0 0.24452,0.08151 -0.24452,0.896249 -0.24437,-0.0815 0.24437,-0.896249 z m -19.96176,0.407385 0,0.448128 0.40737,0 0,-0.448128 -0.40737,0 z m -1.54809,0.08151 0.24443,0.285164 -0.20372,0.366648 -0.16295,-0.529596 0,-0.0815 0.12224,-0.04071 z m -10.51054,0.122216 0.0409,0.325906 -0.16295,0.04072 0.12224,-0.366643 z m 21.83583,0 0.16292,0 0,0.244428 -0.16292,0 0,-0.244428 z m -16.6621,0.04072 0.52969,0.936987 0.0409,0.162947 -0.20372,0.285181 0.77404,1.833224 -0.52962,0.325905 -0.28519,-1.507318 -0.12217,-0.448127 -0.24444,-0.122217 -0.16294,-1.425839 0.20366,-0.04072 z m -0.89622,0.04071 1.14071,4.236793 -0.3259,-0.08151 0,-0.0815 -0.28519,-0.162958 -0.69257,-3.462753 -0.0408,-0.203685 -0.28519,-0.122216 0.48884,-0.122222 z m 19.8804,0.08151 0.24445,0.0815 -0.12226,0.407385 -0.20365,-0.04072 0.0815,-0.448122 z m -7.78107,0.0815 0.65186,0 0,0.20369 c -0.1266,0.03618 -0.22329,0.0983 -0.32591,0.162958 l -0.32595,-0.08151 0,-0.285163 z m -9.20688,0.122221 0.12225,0.366643 -0.20373,0.04071 -0.12218,-0.366643 0.20366,-0.04071 z m 15.11397,0.04071 0,0.122216 -0.0815,0 0.0815,-0.122216 z m 9.98098,0.244434 0.24437,0.04071 -0.16291,0.488852 -0.20372,-0.04071 0.12226,-0.488852 z m 5.25524,0 0.24444,0.04071 -0.16292,0.488852 -0.20372,-0.04071 0.1222,-0.488852 z m -22.81356,0.0815 0.36666,0 c -0.0955,0.175348 -0.20746,0.272965 -0.36666,0.285164 l 0,-0.285164 z m 7.12924,0 0.16292,0 0,0.20369 -0.16292,0 0,-0.20369 z m -1.50734,0.04072 0.28525,0.0815 -0.28525,0 0,-0.0815 z m 4.72567,0.0815 0.32598,0.611087 -0.12226,0.407373 -0.44816,-0.12221 0.24444,-0.89625 z m 1.01846,0.285169 0.20372,0.04071 c -0.079,0.295693 0.16031,0.561164 0.65181,0.692548 l -0.24452,0.896249 c -0.13728,-0.160281 -0.28474,-0.289924 -0.44802,-0.407384 l 0.0412,-0.203691 -0.44809,-0.122215 0.24437,-0.89625 z m -5.86632,0.04071 0.12219,0 0.0815,0.04071 -0.12219,0.448124 -0.16299,-0.0815 0.0815,-0.407385 z m 3.38125,0 0.57036,0 -0.0815,0.203696 -0.24445,0 c -0.0896,-0.0653 -0.17476,-0.126631 -0.24445,-0.203696 z m -7.41436,0.122216 c -0.0141,0.0405 -0.0296,0.0791 -0.0409,0.122221 l -0.12225,-0.04072 0.16296,-0.0815 z m -15.60287,0.162958 0.0815,0.162947 0.32598,2.933158 0.40736,-0.122216 -0.12217,-0.366642 0.61102,0.244431 c -0.44342,0.118509 -0.63651,0.414757 -0.52962,0.81476 l 0.24443,0.122221 -0.24443,0.733285 0.0408,0.203691 0.44815,-0.122212 -0.12224,-0.44812 0.20371,-0.04071 0.12225,0.448121 -0.36667,1.140677 -0.3666,-0.0815 c -0.0563,0.07109 -0.0683,0.134304 -0.12224,0.203685 l -0.44815,-1.588787 0.0409,-1.099933 -0.3259,-0.08151 0.20365,-0.285163 -0.0409,-0.244439 -0.48885,0.122217 -0.0815,-0.162949 0,-0.0815 0,-0.162958 c 0.33237,-0.117041 0.51341,-0.411552 0.44814,-0.936975 l -0.44814,-0.774034 -0.0409,-0.162946 0.57031,-0.366642 z m 31.16496,0 0.52963,0.122211 -0.20365,0.692548 -0.5297,-0.122211 0.20372,-0.692548 z m -28.92431,0.285169 -0.40744,0.0815 0.0409,0.20369 0.40744,-0.122223 -0.0409,-0.162946 z m 4.72566,0 0.12217,0.366643 -0.20365,0.04071 -0.12225,-0.366643 0.20373,-0.04071 z m 8.51431,0.04071 0.20372,0.0815 -0.24442,0 0.0408,-0.0815 z m 16.90652,0 0.52955,0.122204 -0.12219,0.488864 0.44816,0.122216 0.16299,-0.692547 0.44802,0.570331 -0.57027,0.814771 -0.16299,1.87395 -0.44817,0.529607 -0.24437,-0.04071 c 0.51366,-1.921503 0.41097,-2.920931 -0.24445,-3.09611 l 0.20372,-0.692549 z m -20.04331,0.0815 0.20365,0 -0.12225,0.448122 -0.16295,0 0,-0.203684 0.0815,-0.244438 z m 1.79244,0 0.20364,0 c 0.13683,0.161318 0.18661,0.385367 0.16302,0.651822 l -0.12218,0 -0.24448,-0.651822 z m -2.56655,0.122222 0.20371,0.366642 -0.28512,-0.0815 0.0815,-0.285164 z m 12.54749,0.162952 0.24438,0.08151 0.28518,0.203695 -0.16293,0.244427 c -0.10066,-0.099 -0.21339,-0.179174 -0.3259,-0.244427 l -0.0412,-0.285163 z m -7.17001,0.162948 0.28518,0 c 0,0.0716 0.0231,0.146621 0.0412,0.2037 l -0.40737,0 0.0815,-0.2037 z m 0.73327,0.0815 0.40737,0.122217 -0.32584,0 -0.0815,-0.122217 z m -6.72178,0.122217 0.20365,0.0815 -0.0815,1.22215 -0.0815,0.20369 -0.20372,-0.08151 0.0409,-0.488859 0.20372,0 0,-0.651812 -0.0815,-0.285167 z m 14.62513,0.04072 0.32584,0.0815 -0.16291,0.651813 -0.20365,-0.08151 -0.0404,-0.5296 0.0814,-0.122216 z m -15.35847,0.04071 0,0.203702 -0.12217,0 0.12217,-0.203702 z m -1.46654,0.162959 0.12217,0 0.12225,0.162947 0.0815,0.28518 -0.32597,-0.407384 0,-0.04071 z m 4.52194,0.04071 0.20364,0 -0.0814,0.203689 -0.16303,0 0.0409,-0.203689 z m -5.25529,0.162948 -0.0408,0.244437 c -0.14126,0.676563 -0.1364,1.030817 0.12225,1.099935 l -0.24442,0.203689 -0.0816,0.162958 -0.0408,0.244427 -0.12226,0.04072 -0.16294,-0.570343 0.44814,-0.0815 c -0.20597,-0.770582 -0.14738,-1.242963 0.12225,-1.344371 z m 1.87399,0 0.0409,0.122222 0.0815,-0.0815 0.16294,0.651811 0,0.122216 -0.48891,0.733292 0.28519,0.08151 -0.3259,0.122204 -0.0815,0.244437 0.2445,0.28517 -0.0815,0.162959 -0.40737,0.570327 0.0408,0.855512 -0.65179,1.303618 0.24443,0.285168 -0.48886,-0.162946 0.36667,-1.344372 -1.18148,0.733291 0.24449,0.285163 -0.85551,0.448122 -0.0815,1.01846 -0.40738,0.692548 c 0.0795,-0.499405 0.0113,-0.798017 -0.20365,-0.855495 l 0.28512,-0.162959 0.0409,-0.203689 0.20379,-1.303624 c 0.13732,-0.129895 0.27639,-0.271485 0.40731,-0.407379 l 0.44815,0.3259 c -0.0528,-0.211565 -0.15768,-0.375364 -0.24444,-0.529601 0.0507,-0.05551 0.11281,-0.106477 0.16295,-0.162947 l 0.24442,0.04071 0.0815,-0.366644 0.36666,-0.162958 -0.16294,-0.162958 c 0.0718,-0.0919 0.13393,-0.191205 0.20365,-0.285164 l 0.73334,0.04072 0.16294,-0.611075 -0.40737,-0.122216 c 0.0708,-0.107502 0.13507,-0.216097 0.20365,-0.325907 l 0.2852,0.0815 0.2852,-1.059193 c 0.10837,-0.19992 0.22259,-0.404898 0.32589,-0.611074 l -0.12224,-0.162959 0.0408,-0.122215 z m 11.7327,0.04072 0.20372,0.407385 0,0.04072 -0.4889,0 c 0.0123,-0.0714 0.0296,-0.135446 0.0404,-0.203684 l 0.24453,-0.244438 z m -22.16177,0.04071 0.0815,0.285169 -0.0815,0 0,-0.285169 z m 30.43169,0.203701 0.48882,0.122205 -0.40736,0.936987 c -0.0911,-0.136119 -0.20878,-0.264804 -0.36657,-0.366644 l 0.28511,-0.692548 z m -10.87717,0.162947 0.20364,0.04071 -0.20364,0 0,-0.04071 z m 0.97764,0.04071 0.40744,0.122215 -0.0412,0.162948 -0.20372,0.04071 -0.16291,-0.285163 c 0.007,-0.0028 -0.008,-0.03747 0,-0.04071 z m -8.39205,0.325905 0.40737,0.0815 -0.16295,0.651813 -0.28519,-0.570333 0.0408,-0.162959 z m 23.91344,0.04072 c 0.452,0.279232 0.60488,0.768247 0.40744,1.507319 l -0.52969,1.059191 c -0.19967,1.122326 -0.29139,1.890989 -0.28504,2.403557 l -0.16299,-0.04071 0.0412,-0.774028 0.12219,-0.488852 -0.36656,-0.774028 0.89626,-2.118394 -0.12226,-0.774028 z m -21.83574,0.122217 0.24443,0 0,0.203689 -0.24443,0 0,-0.203689 z m 12.09929,0 0.0412,0 -0.16299,0.570332 c -0.0202,0.0768 -0.0274,0.130595 -0.0412,0.20369 l -0.0412,0 0.20372,-0.774022 z m -19.96182,0.04071 0.20366,0.04072 0.12217,0.244438 -0.36667,-0.122223 0.0409,-0.162953 z m -4.11462,0.203695 0.0408,0.20369 -0.2852,0.529601 -0.0408,-0.162959 0.2852,-0.570332 z m 3.62571,0 c 0.12175,0.05611 0.2252,0.114263 0.40737,0.162948 l -0.0815,0.366648 -0.16294,-0.244426 -0.0815,-0.04071 -0.0815,-0.244426 z m 31.12425,0.08151 0.24445,0.0815 -0.12226,0.488864 -0.24445,-0.0815 0.12226,-0.488853 z m -25.46161,0.0815 c 0.13049,0.006 0.28597,0.0201 0.44808,0.04071 l -0.12211,0.366647 c -0.29562,-0.07899 -0.55004,0.159228 -0.69257,0.692549 l -0.44814,-0.774017 c 0.0471,-0.174709 0.21322,-0.256037 0.48884,-0.285179 l 0.36667,0 -0.0409,-0.04071 z m 14.01409,0 0.0815,0 0.12226,0.04071 -0.0412,0.203701 -0.0412,0 -0.32598,0 0.20372,-0.244439 z m -8.14774,0.04071 0.28518,0 -0.12219,0.529606 -0.24445,-0.0815 c 0.0369,-0.153946 0.0635,-0.310134 0.0815,-0.448122 z m 0.85553,0 0.57036,0 0,0.0815 -0.36671,0.570343 0.12226,0.162948 -0.61108,-0.162948 c 0.10702,-0.160589 0.19035,-0.414295 0.28517,-0.651822 z m 1.05918,0 0.24452,0 -0.0412,0.0815 -0.20379,-0.04071 0,-0.04071 z m 2.24054,0 0.48897,0 -0.12218,0.366647 -0.20372,0.04072 0,0.448122 0,0.04071 -0.0815,0.162947 0.0412,0.448128 -0.16298,0.04071 c -0.1809,-0.205348 -0.24272,-0.494795 -0.20372,-0.855513 0,-0.02588 -0.008,-0.05472 0,-0.0815 0.013,-0.0828 0.0166,-0.153768 0.0412,-0.244438 l 0.20365,-0.366643 z m 0.85554,0 0.73334,0 0.32597,0 -0.0412,0.203701 -0.24445,0 0,0.488852 0.20365,0 -0.0412,0.203695 -0.3259,0.529596 0,-0.285168 -0.48883,0.122214 -0.0412,-0.5296 0.24444,-0.04071 0,-0.488852 -0.28525,0.04071 -0.0412,-0.244437 z m -7.69957,0.0815 0,0.774027 c -0.2652,-0.0831 -0.4073,-0.288933 -0.40738,-0.651811 0.18275,2.3e-5 0.29999,-0.04251 0.40738,-0.122216 z m 5.54048,0 0.40737,0.122216 -0.0815,0.366648 -0.44817,-0.122221 0,-0.04071 0.16292,-0.203684 -0.0814,0 0.0404,-0.122221 z m 11.93642,0 0.12219,0.651812 c -0.0253,-0.01187 -0.0505,-0.0326 -0.0815,-0.04071 l -0.32598,0.0815 -0.0412,0.244438 0,0.28517 -0.0412,0.0815 -0.20372,-0.04071 0.0412,-0.203695 0.24444,-0.366649 0.16293,-0.285163 -0.44818,-0.122217 0.57043,-0.285168 z m -18.82119,0.0815 c 0.0917,0.01579 0.17611,0.04071 0.28512,0.04071 l 0,0.651811 -0.24441,-0.0815 -0.0409,0.122215 -0.12218,0 0,0.44813 0,0.0815 0.44807,0.122217 0.0409,-0.203685 0.16302,0 -0.52962,0.774017 -0.24449,-0.325906 -0.0815,0.366648 0.24443,0.0815 -0.0409,0.04071 0.52963,0.122221 0.0815,0.244428 -0.12218,0.203684 c -0.15499,0.0761 -0.25872,0.227029 -0.2852,0.448127 l -0.0409,0.122216 -0.16295,0 c -0.007,-0.0298 0.008,-0.0522 0,-0.08151 l 0.0815,-0.448121 -0.16296,-0.04071 c -0.0836,-0.433122 -0.15238,-0.792378 -0.24442,-1.059197 l 0.44815,-1.629523 z m -7.29221,0.448127 c 0.2126,0.119669 0.31239,0.322445 0.2852,0.61107 l -0.20378,-0.122216 -0.0815,-0.488854 z m 18.33231,0 0.0412,0 c -0.008,0.02991 -0.0339,0.0522 -0.0412,0.0815 -0.0303,0.13716 -0.0607,0.283131 -0.0815,0.407385 -0.0917,0.01579 -0.17621,0.04072 -0.28518,0.04072 l 0,0.488864 -0.24445,0 0.0815,-0.936987 0.52963,0 0,-0.0815 z m -12.38446,0.0815 0.28512,0 0.12225,0.04071 0,0.407385 -0.20372,0 0,0.203695 0.0815,0.366648 c -0.16787,-0.149179 -0.27047,-0.489172 -0.28511,-1.018465 z m 25.33932,0.04071 0.44802,0.122221 -0.12204,0.407385 -0.44816,-0.122221 0.12218,-0.407385 z m -33.93526,0.04072 c -0.0444,0.04951 -0.0768,0.109692 -0.1221,0.162959 l -0.0408,-0.122217 0.16289,-0.04071 z m -0.89621,0.04071 0.44814,0.936981 -0.20365,0.04071 -0.0815,-0.04071 c 0.0106,-0.04469 0.0282,-0.075 0.0409,-0.122212 l -0.24434,-0.0815 -0.20373,-0.692549 0.24443,-0.04071 z m 17.51764,0 0.40735,0.122222 -0.0815,0.244426 -0.36671,-0.244426 0.0412,-0.122222 z m 0.73327,0 0.20364,0.0815 -0.12219,0.407386 -0.20371,-0.04071 0.12226,-0.448128 z m 7.12921,0.0815 0.0815,0.122216 0.28524,0.08151 0.0815,-0.04071 -0.20372,1.344372 -0.69248,2.525773 -0.24451,0.488852 -0.0815,-0.366642 0.20373,-0.285169 -0.20373,-0.203684 -0.24437,0.0815 -0.16299,-0.285164 0.28511,-0.12221 0.20372,0.04071 0.0412,-1.059197 0.28509,-0.977718 0.40744,0.08151 0.12212,-0.529602 0.0412,0 0,-0.08151 c -0.12508,-0.229684 -0.1809,-0.508321 -0.20372,-0.814769 z m 3.05534,0.04071 0.24453,0.0815 -0.0816,0.244427 0,0.04071 -0.16292,0.529595 -0.20365,-0.0815 0.20365,-0.814759 z m -20.24697,0.203684 0.40736,0.122221 -0.12216,0.366643 -0.2852,-0.488864 z m -10.63279,0.325905 0.0408,0.162959 -0.12217,0.04071 0,-0.162958 0.0815,-0.04071 z m 5.54047,0.04071 0.20365,0.0815 -0.0815,0.366644 0.20372,0.04071 -0.24443,0.12221 -0.12224,0.488864 -0.16295,-0.611074 0.20365,-0.488865 z m 27.41706,0 0.36656,0.0815 c -0.0491,0.185755 -0.0245,0.335266 0,0.448123 l -0.32582,-0.0815 c 0.0534,-0.200034 0.0195,-0.335311 -0.0412,-0.448129 z m -3.95175,0.0815 0.0412,0 c -0.0224,0.120228 -0.0505,0.238736 -0.0815,0.366644 l -0.0412,0 0.0815,-0.366644 z m -17.31384,0.04071 0.20367,0.04071 -0.24435,0.814759 -0.20373,-0.04071 0.24441,-0.81477 z m 14.74739,0.04071 c 0.10667,0.0985 0.25788,0.167994 0.40744,0.244427 l -0.16306,0.325907 -0.16292,-0.04071 -0.0412,-0.04071 c -0.0477,-0.0401 -0.10962,-0.0903 -0.16299,-0.122211 l 0.12226,-0.366643 z m -21.91733,0.162949 0.0815,0 c 0.008,0.06319 -0.007,0.143415 0,0.203695 l -0.0815,-0.203695 z m 32.46853,0 0.32597,0.529601 -0.44809,-0.122216 0.12212,-0.407385 z m -33.24257,0.366642 0.0409,0.122221 -0.16295,-0.04071 0,-0.04071 0.12225,-0.04071 z m 6.76258,0.162959 0.20372,0.0815 -0.73334,2.810936 -0.20365,-0.0815 0.73327,-2.810941 z m 9.4514,0 -0.20372,0.81477 0,0.0815 c -0.0694,0.01 -0.1708,0.03159 -0.24445,0.04071 l 0.24445,-0.896238 0.20372,-0.04071 z m 1.5888,0.162946 c 0,0.05119 0,0.108308 0,0.162959 -0.14046,0.171187 -0.50334,0.287236 -1.01852,0.407384 l 0.0815,-0.244436 0.93706,-0.325907 z m 8.59575,0.122222 c 0.10666,0.184367 0.23751,0.337444 0.36671,0.488858 l 0,0.122211 0.16291,0.04071 c 0.0686,0.0685 0.13013,0.143642 0.20365,0.203696 l -0.16291,0.651812 -0.20365,-0.04071 c 0.0715,-0.266735 -0.16768,-0.492549 -0.61109,-0.611069 l 0.24438,-0.855506 z m 1.01845,0.04071 0,0.122217 -0.0815,-0.0815 0.0815,-0.04071 z m 5.58128,0.04072 0.44803,0.122205 -0.0404,0.203695 -0.48897,-0.122216 0.0815,-0.203684 z m -24.19876,0.04071 0.12226,0.44811 0.24435,0.89625 -0.44807,0.733291 0.32597,-0.122222 0.20365,0.04071 -0.12225,0.366648 -0.20365,-0.04071 -0.20372,-0.244428 -0.24443,-0.0815 -0.0815,0.448122 -0.24449,-0.04071 0.65185,-2.403557 z m -1.22211,0.0815 0.20366,0.0815 -0.12218,0.529601 -0.20372,-0.04071 0.12224,-0.570343 z m 7.12924,0 0.20365,0.04071 -0.0815,0.366643 -0.20364,-0.04072 0.0815,-0.366643 z m 14.54368,0.04071 -0.0816,0.244439 0.69261,0.162946 0.0815,-0.203689 -0.69254,-0.203696 z m -28.67999,0.08156 c 0.0261,-0.005 0.0549,0.0039 0.0815,0 -0.12598,0.179593 -0.30238,0.328952 -0.52962,0.448121 l -0.0409,-0.203695 c 0.14486,-0.114381 0.30625,-0.20677 0.48891,-0.244426 z m 13.36224,0.203695 c 0.12724,0.113797 0.23917,0.223198 0.28517,0.325906 l -0.28517,-0.08151 0,-0.244426 z m -12.9548,0.203684 0.0409,0 0.32591,0.122222 c 0.0289,0.106409 0.0514,0.197506 0.0815,0.285163 l -0.20365,0.774033 -0.20372,-0.04071 c 0.1426,-0.533376 0.0106,-0.857971 -0.2852,-0.936992 l -0.20365,0.0815 0.0408,-0.162948 0.32591,-0.0815 0.0815,0 0,-0.04071 z m -2.56654,0.04072 0.0815,0.244427 -0.12225,-0.04071 0.0409,-0.203684 z m 13.44368,0 0.20365,0 c -0.0148,0.100512 -0.0233,0.219009 -0.0409,0.325907 l -0.16295,0.162946 0,-0.488853 z m 8.55506,0 0.36663,0 -0.0412,0.162954 -0.40729,-0.122211 c 0.0195,-0.01871 0.0635,-0.02112 0.0815,-0.04071 z m 1.01852,0 0.40736,0 0,0.20369 c -0.19512,3.9e-5 -0.36093,0.03652 -0.48883,0.0815 l 0.0815,-0.285162 z m -19.43232,0.0815 0.16294,0.04071 -0.0815,0.325916 -0.0815,-0.366649 z m 13.81038,0.12221 0,0.529601 -0.0412,0.04071 -0.0412,0.162947 -0.24444,0 0.20371,-0.692548 0.12219,-0.04071 z m 0.85546,0 0.93713,0 -0.0412,0.162953 0,0.122211 -0.24444,0 -0.28526,-0.04071 -0.0815,0.04071 -0.28518,0 c 0,0.0149 0,0.02599 0,0.04071 l -0.0815,-0.04071 0.0815,-0.285164 z m 3.05541,0.162953 -0.0815,0.366648 -0.36671,0 -0.12212,-0.122221 0.0412,-0.162948 c 0.20437,-0.02072 0.36772,-0.03439 0.52955,-0.0815 z m 9.04399,0 c 0.6945,0.364156 0.9331,1.014691 0.69255,1.914698 l -0.48883,-0.12221 -0.16299,0.52959 0.36657,0.570344 -0.85546,1.26288 0.20372,0.04071 -0.24445,0.122222 -0.0815,0.285162 0.16291,1.303624 -0.57035,0.244437 0.20372,0.04071 -0.36671,0.570332 c -0.13859,0.962964 0.16111,1.503579 0.93706,1.711006 l -0.24445,0.162953 -0.0815,0.244428 0.0815,0.611077 -1.34435,-2.036917 -0.20372,-0.04071 0.16299,-0.611066 0.44817,0.08149 0.0412,-0.162958 c -0.29565,-0.07899 -0.53446,-0.517212 -0.65189,-1.262881 l 0.16292,-0.61108 0.20372,0.04071 -0.0815,0.448122 0.69261,0.203689 0.0815,-0.448115 -0.40736,-0.122216 0.24437,-0.814771 0.40737,0.122216 0.20379,-0.814764 -0.40744,-0.122211 0.0815,-0.366643 0.44817,0.122205 0.0815,-0.366642 -0.40737,-0.122211 0.16299,-0.61108 c 0.36953,0.0988 0.59831,-0.138219 0.81473,-0.651812 0.10681,-0.399992 -0.008,-0.614759 -0.44809,-0.73329 l 0.16299,-0.611069 z m -24.52459,0.04071 0.48883,0.122211 -0.40736,0.570343 -0.24443,-0.0815 0.16296,-0.611069 z m 23.30243,0 c 0.13757,0.07281 0.29789,0.11503 0.4481,0.162953 l -0.1222,0.40738 -0.3259,-0.52959 0,-0.04071 z m -16.70279,0.08151 0.65179,0 0.20372,0.244437 0.16294,0 -0.16294,0.611069 -0.61103,0 -0.24448,-0.855506 z m 5.70336,0.203695 0.0815,0 c -0.0353,0.16125 -0.0825,0.316546 -0.12226,0.448127 l -0.0815,0 0.12219,-0.448127 z m 4.88867,0.04071 0,0.162946 -0.0815,0.244438 -0.20378,0 0.0412,-0.203695 0.2443,-0.203689 z m -7.7403,0.0815 0.20365,0.04071 -0.0412,0.0815 -0.20365,0 0.0412,-0.122205 z m -8.63663,0.0815 0.65186,0.366648 -0.28519,1.018455 -0.20372,-0.08151 -0.24436,-0.936985 0.0814,-0.366644 z m 20.89882,0 0.48889,0.122222 0.36664,1.14067 -0.12219,0.448127 -0.20365,-0.04071 0.12219,-0.448128 -0.4481,-0.122215 -0.0412,0.203695 0.24445,0.733291 -0.24445,0.12221 c -0.10688,0.400031 0.0863,0.696256 0.52962,0.814763 l -0.57036,0.244428 0.0816,-0.366642 -0.40744,-0.122211 -0.3259,2.933158 -0.0815,0.162952 -0.57035,-0.325906 0.0815,-0.203689 0.40737,-0.774027 c 0.0693,-0.553065 -0.1193,-0.878948 -0.48883,-0.977729 l 0.12219,-0.366643 0.48882,0.122216 0.0412,-0.244427 -0.20372,-0.285163 0.32598,-0.08151 -0.0412,-1.099934 0.44817,-1.588797 z m -18.98407,0.04071 0.40737,0.122222 -0.0408,0.203684 -0.40745,-0.122205 0.0409,-0.203701 z m 11.20304,0 0.16306,0 c 0.0657,0.05851 0.15353,0.11741 0.24431,0.162958 l -0.0412,0.122211 -0.0815,0.285174 -0.28518,-0.5296 0,-0.04071 z m -19.96185,0.04071 0.3259,0.488864 -0.24435,-0.244438 -0.20372,-0.04071 0.12217,-0.203695 z m 1.10001,0.08151 0.16295,0.04071 0,0.162946 -0.16295,0.651813 -0.20372,-0.08151 0.20372,-0.774028 z m 31.08344,0 c 0.044,0.102864 0.0885,0.183766 0.16291,0.203684 l 0.20373,0.04072 0,0.448128 -1.71099,6.355167 -0.4889,-0.12221 0.28518,-0.122217 0.0412,-0.203684 0.69254,-3.462763 0.28511,-0.122216 0.0412,-1.059196 0.48889,-1.955435 z m 1.01845,0 0.20371,0.04071 -0.20371,0.651811 -0.20372,-0.0815 0.16292,-0.570332 0.0412,-0.04071 z m -15.64358,0.122216 0.0412,0.448115 -0.12226,0.04072 -0.0815,-0.325907 0.16291,-0.162947 z m 12.79188,0 0.20371,0.04071 -0.12226,0.366648 -0.20364,-0.04071 0.12219,-0.366648 z m -9.57355,0.04071 c 0.13468,0.0336 0.32367,0.0613 0.48897,0.0815 l -0.12226,0.488859 -0.44817,-0.162952 0.0815,-0.407386 z m -20.98037,0.325916 0.48891,0.122206 -0.0815,0.203701 -0.16295,1.385096 c 0.008,-0.184416 -0.0233,-0.352293 -0.0815,-0.570338 l -0.20364,-0.814758 0.0409,-0.325907 z m 3.29982,0.04071 0.44814,0.0815 c -0.10689,0.399987 -0.01,0.695002 0.2852,0.774034 l -0.0409,0.203684 c -0.44336,-0.118536 -0.70271,-0.10371 -0.77404,0.162958 l -0.20365,-0.04072 -0.0815,-0.61107 0.36667,-0.570343 z m 16.82502,0.04071 0.28518,0 -0.0815,0.244438 -0.20372,0 0,-0.244438 z m -13.76963,0.162958 0.20373,0.04071 -0.0409,1.059198 -0.40737,-0.122222 0.24442,-0.977717 z m 20.12484,0.203684 0.44817,0.162959 -0.0412,0.162948 -0.48875,-0.122206 0.0815,-0.203701 z m 3.09615,0 0.20372,0.04071 -0.44809,0.936986 -0.2038,-0.04071 0.2038,-0.814764 0.24437,-0.122222 z m -19.51372,0.122222 0.93692,0.04071 -0.12219,0.570332 -0.97768,0 0.16295,-0.611075 z m 8.59582,0.162948 0.20372,0 0,0.04071 -0.20372,-0.04071 z m 3.74789,0 0.3259,0 -0.0412,0.203695 -0.28517,0 0,-0.203695 z m 2.36287,0 0.32598,0 0,0.203695 -0.36671,0 0,-0.122216 0.0412,-0.0815 z m -19.51372,0.04071 0.3259,0.529602 -0.28519,0.122217 -0.20366,-0.04071 c 0.062,-0.233337 0.13267,-0.43445 0.16295,-0.611081 z m -4.31828,0.162959 0.20365,0.04071 -0.12217,0.366644 -0.20372,-0.04071 0.12224,-0.366642 z m 32.30564,0 0.20372,0.04071 c -0.10703,0.400004 -0.0101,0.695032 0.28511,0.774029 l -1.42582,3.503489 0.20372,0.244428 -0.0404,0.203697 -0.52962,0.896235 -0.20365,-0.04071 0.16292,-1.425838 0.24437,-0.122211 0.12226,-0.448121 0.69254,-3.422023 0.28518,-0.203684 z m -35.36103,0.122218 0.12218,0.855494 0.20371,0.122223 c -0.012,0.0966 -0.0133,0.183486 -0.0409,0.285162 l 0,0.08151 -0.0409,-0.08151 -0.20365,0.08151 c 0.0218,0.0838 0.0345,0.137188 0.0408,0.203684 l -0.36666,0.1646 c -0.01,-0.04357 -0.0317,-0.0797 -0.0408,-0.122217 l 0.12224,-0.04072 0.0408,-0.203689 0.16296,-1.34436 z m 9.4513,0.04071 0.6111,0.162959 -0.0408,0.203684 -0.69258,0.0815 0.12225,-0.448121 z m -4.80712,0.244439 0.20365,0.0815 -0.16295,0.529594 -0.20366,-0.04071 0.16296,-0.570331 z m 28.96506,0 0.20365,0.04071 -0.28511,1.018454 -0.20365,-0.0815 0.28511,-0.977717 z m -20.49151,0.122204 0.36673,0.529606 -0.16295,0.611069 -0.20378,-0.325905 -0.40731,-0.122205 c -0.10697,0.400004 -0.41209,0.566641 -0.85552,0.44811 0.10698,-0.400013 -0.007,-0.655502 -0.44815,-0.774027 l 0.0409,-0.203689 0.4073,0.122222 0.16302,0.244425 c 0.0803,-0.299967 0.44638,-0.454305 1.09986,-0.529606 z m 10.83651,0.203701 0.12218,0 0,0.122215 -0.12218,-0.122215 z m 13.11771,0 0.8964,0.244427 -0.44816,1.751745 c -0.29558,-0.079 -0.37682,-0.544383 -0.16306,-1.344361 l -0.4481,-0.08151 0.16292,-0.570331 z m -6.15149,0.04071 0.28517,0.529589 -0.0412,0.203701 -0.28518,-0.570343 0.0412,-0.162947 z m -28.55764,0.0815 -0.20372,1.62953 -0.81474,0.244427 0.24442,-0.896239 c 0.44906,-0.222946 0.73081,-0.546863 0.77404,-0.977718 z m 0.69257,0 0.24442,0.08151 -0.0815,0.366642 -0.28519,-0.0815 0.12224,-0.366649 z m 21.87656,0.04071 0.16292,0.04071 0,0.244438 -0.40736,0 0.24444,-0.285176 z m -9.5328,0.04071 0.20365,0 0.16301,0.244438 -0.28519,0 -0.0815,0 0,-0.04071 0,-0.203695 z m -6.96631,0.244438 0.48885,0.12221 -0.0815,0.244433 -0.52955,0.936979 -0.16295,-0.244426 -0.20371,-0.0815 -0.52955,0.285169 0.0408,0.651811 c -0.29562,-0.0791 -0.50406,0.04811 -0.61109,0.448122 l -0.16295,-0.244427 -0.20366,-0.04071 -0.24449,0.122205 0.20372,-1.629522 0.6111,0.162957 0.12224,-0.407386 c 0.73898,0.197534 1.156,0.0741 1.26282,-0.325905 z m 2.85175,0.12221 0.20364,0.0815 -0.0815,0.366648 -0.24443,-0.04071 0.12224,-0.407385 z m -7.86253,0.04071 0.20365,0.0815 -0.0815,0.366648 -0.24443,-0.04071 0.12224,-0.407385 z m 6.64034,0.04071 0.20371,0.0815 -0.0815,0.407386 -0.24442,-0.04071 0.12224,-0.448122 z m -9.28843,0.122217 0.20372,0.0815 -0.24442,0.0815 0.0408,-0.162948 z m -0.0408,0.285168 0.16294,0.122217 0,0.04071 -0.20365,-0.04071 0.0409,-0.122217 z m 15.72511,0.0815 c 0,0.206528 -0.12999,0.308257 -0.32597,0.366642 l -0.52955,0.04071 0,-0.162953 0,-0.04072 0.85552,-0.203689 z m 3.25903,0 c 0.0122,0.005 0.0288,-0.006 0.0404,0 0.0891,0.04599 0.17483,0.110851 0.20372,0.203689 l -0.24438,0 0,-0.203689 z m 1.54807,0 0.40744,0 0.0815,0.12221 -0.20372,0.814765 c -0.0448,0.0023 -0.0747,0 -0.12226,0 l 0,0.203701 -0.20365,-0.203701 -0.40744,0 -0.16291,-0.244427 0.12219,-0.448123 c 0.1892,0.05058 0.34952,-0.04402 0.48882,-0.244425 z m 1.22217,0 0.32583,0 c 0.0144,0.01898 -0.0101,0.05909 0,0.0815 -0.0984,0.337864 -0.32727,0.598556 -0.65174,0.733285 l -0.12218,-0.04071 0.44809,-0.774028 z m 4.4405,0 -0.0412,0.203689 -0.48889,0 0,-0.122222 c 0.20018,-0.02772 0.37227,-0.05069 0.52962,-0.0815 z m 8.881,0 0.20365,0.04071 -0.0814,0.366642 -0.20371,-0.04071 0.0815,-0.366642 z m -26.84669,0.0815 0.40744,0.122215 -0.12225,0.448123 -0.40737,-0.122216 0.12218,-0.448122 z m 9.7365,0.122215 0.16292,0 -0.16292,0.570344 0,-0.570344 z m -11.97708,0.162959 -0.0815,0.366643 0.40737,0.122211 0.12217,-0.366648 -0.44814,-0.122206 z m 4.97007,0.04071 0.69257,0.203684 -0.12224,0.366649 0.44814,0.122216 0.16295,-0.611079 0.3259,0.366641 c -0.34774,0.172319 -0.58864,0.446767 -0.73327,0.81477 -0.062,0.02649 -0.0885,0.04621 -0.12225,0.0815 l -0.20365,-0.04071 c 0.14013,-0.443861 -0.0197,-0.72708 -0.40744,-0.814765 l -0.20365,-0.04071 c 0.0715,-0.114637 0.11844,-0.281466 0.16294,-0.448116 z m 16.90647,0 0.40735,0.122206 -0.0815,0.244438 -0.40736,-0.122217 0.0815,-0.244427 z m -14.42139,0.203684 0.12217,0.04072 c -0.0429,2.13e-4 -0.0808,-0.0023 -0.12217,0 l 0,-0.04072 z m -13.72896,0.244427 0.44814,0.0815 -0.0814,0.203695 -0.40743,-0.122215 0.0408,-0.162958 z m 20.1656,0 0.16292,0.0815 -0.20365,0.04071 0.0412,-0.122222 z m -10.4698,0.04071 0.16295,0.244437 0.20371,0.04071 c 0.1186,0.0317 0.22323,0.0419 0.32591,0.04071 -0.14732,0.0926 -0.29498,0.125319 -0.48892,0.0815 l -0.20365,0.651805 c 0.38766,0.0877 0.63454,0.218981 0.77404,0.448128 l -0.48884,0.244426 0.40737,0.0815 0.0815,-0.285165 c 0.12196,0.224807 0.1521,0.502574 0.0409,0.855506 l 0.6518,0.162947 -0.36668,1.099932 -0.61102,-0.12221 0,2.118384 -1.34444,1.140676 0.20373,0.325907 -1.75174,2.403568 0.44815,-0.122223 0.24434,0.0815 -0.12224,0.407387 -0.28506,-0.04071 -0.28519,-0.325901 -0.2852,-0.04071 -0.12217,0.488854 -0.2852,-0.0815 2.48502,-7.781019 0.24449,-0.04071 -0.2852,0.977728 0.65179,0.122203 0.40737,-1.303618 -0.44807,-0.0815 0.0408,-0.12221 -0.20365,-0.0815 -0.28526,0 0.0409,-0.122217 0.28519,-0.04071 0.0815,-0.203689 -0.24436,-0.0815 0.16295,-0.570333 -0.20372,-0.285179 0.0815,-0.203684 0.2852,-0.08151 z m 6.68111,0.04071 0.20372,0.04072 -0.0412,0.122221 -0.16299,-0.16296 z m 7.86256,0 0.0412,0.162959 -0.2851,-0.0815 0.24437,-0.0815 z m -20.04336,0.122223 0.44813,0.774027 -0.32589,0.162948 -0.16294,-0.04071 0.0408,-0.896239 z m -0.69258,0.04071 0.20373,0.04071 -0.12225,0.44811 -0.20365,-0.04071 0.12217,-0.44811 z m 19.88041,0.162947 -0.0815,0.244427 -0.20379,-0.04071 0,-0.08151 0.28525,-0.122215 z m -1.38509,0.122217 0.0815,0.12221 0,0.285174 -0.44803,-0.122221 0.16293,0 0.20364,-0.285163 z m 3.87022,0.12221 0.24437,0.0815 0,0.285168 0,0.651817 0,0.12221 -0.3259,0.122218 -0.40736,-0.0815 0.2851,-1.140676 0.0412,0 c 0.0635,-0.008 0.10283,-0.0322 0.16292,-0.04071 z m -25.38015,0.122215 0.36659,0.488864 -0.48877,-0.122221 0.12218,-0.366643 z m 35.40179,0.04072 0.20365,0.04071 -0.12219,0.366643 -0.20365,-0.04071 0.12219,-0.366642 z m -11.44752,0.122217 -0.0412,0.20369 -0.77408,0.0815 -0.20371,-0.0815 0,-0.04071 1.01844,-0.162947 z m 6.43666,0 -0.0412,0.20369 0.40736,0.0815 0.0412,-0.162959 -0.40737,-0.122204 z m -27.17259,0.244426 0,0.20369 -0.40737,0.203695 0.32589,0.325905 -0.12225,0.0815 -0.28519,-0.0815 0.0815,-0.325905 -0.12224,-0.04071 0,-0.04071 0.52961,-0.325906 z m 3.1368,0 0.36673,0.0815 -0.24449,0.692552 -0.32589,-0.0815 0.20365,-0.692554 z m 8.31073,0 0.40738,0 0,0.04072 -0.40738,0 0,-0.04072 z m -13.60671,0.0815 0.20372,0.04071 -0.36659,1.34436 c -0.019,-0.298213 -0.0905,-0.486778 -0.2445,-0.570334 l 0.0408,-0.325914 0.36667,-0.488855 z m 10.3069,0.0815 0.24442,0.08151 -0.12225,0.448121 -0.28512,-0.04071 0.16295,-0.488854 z m 2.1184,0.04071 0.24442,0.04072 -0.0815,0.244438 0.0409,0.162947 c -0.01,0.196904 0.0324,0.3372 0.12225,0.448129 l 0,0.0815 -0.16295,0 -0.40738,0.448118 -0.20371,0 0.24449,-0.855499 0.16295,-0.285165 -0.0409,-0.04071 0.0814,-0.244438 z m 1.38507,0.04072 0.24449,0.285181 0,0.285162 c -0.1626,-0.11746 -0.28096,-0.253465 -0.40744,-0.366642 l 0.16295,-0.203701 z m -7.69958,0.203701 0.28519,0.04071 -0.16294,0.488853 -0.24442,-0.0815 0.12217,-0.448124 z m 13.97335,0.0815 0.20372,0.04072 0.3259,0.488863 -0.0815,0.244427 -0.20372,-0.0815 -0.0815,-0.0815 0,-0.162954 -0.20372,0 c 0.013,-0.155332 0.0419,-0.321875 0.0412,-0.448113 z m -16.5399,0.0815 -0.12217,0.366645 -0.0408,1.42584 -0.65179,0.814768 0.36666,0.0815 -0.4482,0.12221 -0.0814,0.244434 0.28513,0.325908 -0.0408,0.203684 -0.57032,0.611084 0.0814,0.977715 -0.85545,1.42584 0.2852,0.285163 -0.61117,-0.122216 0.44815,-1.548044 -1.50731,0.855492 0.28519,0.285177 -1.01846,0.448112 c -0.11119,-0.219249 -0.21802,-0.417466 -0.3259,-0.651809 -0.007,-0.01068 0.007,-0.03003 0,-0.04071 l 0.12225,-0.774026 0.28506,0.08149 0.69257,0.448131 c -0.20049,-0.679503 -0.55913,-1.090607 -1.14064,-1.222156 l 0.20371,-0.692551 c 0.0148,-0.04611 0.0268,-0.077 0.0408,-0.122211 l 0.12225,-0.04071 0.0408,-0.203697 -0.0815,-0.04071 c 0.0676,-0.225718 0.10802,-0.449745 0.16295,-0.651808 l 0.16295,-0.122211 0.0408,-0.203696 -0.0408,-0.122211 c 0.0591,-0.239834 0.045,-0.41041 0.0815,-0.611077 0.21653,-0.04123 0.45003,-0.154953 0.69256,-0.366645 -0.087,0.522228 -0.0359,0.83279 0.24436,0.896243 l -0.32591,0.20369 -0.0409,0.0815 c -0.18048,0.112427 -0.37512,0.243488 -0.52962,0.366644 l -0.0409,0.244427 0.40737,0.122217 -0.3259,1.670267 0.57039,0.122223 0.12225,-0.407388 0.44807,-0.20369 -0.28519,-0.285171 -0.28513,-0.0815 0.0815,-0.203703 1.50731,0.122223 0.20372,-0.692551 -0.52961,-0.122217 0.12224,-0.407388 0.57032,0.122223 0.3666,-1.140675 0.2445,-0.162947 -0.20366,-0.04071 0.48878,-1.548063 0.3259,-0.122216 z m -6.11072,0.04071 0.24443,0.0815 -0.12225,0.366648 -0.20365,-0.04071 0.0815,-0.407384 z m 24.0357,0 0.16299,0.244435 0.20365,0.0815 0.32598,-0.122211 -0.0412,0.162948 c -0.39625,0.03678 -0.72569,0.117895 -0.9778,0.203703 l -0.0412,0 -0.16292,-0.04071 0.28518,-0.448129 0.24444,-0.0815 z m -12.01784,0.0815 0.61102,0.122222 -0.12217,0.40738 -0.48885,-0.529602 z m 3.95161,0.122222 0.32597,0.0815 -0.0408,0.162961 -0.28527,0.08149 0,-0.04072 0,-0.285163 z m 4.80717,0.04071 0.20372,0.04071 0,0.04071 -0.20372,0 c 0.007,-0.03029 -0.008,-0.05197 0,-0.0815 z m -13.8104,0.0815 0.28519,0.0815 -0.0815,0.611071 -0.36661,0.122217 0.0408,-0.407387 0.12224,-0.407381 z m 29.57617,0.04071 0.20371,0.04071 -0.12211,0.366638 -0.20386,-0.04071 0.12226,-0.366645 z m -7.45505,0.325901 0.40736,0.122217 -0.0816,0.44813 -0.40736,-0.24444 0.0815,-0.325907 z m -26.35794,0.04071 0.40745,0.122217 -0.0815,0.20369 -0.40738,-0.122211 0.0815,-0.203696 z m 1.67034,0 0.20365,0.244427 -0.0408,0.203697 -0.32589,-0.325907 0.16294,-0.122217 z m 18.16932,0.04071 c 0.16191,0.08751 0.27579,0.183869 0.4889,0.285165 -0.0188,0.05763 -0.0412,0.139607 -0.0412,0.203703 l -0.52955,0 c 0.0318,-0.173219 0.0607,-0.336075 0.0815,-0.488868 z m -3.25906,0.203691 0.16299,0 0,0.04071 -0.16299,-0.04071 z m -12.14006,0.203697 -0.0815,0.570334 -0.0409,0.244434 -0.2852,-0.0815 0.0408,-0.611066 0.36661,-0.122223 z m -3.29982,0.0815 0.24449,0.04071 -0.12224,0.488848 -0.2852,-0.04072 0.16295,-0.488854 z m 10.71426,0.04071 0.73328,0.162947 0,0.0815 -0.0815,0.244427 -0.0815,0.122217 0,0.162947 0,0.04071 -0.12224,0.285177 -0.0815,0 -0.20365,-0.285177 c 0.0169,-0.323296 -0.0655,-0.59918 -0.16295,-0.814762 z m 20.00264,0 c -0.17823,0.666658 0.096,1.38752 0.69246,2.11839 l 0.24445,-0.122223 0.16292,0.244428 -0.0404,0.162959 c -0.24633,-0.0658 -0.49568,0.01235 -0.69247,0.162948 -0.0426,-0.01569 -0.0738,-0.02978 -0.12226,-0.04071 l -0.36664,0.12221 c 0.14025,-0.443853 0.0621,-0.727069 -0.3259,-0.814768 l -0.40736,0.122217 -0.0412,0.0815 -0.28525,-0.203698 c 0.2165,-0.513563 0.44528,-0.709851 0.81487,-0.61107 l 0.12212,-0.407388 -0.61109,-0.162947 0.85554,-0.651808 z m 2.40353,0.04071 0.3259,0.488862 -0.12218,0.448124 -0.28518,-0.570341 0.0815,-0.366645 z m -17.96573,0.0815 0.28518,0.08149 -0.12219,0.407388 -0.24445,-0.325907 0.0815,-0.162954 z m -14.25848,0.04071 0.2852,0.04071 -0.0815,0.203684 c -0.1131,0.03299 -0.21802,0.0873 -0.3259,0.122223 l 0.12218,-0.36665 z m 15.76583,0 0.73334,0 -0.0815,0.203698 -0.69262,0.0815 c 0.0224,-0.106711 0.0202,-0.183926 0.0412,-0.28517 z m -3.9924,0.08149 0.0408,0 0,0.122224 -0.0408,0 0,-0.122224 z m 19.6767,0 0.20366,0.04071 -0.20366,0.814774 -0.20364,-0.04071 0.20364,-0.814775 z m -28.43544,0.162947 0.57033,0.122224 -0.24443,0.692551 -0.3666,-0.611071 0.0409,-0.203704 z m 2.15918,0.04071 -0.0815,1.140682 0.6111,0.162953 0.0815,-1.181412 -0.61102,-0.122223 z m 19.55449,0.122223 0.16292,0.04071 -0.12226,0.448124 -0.20364,-0.04071 0,-0.04071 0.0412,0 0.12219,-0.407386 z m -13.44377,0.04071 0.12224,0 0.2852,0.733294 -0.12224,0.162947 -0.16296,0 -0.20372,-0.611077 c 0.008,-0.01132 -0.007,-0.02926 0,-0.04071 l 0,-0.04071 c 0.0261,-0.0655 0.0556,-0.134044 0.0815,-0.203684 z m 6.31442,0 0.40743,0 -0.0815,0.488867 -0.32591,0 0,-0.488867 z m 4.03321,0 0.24437,0.04071 -0.0412,0.162947 -0.24437,-0.0815 0.0412,-0.122217 z m -25.70601,0.0815 0.0815,0.04071 -0.0408,0.203691 -0.0815,-0.04071 0.0409,-0.203691 z m 38.17198,0.0815 -0.0404,0.16296 0.0404,0.04071 0,-0.203703 z m -21.55062,0.04071 0.0815,0 0,0.325907 -0.20371,-0.04071 0.12226,-0.285177 z m -10.91802,0.24444 c 0.27324,-0.0456 0.67948,-0.01338 1.18149,0.04071 l -0.12225,0.407375 c -0.38758,-0.0877 -0.75003,0.182197 -0.93699,0.774025 l -0.57039,-0.896235 c 0.0521,-0.166453 0.17492,-0.28029 0.44814,-0.325907 z m 14.09555,0.04071 0.32591,0 -0.12227,0.203684 -0.20364,0 0,-0.203684 z m 0.77407,0 0.0815,0 0,0.203684 -0.0412,0 -0.0412,-0.203684 z m 15.15462,0.04071 0.48896,0.122217 -0.2851,1.018452 -0.36679,-0.488855 0.16293,-0.651814 z m -17.96566,0.04071 0.24445,0.04071 -0.28518,0.08149 0.0412,-0.122217 z m 10.83652,0 0.20371,0.04071 -0.0412,0.122217 -0.24453,0.12221 0,0.08149 -0.0412,0 0.0412,-0.08149 0.0815,-0.28517 z m 9.57354,0.122216 -0.12226,0.0815 -0.0815,0.162948 0.20372,0.24444 0,-0.488867 z m -13.8104,0.0815 0.40744,0.08151 -0.32591,0.448117 -0.32591,-0.08149 -0.0412,-0.162948 0.28517,-0.28517 z m -10.42903,0.04071 0.12224,0.0815 0,0.244441 -0.16296,-0.04071 c 0.0324,-0.102434 0.0169,-0.18859 0.0409,-0.285164 z m 13.85116,0.04071 0.61108,0.529604 0.0412,0.04071 -0.12226,0.611071 c -0.17382,-0.130172 -0.33515,-0.283846 -0.48889,-0.366643 -0.0434,-0.245586 -0.0715,-0.515154 -0.0412,-0.814768 z m -8.5551,0.04071 0.36656,0 0,0.244441 -0.36656,0 0,-0.244441 z m -16.45841,0.0815 0.16295,0.04071 -0.12225,0.407388 -0.28512,-0.0815 0.0815,-0.285164 0.16295,-0.0815 z m 4.19604,0.203696 0.52961,0.122211 0,1.181412 c -0.33906,-0.0767 -0.52095,-0.509043 -0.52961,-1.303623 z m 1.79257,0.162947 -0.24449,0.692558 0.65179,0.162954 0.20373,-0.692551 -0.61103,-0.162961 z m 3.01455,0.244428 c 0.53695,0.1214 0.5911,1.237449 0.16295,3.299809 -0.149,0.248705 -0.35582,0.702038 -0.57032,1.140682 l -0.57032,-0.122223 -0.52955,-1.344366 c 0.38758,0.0877 0.59307,-0.08569 0.73327,-0.529591 l 0.0815,-1.181419 0.20365,0.244427 0.65187,0.162961 -0.16303,-1.67028 z m 9.69579,0.04071 0.12226,0.122223 -0.24452,0.285164 -0.12211,0.448118 -0.12227,0 -0.2851,-0.08149 -0.0412,-0.448124 0.0815,-0.12221 0.24438,0.244427 0.36671,-0.448124 z m 5.37749,0 c 8e-5,0.306009 -0.15627,0.448156 -0.57035,0.448131 l 0,0.203689 0.40744,0 -0.36671,0.651815 -0.40729,-0.0815 0.0815,-0.0815 0,-0.285171 -0.0412,-0.04071 0.40736,-0.774024 c 0.15952,-0.009 0.31262,-0.04072 0.4889,-0.04072 z m -13.44365,0.04071 0.28513,0.04071 -0.44815,1.262892 -0.0815,0.325907 c 0.19801,0.0814 0.36673,0.16669 0.52968,0.244428 l -0.24442,0.448124 -0.12225,-0.203698 -0.32589,0.162954 -0.24443,-0.04071 c 0.0669,-0.141872 0.13048,-0.272495 0.20366,-0.488861 l -0.20366,0 0.16294,-0.488855 0.0409,0.04071 0.2852,0 0.16294,-1.303629 z m -8.18848,0.0815 0.57031,0.122217 -0.16294,0.407387 -0.40737,-0.529604 z m 13.15857,0.0815 0.0815,0.0815 -0.16299,-0.04071 0.0815,-0.04071 z m 4.35897,0 0.3259,0 c -0.0462,0.254267 -0.0753,0.448645 -0.0815,0.651808 l -0.61108,0 0.0815,-0.570328 0.2851,-0.0815 z m -3.13688,0.0815 0.0815,0.488855 c -0.20415,-0.106769 -0.3488,-0.234986 -0.4481,-0.407387 l 0.36656,-0.0815 z m -1.75172,0.0815 -0.12226,0.488861 -0.16292,0 0,-0.407381 0.28518,-0.0815 z m 18.00639,0.04071 0.20371,0.04071 -0.16299,0.651808 -0.20365,-0.0815 0.16293,-0.611078 z m 0.65188,0 0.48883,0.122217 -0.40744,1.466576 -0.16292,-0.04071 c -0.0833,-0.01884 -0.17101,0.0209 -0.24445,0.04071 l 0,-0.366638 0.32598,-1.222155 z m -21.22482,0.04071 0.12225,0 0,0.04071 -0.12225,-0.04071 z m 3.50354,0.122216 c 0.0814,0.03608 0.13432,0.0796 0.20371,0.12221 l -0.24451,0.04071 0.0412,-0.162954 z m -12.1808,0.0815 0.28519,0.04071 -0.28519,0.896248 -0.28519,-0.04071 0.28519,-0.896236 z m 1.7925,0.162947 -0.12225,0.448125 0.61102,0.12221 -0.48877,-0.570335 z m 19.59521,0 c 0.0448,0.04103 0.15504,0.119452 0.20365,0.16296 l -0.0815,0.529591 -0.89625,2.851679 -0.57036,0.814775 0.36663,1.059196 -0.6518,-0.162961 -0.36664,2.077661 -0.52962,-0.122217 0,-0.977722 0.3259,-0.12221 0.0815,-0.20369 0.16292,-1.466576 0.48896,-0.570348 -0.12226,-0.122204 c 0.0282,-0.0546 0.0412,-0.127202 0.0412,-0.203704 l 0.20365,-0.122203 -0.40737,-0.570342 0.36663,-0.122223 0.24446,0.04077 0.0815,-1.140669 0.36664,-1.140669 0.52963,0.122204 0.16291,-0.611071 z m 1.26289,0.0815 0.12212,0.162948 -0.16291,-0.04071 0.0412,-0.122211 z m 1.83319,0.122204 0.0815,1.629543 0.48889,0.122216 0.20372,-0.203696 -0.24451,0.814768 c -0.11468,-0.189766 -0.15693,-0.281325 -0.28511,-0.488861 l -0.20372,0.08149 c -0.0217,-0.01768 -0.0556,-0.02406 -0.0815,-0.04071 l -0.40737,-0.651808 0.4481,-1.262898 z m 0.52962,0 0.36656,0.08151 0,0.08149 -0.2443,0.366651 -0.24445,-0.0815 0.12219,-0.448123 z m 3.78869,0.16296 0.20372,0.04071 -0.12219,0.44813 -0.20372,-0.0815 0.12219,-0.407381 z m 1.79245,0.244428 0.20371,0.0815 0,1.059202 0,0.04071 c -0.0499,0.0364 -0.11669,0.06418 -0.16291,0.12221 l -0.36664,-0.0815 0.32584,-1.222149 z m -32.10193,0.04071 0.24449,0.0815 -0.97776,3.096113 -0.24444,-0.04072 0.97771,-3.136855 z m 29.57621,0.16296 0.0815,0.04071 -0.16299,0.611071 -0.20372,-0.04071 0.12219,-0.448124 0.16299,-0.162947 z m -14.01412,0.162947 0.20372,0 0,0.488861 -0.20372,0 0,-0.488861 z m 11.69204,0.0815 0.20365,0.0815 0.0412,0.244427 -0.28518,-0.20369 0.0412,-0.122217 z m -24.28015,0.0815 -0.16295,0.448124 0.61103,0.162947 0.16295,-0.488854 -0.61103,-0.122217 z m 27.13185,0.04071 0.20365,0.04071 0.0404,0.692545 -0.40751,-0.122217 0.16299,-0.611065 z m -29.04659,0.04071 0.28511,0.04071 -0.20365,0.651807 -0.24442,-0.08149 0.16296,-0.611078 z m 31.57232,0.20369 0.40736,0.122211 -0.0815,1.059201 -0.0815,0.325902 -0.24452,-0.0815 0.0815,-1.140668 c -0.0556,-0.01248 -0.11208,-0.0051 -0.16292,0 l 0.0815,-0.285171 z m -19.55446,0.244421 0.0412,0 0,0.448124 -0.20366,0 0.16293,-0.448124 z m -5.54049,0.04071 0.69257,0.16296 -0.57031,1.181418 -0.3259,0.448112 -0.0815,0 0.20365,-0.611071 0,-1.059202 c 0.0345,-0.02843 0.0472,-0.0737 0.0815,-0.122217 z m 5.94785,0.203696 0.40743,0 0,0.488856 0.24446,0 0.0412,-0.04071 -0.0412,0.285171 -0.32598,0.0815 -0.0412,-0.12221 0.0412,-0.203697 -0.36664,-0.0815 -0.16291,0.04071 c 0.14074,-0.121554 0.20364,-0.256872 0.20364,-0.448111 z m 13.89186,0 0.24445,0.04077 0.12212,0.733296 -0.0814,0.24442 -0.40737,-0.611071 0.12219,-0.407382 z m -11.81423,0.203691 0.0815,0 -0.20364,0.896249 -0.0815,0.04077 -0.20364,-0.203703 c -0.10349,0 -0.16459,0.009 -0.24453,0.04071 l 0.20372,-0.651809 0.4481,-0.122216 z m 0.77414,0 0.48883,0 0.16291,0.04077 -0.24438,0.774025 -0.52962,0.325913 -0.24444,0 0.0815,-0.20369 0.16299,0 0,-0.203703 0.28518,-0.0815 -0.28518,-0.285164 0.12226,-0.366638 z m 2.85156,0 0.65188,0 -0.0815,0.203697 -0.61109,-0.122216 0.0412,-0.0815 z m -22.52832,0.162954 0.65188,0.162953 -0.48892,0.611084 -0.3666,-0.0815 0.20364,-0.692552 z m 14.95101,0.122211 0.20372,0 0.36664,0.0815 -0.40744,0.203691 -0.0412,0.20369 0.0412,0.122217 -0.16292,0.04072 -0.20364,0 0.20364,-0.651814 z m 20.00262,0.04077 0.20365,0.04071 -0.0404,0.203703 -0.20364,-0.04077 0.0412,-0.203697 z m -18.82118,0.16296 0.24445,0.04071 -0.0412,0.203691 -0.28511,0.04071 0.0815,-0.285163 z m 6.19222,0 0.28518,0.04071 -0.0412,0.0815 -0.24445,-0.0815 0,-0.04071 z m 6.15149,0.203684 0.65189,0.122217 0.28517,0.855511 c 0.0274,0.313984 0.0361,0.616172 -0.0412,0.936979 l -0.20378,-0.0815 0.16306,-0.448131 -0.57035,-0.122204 -0.0404,0.203684 0.32591,0.814769 -0.32591,0.122223 c -0.10514,0.332917 -0.0224,0.6072 0.28511,0.774019 -0.0404,0.109907 -0.0737,0.220007 -0.12219,0.3259 l -0.24445,0.0815 0.12226,-0.407381 -0.57036,-0.122217 -0.24451,1.751754 c -0.17065,0.174317 -0.36786,0.371197 -0.57028,0.529591 l 0.20372,-0.285165 c 0.0901,-0.61374 -0.12653,-0.990327 -0.61101,-1.099938 l 0.12218,-0.407381 0.61109,0.122217 0.12225,-0.285164 -0.32597,-0.28517 0.44802,-0.122211 0,-1.181418 0.52962,-1.79249 z m -27.37621,0.04077 0.81474,0.407381 -0.3259,1.099932 -0.28519,-0.0815 -0.3259,-1.018459 0.12225,-0.407387 z m 2.48507,0.04071 0.57032,0.122217 -0.0815,0.20369 -0.52962,-0.122216 0.0409,-0.203691 z m 32.0205,0.122217 0.2851,0.04071 -0.20372,0.692557 -0.2851,-0.04071 0.20372,-0.692552 z m -23.30246,0.04071 0.20365,0 0,0.20369 -0.24442,-0.04071 0.0408,-0.162954 z m 10.14387,0 0,0.0815 -0.0412,0 0.0412,-0.0815 z m 11.81417,0.28517 -0.36664,1.34436 -0.0412,0 0.40737,-1.34436 z m -11.48827,0.08151 0.24446,0.08149 -0.0815,0.203704 -0.28518,0.122203 0.12226,-0.407374 z m 10.30682,0 0.0404,0 c 0.0274,0.198744 0.008,0.41805 -0.0404,0.651807 l -0.16291,-0.04071 0.16291,-0.611071 z m 1.58881,0 0.12226,0.04071 0,0.203697 -0.16299,-0.04077 0.0404,-0.203684 z m -16.3362,0.122203 0.16307,0 -0.44817,0.448124 -0.20372,0 0.48882,-0.448124 z m 3.13695,0 0.28518,0 -0.0816,0.448124 -0.32576,0 0.12219,-0.448124 z m -22.44697,0.203697 0.0815,0.12221 -0.0408,0.0815 c -0.0105,-0.0687 -0.0409,-0.136095 -0.0409,-0.203684 z m 20.16555,0 0.52963,0 0.0815,0.0815 -0.0815,0.325907 -0.61108,-0.122217 0.0815,-0.285164 z m -18.90267,0.0815 0.20381,0.04071 0,0.24444 c -0.0662,-0.09659 -0.13838,-0.184004 -0.20381,-0.285171 z m 10.71428,0.20369 -0.0815,0.285171 -0.0409,0.0815 -0.0408,0.122211 -0.16296,-0.20369 0.32591,-0.285165 z m 19.71745,0 0.20372,0.04077 -0.0816,0.162947 c -0.0282,-0.05376 -0.0916,-0.146669 -0.12212,-0.20369 z m -4.15533,0.04077 0.61109,0.122204 -0.0815,0.24444 -0.61109,-0.16296 0.0815,-0.203684 z m 7.94395,0 0.16299,0.04071 -0.28518,0.977715 -0.12218,-0.04071 0.24437,-0.977715 z m -29.45391,0.08149 1.2221,0.08151 -0.20364,0.611077 -1.26289,0 0.24443,-0.692557 z m 10.9179,0.04077 0.65189,0 0,0.203698 -0.12227,0 -0.61101,-0.162967 c 0.0296,-0.0137 0.0505,-0.02714 0.0815,-0.04072 z m 14.2993,0.0815 0.2851,0.407388 -0.2851,0.448124 -0.24453,-0.04071 0.24453,-0.814774 z m 1.14064,0.325907 0.12218,0.611085 -0.28517,-0.08149 0.16299,-0.529617 z m 4.15532,0.04071 0.12218,0 c -0.0643,0.203967 -0.0578,0.392093 0,0.529611 l -0.0412,0 -0.12218,0.40738 0.0404,0.896236 -0.40743,0.48886 -0.20366,-0.04071 0.32592,-1.181412 -0.44817,-0.122217 0.24452,-0.814768 0.40737,0.12221 0.0815,-0.285164 z m -17.23246,0.04077 0.36671,0 0,0.285164 -0.24445,0.0815 -0.12226,-0.04071 0,-0.325908 z m 0.77408,0 0.40743,0 -0.16299,0.570328 -0.24444,-0.04077 -0.0815,-0.08149 0.0815,0 0,-0.448125 z m 2.03697,0 0.40743,0 -0.12226,0.692551 c -0.14601,0.15267 -0.34873,0.249644 -0.57036,0.325907 l -0.61107,-0.44813 c 0.0967,0.02907 0.20248,0.06438 0.3259,0.08151 0.41408,0 0.57036,-0.192808 0.57036,-0.651821 z m -22.44697,0.04071 c 0.01,0.01794 0.0708,0.02238 0.0815,0.04071 l -0.0815,0 0,-0.04071 z m 2.77021,0.04071 0.81481,0.203691 -0.0815,0.203691 -0.81482,0.0815 c -0.0204,-0.02167 -0.0204,-0.05936 -0.0409,-0.0815 l 0.12219,-0.407382 z m 21.42854,0 0.28511,0.162947 -0.0815,0.203698 -0.28518,-0.04072 0.0815,-0.325907 z m -2.32214,0.0815 0.28517,0.0815 -0.28517,0 0,-0.0815 z m -14.29929,0.366651 0.48893,0.529591 -0.20372,0.651808 -0.0409,0 -0.24436,-0.325901 -0.52968,-0.122216 c -0.0472,0.151004 -0.13914,0.279388 -0.24442,0.366637 l -0.85552,-0.24417 c -0.0472,-0.231808 -0.2221,-0.400878 -0.61109,-0.488847 l 0.0409,-0.203704 0.57032,0.122217 0.20372,0.244427 c 0.1052,-0.332892 0.56891,-0.44604 1.42576,-0.529591 z m 3.17766,0.325901 0.36666,0.448118 -0.65186,-0.122211 0.2852,-0.325907 z m 21.67297,0 0.12212,0.20369 c -0.0203,0.075 -0.0868,0.163629 -0.12212,0.244428 l -0.12226,-0.04072 0.12226,-0.407381 z m -1.34443,0.122204 0.20372,0.366644 -0.0412,0.203696 -0.24452,-0.366637 c 0.0223,-0.0703 0.0614,-0.131941 0.0815,-0.203703 z m -25.90971,0.407393 0.24449,0.04071 -0.12225,0.407381 -0.24442,-0.04071 0.12218,-0.407375 z m -1.50733,0.0815 0.20373,0.04071 -0.0408,0.12221 c -0.0613,-0.04219 -0.10226,-0.117657 -0.16295,-0.162947 z m -3.9109,0.08149 c 0.19837,0.04489 0.36561,0.106916 0.52963,0.12221 l 0.48891,0.611078 0,-0.488855 -0.12225,-0.122223 c 0.17359,-0.01093 0.33161,-0.06569 0.44815,-0.12221 0.15583,0.200127 0.30519,0.427061 0.48876,0.651808 l -0.32581,0.44813 -0.12225,-0.122216 -0.0815,-0.162954 -0.28513,-0.04071 -0.65179,0.285163 0.0409,0.611071 c -0.1697,-0.150598 -0.32843,-0.324588 -0.48892,-0.488866 l 0.0815,-0.203684 -0.36666,-0.08151 c -0.15513,-0.172163 -0.30251,-0.344777 -0.44807,-0.529584 l 0.65179,0.12221 0.16294,-0.488861 z m 11.73266,0.244433 0.44814,0 0,0.488855 -0.44814,0 0,-0.488855 z m 11.69207,0 0.16292,0 0,0.122211 -0.16292,-0.122211 z m -4.44057,0.04071 0.16298,0.285164 -0.0412,0.16296 -0.97772,0 -0.28518,0 0,-0.04071 c 0.0968,0.02193 0.19541,0.06135 0.28518,0.04071 0.17946,-0.04109 0.35956,-0.196397 0.48882,-0.407387 l 0.36671,-0.04071 z m -0.73335,0.04071 0,0.04071 -0.52955,0 0.52955,-0.04071 z m 2.19989,0.04071 c 0.0999,0.07689 0.15707,0.226767 0.16306,0.366644 l -0.69261,0 0.16299,-0.285171 0.36656,-0.08151 z m 17.1102,0.04077 0.16291,0.04072 -0.0412,0.16296 -0.16291,-0.08149 0.0412,-0.122223 z m -21.14319,0.04072 0.12211,0 c 0.12616,0.06322 0.21982,0.154702 0.24445,0.285171 l -0.36656,0 0,-0.285171 z m 11.69189,0.44813 0.52956,0.122211 -0.0815,0.244427 -0.52962,-0.12221 0.0815,-0.244428 z m -13.03635,0.08149 0.16295,0.122224 -0.0815,0.20369 -0.0815,-0.04071 0,-0.28517 z m -4.11455,0.08151 0.24442,0.04071 0.12224,0.08149 0.16295,0 -0.0815,0.24444 -0.36667,0.203691 -0.12218,0.04071 0,-0.0815 0.12218,0.04071 0.0409,-0.20369 -0.12217,-0.285158 0,-0.08151 z m 25.42076,0.04071 0.12225,0.448112 -0.12225,0.285176 0,-0.733288 z m -16.17314,0.162947 -0.0412,0.203697 -0.0412,0.488854 -0.93699,-0.12221 -0.0815,-0.0815 0.77407,-0.366644 -0.36671,-0.08151 0.69262,-0.04071 z m -3.50351,0.04071 -0.0412,0.122217 -0.28513,-0.0815 0.32586,-0.04071 z m 4.76634,0 0.44816,0.0815 0,0.04071 0,0.203691 c -0.19043,-2.6e-5 -0.2989,0.04785 -0.40736,0.12221 l -0.0412,-0.448112 z m -2.56645,0.04071 -0.1222,0.448118 -0.61107,-0.0815 -0.24445,-0.244433 -0.0815,0.203691 -0.28518,-0.04071 0.0815,-0.244421 0.0815,0 0.20372,0.0815 -0.0412,-0.0815 0.28525,0 0.73327,-0.04071 z m 3.78869,0 0.12218,0.04071 -0.12218,0 0,-0.04071 z m -15.27695,0.04071 0.16296,0.244414 0.28519,0 0.16296,-0.122204 0.28512,0.285164 -0.32597,0.366644 c -0.76179,0.01801 -1.19923,0.124764 -1.26282,0.325907 l -0.0815,0.203691 0.28512,0.0815 0.52963,0 -0.24443,0.285171 c -0.30675,1.3e-5 -0.72461,-0.157493 -1.18142,-0.36665 l 0.12225,-0.325908 -0.36667,-0.08149 -0.3259,0.162961 c -0.3254,-0.183915 -0.67355,-0.425255 -1.0593,-0.692552 0.52996,0.119876 0.94086,0.02097 1.22225,-0.28517 0.45195,0.0971 0.89644,0.16294 1.38507,0.16294 l 0.0815,0 0.16296,0.04071 0.0408,-0.162941 0.12225,-0.122211 z m 1.9147,0.08149 c 0.012,0.27818 0.17506,0.47167 0.61108,0.570335 l -0.0408,0.122216 -0.16296,0.0815 c -0.40166,-0.03338 -0.77868,-0.0703 -1.1,-0.0815 0.18753,-0.174176 0.46539,-0.465514 0.69257,-0.692551 z m 25.17634,0 0.12225,0.04071 -0.24445,1.018446 -0.1221,-0.04071 0.2443,-1.018458 z m -10.95863,0.0815 0.24444,0.0815 -0.0815,0.285164 -0.16307,0 0,-0.366644 z m -20.81735,0.122217 c 0.29646,0.344616 0.63236,0.712257 0.97769,1.099932 l -0.73327,-0.162947 c -0.29393,-0.250795 -0.58272,-0.525243 -0.85551,-0.814761 l 0.61109,-0.122224 z m -1.05924,0.244421 0.44815,0.733301 -0.3259,0 c -0.23132,-0.135305 -0.47378,-0.249933 -0.69257,-0.407388 0.0472,-0.0675 0.0914,-0.146842 0.12225,-0.244427 l 0.44807,-0.0815 z m 23.22094,0.162959 0.57042,0.122224 0,1.181412 -0.44816,0.122211 -0.52962,-0.122211 0.40736,-1.303636 z m 11.28461,0.122224 -0.20372,0.407381 0.0815,-0.325914 0.12226,-0.0815 z m -16.29539,0.122211 0.24437,0 0,0.0815 -0.24437,-0.04071 0,-0.04071 z m -19.67669,0.122223 c 0.0288,0.0058 0.0543,-0.0051 0.0815,0 l 0.0815,0.0815 -0.36668,0 0.20373,-0.0815 z m 29.1687,0.04071 -0.0412,0.366645 -0.2851,-0.08149 c 0.11951,-0.0874 0.21484,-0.191773 0.32591,-0.285171 z m 3.82949,0 0,0.0815 -0.0412,0 0.0412,-0.0815 z m -0.97772,0.04072 0.20365,0.0815 c -0.0722,0.0648 -0.16963,0.100814 -0.24437,0.162967 -0.19195,0.159404 -0.36801,0.338526 -0.57036,0.488854 -0.0776,-0.0803 -0.13973,-0.20169 -0.20372,-0.325907 0.15721,-0.07859 0.28431,-0.161455 0.44816,-0.244426 l 0.32592,0.08149 0.0412,-0.203691 c 0.008,-0.0032 -0.007,-0.03775 0,-0.04071 z m -23.54694,0.20369 -1.09986,0.529605 -0.16296,0 0,-0.203704 c 0.10873,2e-5 0.29661,-0.111032 0.52956,-0.285157 l 0.73326,-0.04071 z m -4.9293,0.122211 c 0.12972,0.145332 0.23014,0.256093 0.36667,0.407394 l 0,0.20369 c -0.0655,-0.04251 -0.139,-0.07821 -0.20373,-0.12223 l 0.0409,-0.08149 -0.16295,-0.04071 c -0.0795,-0.05589 -0.16598,-0.104679 -0.24442,-0.16296 l 0.16294,-0.04071 0.0408,-0.162947 z m 10.02163,0.0815 0.36667,0.244427 -0.0815,0.0815 -0.20365,0 c 0,-0.120718 -0.0366,-0.228226 -0.0815,-0.325907 z m -2.03693,0.325907 0.65187,0 0,0.203684 -0.65187,0 0,-0.203684 z m 6.64041,0 0.40743,0 0,0.0815 -0.24444,0.122223 -0.16299,0 0,-0.203684 z m -3.0961,0.122204 0.40738,0.08151 -0.40738,0 0,-0.08151 z m 5.82561,0 0.24445,0.04071 0.24438,0.285171 0.0815,0 0,0.407385 c -0.36143,0.03119 -0.75789,0.0611 -1.14064,0.08149 l 0.32592,-0.488858 c 0.079,-0.0039 0.15569,0 0.24444,0 l 0,-0.325908 z m -6.47747,0.325907 0.65186,0 0,0.488859 -1.01847,0 0.36661,-0.488859 z m 8.18846,0.04071 0.28525,0.08151 -0.0412,0.122208 c -0.1063,0.0146 -0.21759,0.02721 -0.32598,0.04077 l 0.0815,-0.244426 z m 9.41063,0.04071 c -0.0202,0.287618 -0.0419,0.561598 0.0412,0.774023 l -0.16299,0.0815 -0.12212,0.407382 -0.32597,-0.448119 0.57035,-0.814772 z m -12.05861,0.04077 c 0.0101,-0.0039 0.0303,0.0039 0.0412,0 l 0.0412,0.04071 -0.0815,0.244434 -0.24445,-0.04072 c 0.0426,-0.0934 0.1037,-0.184184 0.24445,-0.244427 z m -8.63658,0.162965 0.65179,0 0,0.203678 -0.65179,0.20369 0,-0.407368 z m 1.01847,0 0.48884,0 0,0.203678 -0.48884,0 0,-0.203678 z m 3.58501,0 0.3666,0 -0.3666,0.407368 -0.48892,0 0.48892,-0.407368 z m -15.1548,0.203678 0.0408,0 0,0.20369 -0.44814,0 0,-0.04071 0.40737,-0.162966 z m 3.3406,0 0.61116,0 0,0.20369 -0.61116,0 0,-0.20369 z m 4.97014,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.91091,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.04715,0.04071 0.0815,0 0,0.04072 -0.0815,-0.04072 z m -2.72952,0.0815 0.0412,0 -0.16299,0.488848 -0.52962,-0.122197 0.0412,-0.08151 c 0.17548,-0.07069 0.41502,-0.200828 0.61102,-0.285163 z m 5.29596,0 c 0.0722,0.0901 0.16119,0.148412 0.24445,0.244421 l 0,0.04071 -0.40744,-0.0815 c -0.0288,-0.0236 -0.0556,-0.05782 -0.0814,-0.08149 l 0.24438,-0.122217 z m -32.63144,0.285164 0.65171,0 0,0.244427 -0.65171,0 0,-0.244427 z m 2.93314,0 0.3666,0 -0.3666,0.529592 0,-0.529592 z m -3.54431,0.244427 0.44822,0 0,0.285165 -0.44822,0 0,-0.285165 z m 9.32921,0 0.61102,0 1.01846,0.285165 1.22212,-0.285165 1.30366,0 0,0.488868 -5.17373,0 0,-0.203703 1.01847,-0.285165 z m 4.52193,0 4.6035,0 -0.44817,0.488868 -0.20372,-0.203703 -1.01845,0.203703 -2.48502,0 -0.44814,-0.488868 z m 5.45896,0 0.57028,0 0,0.285165 -0.57028,0 0,-0.285165 z m 15.31767,0 c -0.0202,0.0666 -0.0296,0.136103 -0.0412,0.203697 l -0.0412,0 0.0412,-0.162953 0.0412,-0.04072 z m -30.51314,0.285165 1.01847,0 0,0.203703 -1.01847,0 0,-0.203703 z"
+       id="path2872-6-8-5-7-0" />
+    <path
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       d="m -523.35174,43.484319 -2.56652,0.488854 0,1.344369 0.57033,-0.61108 0.65182,0 0,0.203695 -1.22215,0.407385 0,2.077647 0.20369,0 -0.20369,0.28517 0,0.855504 c -0.12423,0.113388 -0.18884,0.189253 -0.28518,0.285169 l 0,0.488855 c 0.0956,-0.04619 0.18474,-0.0603 0.28518,-0.122209 l 0,0.733288 -0.28518,0.244425 0,8.555038 0.61109,2.240611 0.0815,0.570328 c -0.0281,0.0807 -0.061,0.167763 -0.0815,0.244443 0.0661,0.04891 0.10795,0.108164 0.16295,0.162939 l 0,0.16296 -0.24443,-0.08149 c -0.0241,-0.006 -0.0571,-0.0013 -0.0815,0 0.0359,-0.12665 0.0625,-0.256919 0.12222,-0.366641 l -0.16296,-0.611077 -0.40738,0.08149 0,3.870132 c 0.0135,-0.002 0.0267,0.004 0.0407,0 l 0.2037,-0.04072 0.0407,-0.04072 0,0.855512 c -0.0897,0.261716 -0.19028,0.502086 -0.28519,0.692553 l 0,0.977717 0.24444,0.08149 -0.0407,0.162953 -0.20369,-0.08151 0,11.12157 0.16296,-1.181417 0.12222,0.04072 0,1.018451 0.20368,0 0.48886,0.529593 c -0.0998,0.08211 -0.1897,0.193415 -0.24443,0.366648 l -0.20369,-0.244429 -0.0815,0 -0.16295,-0.651812 0,0.570335 -0.0407,0 -0.24444,0.122205 0,0.89624 0.28517,-0.122198 0,0.3259 -0.12221,-0.04072 -0.12222,0.407388 0.24443,0.04072 0.36666,-0.122218 0,0.244423 -0.36666,0 0,0.855512 -0.28517,0.08149 0,0.203701 0.28517,-0.0815 0,0.0815 c 0.41405,3.4e-5 0.57035,-0.142159 0.57034,-0.44813 l -0.20368,-0.203688 0.52959,0 -0.12222,0.08149 -0.0815,0.24443 0.1222,0 0,0.08149 0.20372,0.244429 0,0.285164 -1.01847,0 0,0.244429 3.38127,0 c 0.23466,-0.638304 0.52694,-0.977717 0.93699,-0.977717 l 0,-0.407369 -0.57033,0 -0.28516,0.203688 -0.16297,0 -0.24443,-0.325919 0.0815,-0.244423 -0.24443,0.08149 -0.65182,0 -0.32591,0.122232 0,-0.04072 -0.36665,-0.0815 -0.28515,0.203693 -0.44812,-0.203693 0,-0.244423 1.05919,0 0,-0.203681 -0.20369,-0.203708 0,-0.244422 0.48886,0.162939 -0.0815,0.203707 0.57033,0.122218 0.28517,-0.04072 0.61109,0.203695 -0.0815,0.244416 0.28516,0.08151 0.57035,-0.04072 0.65182,0.244429 0,0.203701 c -0.32192,6.7e-5 -0.81629,0.386502 -1.38512,1.181392 l 18.57668,0 c 0.0815,-0.08019 0.16348,-0.163026 0.24447,-0.244423 0.2121,0.0756 0.504,0.164943 0.73324,0.244423 l 1.46664,0 -0.24446,-0.407369 1.14065,0.08149 0.20372,0.0815 -0.0408,0.162953 -0.52961,0.08149 0.73332,0 7.8625,0 0.0408,-0.162953 c 0.0608,0.03074 0.13556,0.05569 0.20371,0.0815 l -0.0408,0.0815 1.30362,0 0.36666,-0.244429 -0.0408,0.244429 2.56658,0 0.0814,-0.244429 0.24445,0.04072 -0.0815,0.203688 0.44818,0 0,-1.344365 -0.0816,0.244436 -0.24445,-0.04072 0.12219,-0.407388 0.20373,0.08149 0,-9.043901 -0.1222,-0.04072 0.1222,-0.570325 0,-1.711019 -0.2852,0.0815 -0.0411,0.203701 0.20373,0.3259 -0.6111,1.099941 -0.20365,-0.04072 0.93694,-3.503492 0,-1.588787 -0.28518,0.122211 -0.0411,1.0592 -0.65176,2.362809 -0.57038,0.28517 1.18141,-4.399731 0.36665,0.570341 0,-1.344371 -0.16293,-0.04072 0.16293,-0.570342 0,-1.833215 c -0.25976,-0.392086 -0.52387,-0.782767 -0.81476,-1.140677 l 0.81476,0.04066 0,-1.222146 -0.20365,0.855506 -0.24446,-0.0815 0.32592,-1.181418 0.12219,0.04066 0,-3.544226 -0.0815,0.285164 -0.44811,-0.122219 0.52957,-2.036913 0,-7.984701 -0.0411,0.122216 -0.81483,0 -0.65176,-0.366646 -0.81478,0 0.0408,-0.203682 -0.3259,-0.529606 0.0815,-0.285165 0.20371,0.04069 0.85554,0.774029 0.28511,-0.16296 0.0816,-0.285164 c -0.31632,-0.38756 -1.75499,-1.088807 -4.31833,-2.077654 l -1.09991,0 2.81093,1.181403 -0.1222,0.407385 0.28515,-0.162944 0.69256,0.203685 -0.48885,0.814769 -0.20371,-0.04069 -0.16295,-0.28517 -0.24439,-0.04069 -0.36665,0.122221 0.12219,-0.407385 0.36665,-0.162955 0,-0.0407 -0.24445,-0.28517 -0.24439,-0.0815 -0.28523,0.203695 -0.24438,-0.04069 -0.69257,-0.488858 -0.57037,0.366644 -1.548,-1.262883 -1.83322,0 -0.0815,0.325903 -0.24446,-0.04069 0.0815,-0.285164 -3.29978,0 1.01847,1.548048 0.20363,0.04069 -0.16296,0.692549 -0.4481,-0.12221 -0.0815,0.20369 c 0.32768,0.0876 0.56243,0.558481 0.69256,1.385098 l -0.16296,0.692549 -0.24439,-0.08149 0.1222,-0.448125 -0.73332,-0.203696 -0.16294,0.448125 0.48885,0.122215 -0.24438,0.896239 -0.48886,-0.122209 -0.20371,0.936978 0.4481,0.12222 -0.1222,0.407379 -0.44817,-0.122214 -0.12219,0.407384 0.44817,0.12221 -0.16296,0.692548 c -0.40964,-0.109511 -0.69709,0.123208 -0.93703,0.692561 -0.0222,0.0836 -0.0378,0.175137 -0.0408,0.244424 l -0.24439,-0.285164 -0.20371,0.285164 c -0.008,-0.0895 -0.008,-0.188935 0,-0.285164 l 0.20371,0 0,-0.203695 -0.16295,-0.16295 c 0.0141,-0.071 0.0208,-0.129638 0.0408,-0.203701 l 0.52953,0.162961 0.16296,-0.651808 -0.40735,-0.611086 0.93697,-1.385098 -0.20371,-0.04069 0.28522,-0.16295 0.0815,-0.285175 -0.20372,-1.466567 0.65181,-0.244436 -0.24447,-0.0815 0.44817,-0.61107 c 0.15368,-1.067492 -0.19902,-1.684755 -1.05921,-1.914691 l 0.28515,-0.162961 0.0815,-0.244423 -1.58882,0 0,0.08149 0.69256,0.162962 -0.93695,0.733289 c 0.0847,-0.316336 0.0482,-0.640173 -0.0408,-0.97772 l -1.58884,0 -0.20363,0.692554 -0.24447,-0.04069 0.16295,-0.651816 -0.93694,0 0.24439,0.488854 -0.0815,0.448125 -0.36666,-0.570334 0.0814,-0.366645 -0.4481,0 -0.85552,3.096107 c -0.0967,-0.04508 -0.17958,-0.07671 -0.28514,-0.122216 l -0.0408,0 -0.16295,-0.24443 0.28515,-0.122214 0.0815,-1.181402 0.36665,-1.425845 -0.48884,0 -0.61113,2.362817 -0.24439,0 0.61105,-2.362817 -2.60722,0 -0.0408,0.162949 0.4481,0.12222 -0.28515,1.059196 c -0.99878,-0.379437 -1.82216,-0.651771 -2.44434,-0.651816 -0.14758,0.374168 -0.4354,0.625014 -0.774,0.774029 -0.0164,-0.06899 -0.0223,-0.133685 -0.0408,-0.203694 l -0.0408,-0.203689 0.57029,-0.0815 0,-0.285165 c 7e-5,-0.200889 -0.25456,-0.366989 -0.774,-0.488865 l -0.0408,-0.203685 -0.9777,0 c 7.4e-4,0.01358 0,0.02711 0,0.04069 l 0,0.244426 c -0.27869,-0.137275 -0.62406,-0.216032 -1.01848,-0.285165 l -1.71102,0 0,0.162949 -0.24442,0.0815 -0.0815,-0.244425 -0.5296,0 0.0407,0.122209 -0.16296,0.162956 -0.0815,-0.285165 -2.72947,0 -0.20369,0.97772 -0.32591,0 0,-0.488866 c 0.0847,-0.176167 0.15525,-0.357463 0.20371,-0.488854 l -2.40359,0 z m 36.25717,12.832555 0,-0.936979 -0.0411,0.04069 -0.16301,0.611086 0.20373,0.285164 z m -34.34247,-12.751086 -0.28516,0.44812 -0.48887,0.0815 0.0815,-0.285165 0,-0.122221 0.69257,-0.12222 z m 13.48443,0.04069 0.44811,0.122216 -0.0408,0.24443 -0.4481,-0.12221 0.0408,-0.244436 z m -16.29537,0.366646 0,0.488859 -0.44813,0 0.44813,-0.488859 z m 7.82176,0 0.0815,0.0407 0.20369,0.896243 c -0.22244,-0.0204 -0.4372,-0.04551 -0.61107,-0.08149 l 0.2037,-0.651815 -0.0407,-0.162954 0.16293,-0.04069 z m 1.46656,0 0.40741,0.488859 -0.40741,0 0,-0.488859 z m -2.56649,0.162953 0.0815,0.285165 -0.12221,0.04069 c -0.0711,-0.0791 -0.0815,-0.189545 -0.0815,-0.285164 l 0.12221,-0.04069 z m -6.1515,0.04069 0.44812,0 0,0.285164 -0.44812,0 0,-0.285164 z m 5.21452,0 0.20368,0 0,0.285164 -0.20368,0 0,-0.285164 z m -2.97391,0.285164 c 0.003,-0.005 0.0382,0.005 0.0407,0 l 0,0.24443 -0.16294,0 c 0.0379,-0.0691 0.0875,-0.179478 0.1222,-0.24443 z m 13.03627,0 0.2037,0.0815 -0.16295,0.65181 -0.3259,-0.57034 0.28515,-0.162949 z m 11.81416,0.04069 0.4481,0.122209 -0.12219,0.488865 -0.48886,-0.122221 0.16295,-0.488853 z m -5.82557,0.16295 0.24439,0.04069 -0.16294,1.5888 -0.28515,0.162949 -0.1222,0.48886 -0.52961,2.525777 -0.65181,-0.651814 1.09991,-2.647993 -0.24439,-0.285164 0.0814,-0.203683 0.57035,-1.018471 z m 0.97771,0.04069 0.57029,0.122221 -0.28514,0.16295 -0.0815,0.203696 -0.77401,3.870135 -0.28515,0.162955 -0.0815,1.140662 -0.2037,0.774029 -0.57037,0 0.16303,-0.570328 c 0.2449,-0.0957 0.44809,-0.212888 0.44809,-0.366645 l -0.28514,-0.28517 1.38503,-5.214505 z m -17.72122,0.203702 0.24442,0 0.0407,0.162944 -0.0815,0.04069 -0.12221,0 -0.0815,-0.203684 z m 14.54364,0.122203 0.2037,0.04069 -0.0815,0.448125 -0.24447,-0.08149 0.1222,-0.407384 z m 12.62891,0.04069 0.20365,0.0815 -0.0815,0.407384 -0.24446,-0.0815 0.12219,-0.407386 z m -29.82054,0.04069 0.65181,0 0,0.203701 -0.65181,0 0,-0.203701 z m -2.07767,0.203701 1.05921,0 c -0.0287,0.0977 -0.0825,0.188675 -0.12222,0.285163 l -0.93699,0 0,-0.285163 z m 11.85489,0 0,0.529594 -0.48885,0 0.48885,-0.529594 z m 24.36159,0.162943 c -0.0738,0.276388 0.14168,0.513078 0.5703,0.651816 l 0,-0.529596 -0.5703,-0.12222 z m -6.07005,0.32591 0.4481,0.122216 -0.36658,1.303623 -0.44818,-0.12221 0,-1.181413 0.36666,-0.122216 z m -17.06937,0.44812 0,0.488865 -0.2037,0 -1.67028,0.244429 c 0.0349,-0.18638 0.0745,-0.374899 0.0815,-0.570345 l 1.79247,-0.162949 z m 0.36666,0 0.65181,0.203689 0,0.285176 -0.85552,0 0.20371,-0.285176 0,-0.203689 z m 1.0184,0 0.0408,0 0.28523,0.448125 -0.0408,0.04069 -0.28521,0 0,-0.488859 z m 1.83329,0 -0.0815,0.32591 -0.28521,0.04069 0.12226,-0.325905 c 0.0735,-0.01 0.15961,-0.03571 0.24439,-0.0407 z m 10.26602,0 0.6518,0.36665 -0.0814,0.203684 -0.44817,0.85551 c -0.0762,0.613109 0.11998,0.990443 0.52961,1.099933 l -0.12219,0.407385 -0.52961,-0.122221 -0.0815,0.285165 0.24447,0.285175 -0.36666,0.12221 0.0408,1.181413 -0.48885,1.792484 -0.52961,-0.122215 -0.40734,-1.303625 0.12219,-0.488863 0.24439,0.04069 -0.12219,0.488866 0.4481,0.122209 0.0408,-0.203689 -0.28514,-0.814765 0.28514,-0.122209 c 0.11856,-0.443457 -0.0788,-0.764881 -0.57028,-0.896249 l 0.6518,-0.285165 -0.1222,0.407385 0.48886,0.12221 0.36666,-3.218327 0.0408,-0.20369 z m -20.4914,0.12222 0.24441,0.0407 0.12223,0.488865 -0.32591,-0.0815 0,-0.366645 -0.0407,-0.08149 z m -7.7403,0.0815 0.44812,0 -0.44812,0.529604 0,-0.529604 z m 1.30364,0 0.81476,0 c -0.0125,0.01557 -0.0279,0.02517 -0.0407,0.04069 -0.25722,0.205419 -0.34293,0.30401 -0.57033,0.488865 l -0.2037,-0.244425 0,-0.285181 z m 1.30362,0 0.36664,0 0.4074,0 0,0.2037 -0.0815,-0.0815 -0.48885,0.12222 0,0.244431 -0.0815,0.04069 -0.20369,-0.24443 -0.0815,0 0.16294,-0.285176 z m 1.14068,0 0.61106,0 -0.0407,0.285181 -0.57035,0 0,-0.285181 z m 7.29219,0 0.65181,0 -0.0815,0.244441 0.12219,0.448113 -0.28515,0.04069 -0.40734,-0.651815 0,-0.08149 z m 1.26286,0 0.2037,0 0.0815,0.244441 -0.20371,0.04069 -0.0815,-0.285177 z m 21.14323,0 0.81476,0 0.24446,0.04069 -0.0815,0.2037 -1.0999,0.162944 0.12219,-0.407385 z m -12.91407,0.0815 0.20371,0.0815 -0.0815,0.407386 -0.24439,-0.0815 0.1222,-0.407386 z m 5.25528,0 -0.0815,0.203696 0.48885,0.12221 0.0408,-0.203689 -0.44809,-0.122217 z m 10.14389,0.366646 0.48878,0.122215 0.40741,0.570334 -0.6518,0.325905 0.28515,0.08149 -0.61105,1.01846 c -0.32768,-0.0876 -0.36295,-0.371336 -0.24446,-0.81477 l 0.28522,-0.162949 0.0408,-0.203685 0,-0.936991 z m -1.38513,0.285164 0.24439,0.0815 0.0408,0.733289 -0.44809,-0.122215 0.16294,-0.69255 z m -25.50226,0.0407 0,0.407385 -0.28517,0 -0.0815,-0.325904 0.36665,-0.0815 z m 23.91343,0.04069 0.24447,0.08149 -0.12227,0.407385 -0.20363,-0.0407 0.0814,-0.448119 z m -24.7282,0.08149 0.0815,0.285169 -0.24444,0 0,-0.244428 0.16296,-0.04069 z m -8.22916,0.04069 1.01847,0 c -0.10098,0.0837 -0.19174,0.16587 -0.28518,0.244429 l -0.73329,0 0,-0.244429 z m 2.07766,0 0.44813,0 0,0.244429 -0.61109,0 0.16296,-0.244429 z m 7.86252,0 0,0.244429 -0.20371,0 -0.0407,-0.16295 0.24444,-0.0815 z m 3.74793,0 0.40742,0 0,0.244429 -0.40742,0 0,-0.244429 z m 1.05922,0 0.81476,0 0,0.244429 -0.81476,0 0,-0.244429 z m 22.36532,0.04069 0.44818,0.12221 0.28519,0.285175 0.0815,-0.407385 0.24439,0.04069 -0.12219,0.448113 -0.20365,-0.0815 0.16292,0.285165 -0.12219,0.488854 c -0.32767,-0.0875 -0.61605,0.14207 -0.77403,0.733289 l -0.36664,-0.611069 0.36664,-1.303623 z m -31.00187,0.04069 0.28515,0.20369 -0.2037,0.0815 -0.0815,-0.285166 z m -4.72566,0.0815 0.0407,0.08149 -0.12221,0 c 0.0274,-0.0311 0.0537,-0.04962 0.0815,-0.08149 z m 31.97966,0.0407 0.52961,0.162955 -0.0408,0.203689 -0.52961,-0.122209 0.0408,-0.244435 z m -20.49143,0.04069 0.36666,0 0,0.285164 -0.36666,0 0,-0.285164 z m 3.54425,0 0.20372,0 c 0.29323,0.100038 0.50265,0.254317 0.6518,0.488861 l -0.0815,0.122209 c 0.049,0.098 0.11284,0.18842 0.16295,0.285175 l -0.36666,0 0,0.244431 0.52962,0.08149 c 0.0742,0.137799 0.16792,0.272306 0.24439,0.407383 l -1.79247,0 0,-0.203693 c 0.5521,1.04e-4 0.81476,-0.223573 0.81476,-0.529594 l -0.36666,-0.407385 0,-0.488866 z m -9.28839,0.04069 0.12222,0.448118 -0.20368,0.04069 -0.0815,-0.325905 0.16295,-0.162954 z m -3.50348,0.08149 0.0815,0.448114 -0.44811,0.12222 -0.0407,-0.162949 0.32591,-0.04069 0,-0.325905 0.0815,-0.04069 z m 1.62952,0.04069 c 0.28512,1.066685 0.7124,1.543131 1.30364,1.385099 l 0.0815,0.162949 -0.16293,0.244437 -0.24445,-0.122216 c -0.59642,0.730855 -0.87083,1.451759 -0.69256,2.118387 l -0.85549,-0.651809 0.61107,-0.162959 -0.12222,-0.407386 c -0.36952,0.0988 -0.59835,-0.0975 -0.81477,-0.611069 l 0.97773,-0.733289 -0.44812,-0.936979 -0.0407,-0.162955 0.40738,-0.12221 z m 23.58757,0.244426 0.4481,0.12222 -0.0815,0.244429 -0.4481,-0.122219 0.0815,-0.24443 z m -14.951,0.0815 0.65181,0 0,0.203683 -0.65181,0 0,-0.203683 z m 4.6034,0 0,0.08149 -0.0408,0.162962 -0.20363,-0.04069 0.24439,-0.203689 z m -10.55123,0.0407 c 0.15658,0.129295 0.32912,0.246326 0.57034,0.366644 l 0,-0.16296 0.0815,0.366644 0,0.0815 -0.44812,0.12221 -0.2037,-0.774024 z m 23.22091,0.04069 0.44809,0.122215 0,0.977719 -0.28515,0.122221 -0.0408,0.203694 -0.16296,1.466568 -0.40742,0.570344 0.20372,0.244425 -0.32591,0.203696 0.36666,0.570334 -0.28514,0.12222 -0.24446,-0.04069 -0.0408,1.140674 -0.3259,1.140663 -0.4481,-0.16295 -0.20371,0.692549 c 0.0134,0.02423 0.0282,0.0565 0.0408,0.0815 l -0.1222,0.0815 0.16288,0.0407 c 0.0834,0.20379 0.14224,0.440823 0.16303,0.69255 l -0.0408,0.203695 -0.16296,-0.244424 -0.28521,-0.0815 -0.0408,0.04069 0.24447,-1.548059 0.774,-2.851682 0.4481,-0.814764 -0.28514,-1.059199 0.5296,0.16296 0.32591,-2.077664 z m -28.43542,0.0407 -0.0407,0.448125 -0.28517,0.0815 -0.28516,-0.162955 -0.20371,0.08149 0.36665,0.48886 -0.48885,0.611074 -0.32591,-0.488864 c 0.0713,-0.01669 0.1278,-0.04069 0.20369,-0.04069 l 0,-0.488858 -0.16295,0 -0.2037,0.285164 -0.20368,0 0.36664,-0.611075 1.26289,-0.203694 z m 4.80713,0 0.16296,0.65182 -0.2037,0.04069 -0.2037,-0.611069 0.24444,-0.0815 z m -7.08849,0.285175 0.2037,0 0,0.285165 -0.2037,0.244431 -0.24443,0 0,-0.325905 c 0.0778,-0.065 0.16333,-0.130039 0.24443,-0.203691 z m 32.59076,0.407375 1.50731,1.344368 -0.12227,0.448114 -0.52953,-0.162944 -0.48885,1.792483 -0.20371,-0.04069 0.40734,-2.485037 -0.28514,0.122221 -0.32591,-0.0815 0.0408,-0.936989 z m 4.48122,0 0.77395,0 -0.12219,0.407385 -0.69256,-0.203691 0.0411,-0.203694 z m -27.41698,0.122221 0.0407,0 0.20368,0.203694 -0.16294,0.04069 -0.0815,-0.244431 z m 3.42204,0 0.57037,0 0,0.203694 -0.57037,0 0,-0.203694 z m 5.49967,0 0.0408,0 0,0.203694 -0.0815,0 0.0408,-0.203694 z m 0.52961,0.162954 c -0.0141,0.0596 -0.0237,0.0991 -0.0408,0.162949 l 0.40741,0.122216 c -0.13949,0.129177 -0.3455,0.162982 -0.65187,0.162949 l -0.20365,0 0,-0.203684 0.48886,-0.24443 z m -4.64416,0.04069 0.65181,0.20369 0,0.448124 c -0.41403,0 -0.65181,0.182893 -0.65181,0.48885 l -0.16295,0 c 0,-0.458911 -0.1314,-0.733229 -0.40741,-0.73329 l 0,-0.203684 0.57036,-0.20369 z m 11.44743,0.0407 0.32591,0.611079 -0.0408,0.20369 -0.32589,-0.611069 0.0408,-0.2037 z m -18.08781,0.04069 0.57034,0.285175 0.6518,2.362816 0,0.0815 -0.36664,-0.529598 -0.20368,0 0.57032,0.855508 0.0407,0.651809 0.28516,0.122221 -0.36663,0.570328 -1.18142,-4.399735 z m 15.43984,0 0.24447,0.0407 -0.28515,1.099934 -0.24447,-0.04069 0.28515,-1.099934 z m -7.08842,0.122219 0.57028,0.203684 0,0.244436 -0.774,0 0.20372,-0.244436 0,-0.203684 z m -9.28841,0.203684 0.48887,0.488866 0.0407,0.162956 -0.48887,0.122209 -0.16294,-0.651809 0.12221,-0.122222 z m 1.9962,0.122222 0.32589,0.325903 0,0.0815 0.0815,0.04069 0.2037,0.244429 -0.16296,0.162954 0.65183,2.362817 -0.28519,-0.162949 -0.81475,-3.055371 z m -7.82179,0.08149 0.0815,0.366646 -0.20369,0.04069 -0.0815,-0.366645 0.20368,-0.04069 z m 2.44431,0.20369 -0.0815,0.611081 0.0815,0.244423 0.24443,0.16295 c -0.77596,0.207438 -1.0756,0.748031 -0.93698,1.711013 l 0.36665,0.570334 -0.2037,0.04069 0.57034,0.244423 -0.16295,1.303633 0.0815,0.285166 0.24443,0.12222 -0.20367,0.04069 0.57032,0.85551 c -0.14094,0.112523 -0.28636,0.239512 -0.44812,0.407379 l -0.0815,-0.203694 -0.40738,0.12222 -0.0815,-0.366646 0.40737,-0.12222 -0.20369,-0.814758 -0.4481,0.122209 -0.20372,-0.814759 0.4074,-0.12222 -0.12222,-0.448123 -0.65181,0.203699 0.0815,0.448115 -0.20369,0.04069 -0.16294,-0.611074 c 0.11741,-0.745669 0.35624,-1.183881 0.65181,-1.262878 l -0.0815,-0.16296 -0.40739,0.0815 -0.16294,-0.611079 0.20368,-0.04069 1.34437,-2.036918 z m 31.32781,0.203695 0.24447,0.0407 0.24439,0.285163 0.28522,-0.122214 0.69256,0.162954 0.4481,2.281337 -0.0411,0.203701 0.28512,0.0815 0.28526,-0.12222 0.24439,0.04069 -0.69257,2.647989 c -0.61587,-0.322907 -0.8481,-0.905632 -0.61106,-1.792489 l -0.2037,-0.08149 0.28515,-0.122222 0.12226,-0.488859 0.0815,-1.181402 -0.57036,-0.122221 -0.69256,2.688721 0.24446,0.285176 -0.36665,0.122209 -0.0408,0.203696 0.20371,2.199874 -0.81483,0 c -0.11611,0.567306 -0.18938,1.084271 -0.24439,1.507303 -0.1694,0.107546 -0.28485,0.397161 -0.40741,0.855505 l -0.3259,0.122225 -0.4481,-0.122225 -0.16296,-0.936968 0.57031,-0.488865 0,-0.122218 c 0.0548,0.0879 0.14861,0.167198 0.2852,0.203695 l 0.20372,0.04072 0.0814,-0.203701 0.24447,-1.873964 0.36665,-0.529588 0.73324,-3.625711 0.24447,-0.896233 -0.44817,-0.122221 -0.36658,1.344358 -0.36666,0.12222 0.24446,0.285164 -0.12226,0.488867 -0.52962,-0.162956 0.81477,-3.096106 z m -9.20687,0.12221 0.20371,0.04069 -0.24446,0.896245 -0.28515,0.162948 -0.2037,-0.08149 0.5296,-1.018464 z m 6.07004,0 0.2037,0.04069 -0.0815,0.407384 -0.24447,-0.04069 0.12228,-0.407385 z m -24.97265,0.08149 0.20369,0.81477 -0.20369,0.0407 -0.24443,-0.774029 0.24443,-0.0815 z m -6.72184,0.04069 0.0406,0 0.12222,0.448125 -0.20369,0.04069 -0.0407,-0.12222 c 0.0277,-0.106136 0.0503,-0.230425 0.0815,-0.325905 0.004,-0.0133 -0.004,-0.02767 0,-0.04069 z m 34.26102,0.04069 0.2444,0.04069 -0.20364,0.692548 -0.20371,-0.04069 0.16295,-0.692549 z m -26.56145,0.04069 0.12221,0.448125 -0.32591,0.488854 -0.0815,-0.366646 0.28518,-0.570333 z m 13.89177,0.0815 0,0.04069 -0.3259,0.203696 -0.20371,-0.04069 c 0.0111,-0.04091 -0.008,-0.0837 0,-0.122221 0.18916,-0.0178 0.37825,-0.05619 0.52961,-0.0815 z m -11.73264,0.244424 0.12223,0.122221 -0.20371,0.0815 -0.0407,-0.162949 0.12222,-0.0407 z m 27.13174,0.122221 0.77411,0.203684 -0.0411,0.24443 -0.77411,-0.20369 0.0411,-0.244424 z m -8.71801,0.04069 0.57037,0.162956 -0.0815,0.203689 -0.52961,-0.122209 0.0408,-0.244436 z m -15.48054,0.04069 0,0.61108 0.4481,0 c 0,0.337841 0.0364,0.62661 0.1222,0.814758 -0.2101,0.04257 -0.40051,0.0946 -0.5703,0.162955 l 0,-0.0407 -0.36666,-0.407384 -0.65181,0.2037 c 0,-0.11015 -0.0341,-0.207709 -0.0815,-0.285175 l -0.24446,-0.896238 1.34436,-0.162961 z m 2.89238,0 0.28521,0.203695 0.20372,0 1.8739,-0.203695 0,0.203695 -0.28515,0.651809 c 0.39918,-0.221187 0.70095,-0.473413 0.81476,-0.77403 0.0705,0.0934 0.13125,0.1937 0.2037,0.285171 l -0.36665,0.04069 0,0.44812 0.40741,0 0.24439,0.285169 0.16294,-0.24443 c 0.093,0.106779 0.1891,0.222071 0.28523,0.325905 l 0.0408,0.162949 -0.20371,-0.20369 -0.24445,0.122221 0.0408,0.692549 -0.24439,0.12221 -0.0815,0.162959 -0.65182,-0.122219 c -0.0645,-0.128708 -0.10697,-0.244337 -0.12226,-0.366645 l 0.32597,0 0.36658,0.0815 0.0408,-0.203684 -0.28515,-0.529605 c -0.27119,-0.0725 -0.50578,-0.06469 -0.73332,-0.08149 l -0.20371,-0.20369 -0.0814,0.16295 c -0.0646,0.0022 -0.14364,-0.007 -0.2037,0 l -0.52962,-0.611069 -1.05921,0.203694 -0.77401,-0.203694 -0.44809,0.448119 -0.16295,-0.244425 0,-0.203694 c 0.24149,2.8e-5 0.43258,0.0163 0.61104,0 0.53541,-0.04901 0.77409,-0.177869 0.77401,-0.407384 z m 16.29537,0 0.24445,0.0815 -0.24445,0.896245 -0.2444,-0.0815 0.2444,-0.896243 z m -19.96183,0.407379 0,0.448125 0.40742,0 0,-0.448125 -0.40742,0 z m -1.54806,0.0815 0.24446,0.285164 -0.20371,0.366645 -0.16295,-0.529595 0,-0.08149 0.1222,-0.04069 z m -10.51049,0.122214 0.0407,0.325911 -0.16293,0.04069 0.1222,-0.366644 z m 21.83579,0 0.16295,0 0,0.24443 -0.16295,0 0,-0.24443 z m -16.662,0.04069 0.52961,0.936979 0.0407,0.16295 -0.20369,0.285176 0.77404,1.833221 -0.52961,0.325906 -0.28517,-1.507319 -0.12222,-0.448126 -0.24443,-0.122213 -0.16294,-1.425839 0.2037,-0.04069 z m -0.89625,0.04069 1.14068,4.23679 -0.32592,-0.08149 0,-0.0815 -0.28516,-0.162943 -0.69255,-3.462762 -0.0407,-0.20369 -0.28518,-0.122214 0.48886,-0.122221 z m 19.88033,0.0815 0.24447,0.08149 -0.12228,0.407385 -0.20363,-0.04069 0.0814,-0.448125 z m -7.78098,0.08149 0.65179,0 0,0.20369 c -0.12664,0.03621 -0.22329,0.0983 -0.3259,0.162955 l -0.32589,-0.0815 0,-0.285164 z m -9.20692,0.12222 0.12222,0.366645 -0.2037,0.0407 -0.12222,-0.366644 0.2037,-0.0407 z m 15.11392,0.0407 0,0.122214 -0.0815,0 0.0815,-0.122214 z m 9.98094,0.244434 0.2444,0.0407 -0.16295,0.488854 -0.20364,-0.04069 0.12219,-0.488855 z m 5.25527,0 0.24438,0.0407 -0.16292,0.488854 -0.20372,-0.04069 0.12226,-0.488855 z m -22.81349,0.0815 0.36659,0 c -0.0955,0.175352 -0.20742,0.272966 -0.36659,0.285169 l 0,-0.285169 z m 7.12918,0 0.16295,0 0,0.203688 -0.16295,0 0,-0.203688 z m -1.50731,0.0407 0.28514,0.0815 -0.28514,0 0,-0.0815 z m 4.72567,0.0815 0.3259,0.611079 -0.1222,0.407375 -0.44817,-0.12221 0.24447,-0.896244 z m 1.01845,0.285164 0.20364,0.04069 c -0.0791,0.295697 0.16028,0.561163 0.65188,0.692549 l -0.24446,0.89625 c -0.13735,-0.160278 -0.28478,-0.289927 -0.4481,-0.407386 l 0.0408,-0.203688 -0.44811,-0.122216 0.2444,-0.896249 z m -5.86632,0.04069 0.1222,0 0.0815,0.04069 -0.12219,0.448126 -0.16303,-0.0815 0.0815,-0.407386 z m 3.38129,0 0.5703,0 -0.0815,0.203694 -0.2444,0 c -0.0895,-0.06529 -0.17475,-0.126627 -0.24446,-0.203694 z m -7.41439,0.122219 c -0.0141,0.04047 -0.0289,0.0791 -0.0408,0.122216 l -0.12226,-0.0407 0.16294,-0.0815 z m -15.60284,0.162956 0.0815,0.16295 0.32591,2.933156 0.40738,-0.122215 -0.12221,-0.366645 0.61107,0.244436 c -0.44338,0.118505 -0.63647,0.414753 -0.52958,0.814758 l 0.24442,0.122216 -0.24442,0.733289 0.0406,0.203688 0.44812,-0.122204 -0.12222,-0.448131 0.20369,-0.04072 0.12222,0.448124 -0.36665,1.140676 -0.36664,-0.08149 c -0.0562,0.071 -0.0686,0.134308 -0.12222,0.203687 l -0.44811,-1.588793 0.0407,-1.099931 -0.3259,-0.0815 0.2037,-0.285164 -0.0407,-0.244429 -0.48886,0.122209 -0.0815,-0.16295 0,-0.08149 0,-0.162955 c 0.33237,-0.117042 0.51341,-0.411554 0.44814,-0.936978 l -0.44814,-0.77403 -0.0407,-0.162949 0.57035,-0.366645 z m 31.16489,0 0.5296,0.12221 -0.20371,0.692548 -0.52961,-0.122208 0.20372,-0.69255 z m -28.92427,0.28517 -0.40738,0.0815 0.0407,0.203684 0.40739,-0.122216 -0.0407,-0.16295 z m 4.72565,0 0.12222,0.366644 -0.20369,0.0407 -0.12222,-0.366649 0.20369,-0.0407 z m 8.51437,0.04069 0.20364,0.0815 -0.2444,0 0.0408,-0.0815 z m 16.90642,0 0.52961,0.122203 -0.12226,0.488866 0.44816,0.12222 0.16296,-0.692555 0.44809,0.570335 -0.57036,0.814768 -0.16296,1.873953 -0.44809,0.529604 -0.24439,-0.04073 c 0.51365,-1.921504 0.41089,-2.920929 -0.24446,-3.096104 l 0.2037,-0.692554 z m -20.04333,0.0815 0.20371,0 -0.12219,0.448124 -0.16296,0 0,-0.203689 0.0815,-0.244435 z m 1.79254,0 0.20363,0 c 0.13683,0.16132 0.18656,0.385363 0.16296,0.651821 l -0.1222,0 -0.24439,-0.651821 z m -2.56654,0.122221 0.2037,0.366644 -0.28522,-0.0815 0.0815,-0.285164 z m 12.54741,0.162954 0.24447,0.0815 0.28514,0.203701 -0.16294,0.244424 c -0.10075,-0.099 -0.21338,-0.179178 -0.32592,-0.244424 l -0.0408,-0.28517 z m -7.16994,0.162949 0.28515,0 c 0,0.0716 0.0237,0.146617 0.0408,0.203697 l -0.40734,0 0.0814,-0.203697 z m 0.73325,0.0815 0.40741,0.12222 -0.3259,0 -0.0815,-0.12222 z m -6.72184,0.12222 0.2037,0.0815 -0.0815,1.222152 -0.0815,0.203684 -0.2037,-0.0815 0.0408,-0.488864 0.20371,0 0,-0.651808 -0.0815,-0.285165 z m 14.62509,0.04069 0.32591,0.0815 -0.16295,0.651809 -0.20364,-0.0815 -0.0408,-0.529604 0.0814,-0.122215 z m -15.35833,0.0407 0,0.203694 -0.12219,0 0.12219,-0.203694 z m -1.46662,0.162953 0.12223,0 0.12221,0.16295 0.0815,0.285175 -0.32592,-0.407384 0,-0.04069 z m 4.52201,0.04069 0.20363,0 -0.0815,0.203688 -0.16296,0 0.0408,-0.203688 z m -5.25529,0.162949 -0.0407,0.244436 c -0.14123,0.676559 -0.1364,1.030818 0.12222,1.099933 l -0.24443,0.203691 -0.0815,0.162953 -0.0407,0.24443 -0.1222,0.0407 -0.16296,-0.570346 0.44812,-0.08149 c -0.20596,-0.770581 -0.14745,-1.242962 0.12222,-1.344369 z m 1.87399,0 0.0408,0.122221 0.0814,-0.0815 0.16303,0.651815 0,0.122215 -0.48893,0.73329 0.28523,0.0815 -0.32591,0.122205 -0.0815,0.244441 0.24439,0.285165 -0.0815,0.162956 -0.40739,0.570335 0.0407,0.855505 -0.6518,1.303616 0.24443,0.285171 -0.48886,-0.162946 0.36664,-1.34437 -1.18142,0.733287 0.24443,0.285178 -0.8555,0.448116 -0.0815,1.018452 -0.40738,0.692546 c 0.0795,-0.499399 0.0113,-0.798016 -0.20369,-0.855499 l 0.28517,-0.162953 0.0407,-0.203688 0.20368,-1.303622 c 0.13742,-0.129896 0.27644,-0.271484 0.4074,-0.407382 l 0.44811,0.325906 c -0.0529,-0.211566 -0.15769,-0.375371 -0.24442,-0.529607 0.0511,-0.05549 0.11278,-0.106474 0.16294,-0.162946 l 0.24444,0.04066 0.0815,-0.366641 0.36664,-0.16296 -0.16296,-0.16296 c 0.0718,-0.0919 0.13396,-0.191204 0.2037,-0.285164 l 0.73328,0.04073 0.16296,-0.611072 -0.40738,-0.122221 c 0.0709,-0.107493 0.13505,-0.216091 0.2037,-0.325903 l 0.28516,0.0815 0.28519,-1.059199 c 0.10839,-0.199914 0.22265,-0.404896 0.32591,-0.611068 l -0.12227,-0.162961 0.0408,-0.122214 z m 11.73265,0.04069 0.20371,0.407386 0,0.04069 -0.48893,0 c 0.0119,-0.0714 0.0297,-0.135449 0.0408,-0.203684 l 0.24447,-0.244441 z m -22.16171,0.04069 0.0815,0.285164 -0.0815,0 0,-0.285164 z m 30.43163,0.203694 0.48885,0.122209 -0.40741,0.93699 c -0.0912,-0.13612 -0.20876,-0.26481 -0.36666,-0.366645 l 0.28522,-0.692554 z m -10.87721,0.162949 0.2037,0.04069 -0.2037,0 0,-0.04069 z m 0.97778,0.04069 0.40734,0.122222 -0.0408,0.162943 -0.20372,0.04069 -0.16294,-0.285165 c 0.008,-0.0027 -0.008,-0.03748 0,-0.0407 z m -8.39212,0.325906 0.40735,0.08149 -0.16295,0.651815 -0.28515,-0.570335 0.0408,-0.162955 z m 23.91342,0.04069 c 0.45192,0.279237 0.60486,0.768251 0.40738,1.507318 l -0.52958,1.059195 c -0.19977,1.122325 -0.29145,1.890984 -0.28522,2.403557 l -0.16288,-0.04065 0.0408,-0.77403 0.1222,-0.488859 -0.36666,-0.774028 0.89628,-2.118386 -0.12228,-0.774028 z m -21.8358,0.122219 0.24446,0 0,0.203685 -0.24446,0 0,-0.203685 z m 12.09931,0 0.0408,0 -0.16295,0.57033 c -0.0207,0.0768 -0.0275,0.130599 -0.0408,0.20369 l -0.0408,0 0.20372,-0.77402 z m -19.9618,0.04069 0.20368,0.04069 0.1222,0.244436 -0.36662,-0.12222 0.0407,-0.162944 z m -4.11459,0.203683 0.0407,0.203689 -0.28518,0.529601 -0.0407,-0.162956 0.28517,-0.570334 z m 3.62572,0 c 0.12177,0.05611 0.22518,0.114259 0.40738,0.16295 l -0.0815,0.366644 -0.16294,-0.244424 -0.0815,-0.04069 -0.0815,-0.24443 z m 31.1241,0.0815 0.24447,0.0815 -0.1222,0.488864 -0.24446,-0.0815 0.12219,-0.488853 z m -25.46148,0.0815 c 0.13058,0.0061 0.28596,0.02007 0.44818,0.04069 l -0.12227,0.366644 c -0.29562,-0.079 -0.54996,0.15923 -0.69257,0.692549 l -0.44809,-0.774017 c 0.0468,-0.17471 0.21321,-0.256035 0.48885,-0.285176 l 0.36666,0 -0.0408,-0.04069 z m 14.01405,0 0.0814,0 0.12228,0.04069 -0.0408,0.203696 -0.0408,0 -0.3259,0 0.20363,-0.244436 z m -8.14772,0.04069 0.28523,0 -0.12227,0.5296 -0.2444,-0.0815 c 0.0372,-0.153946 0.0639,-0.310136 0.0814,-0.448126 z m 0.85552,0 0.57036,0 0,0.08149 -0.36666,0.570345 0.1222,0.162944 -0.61105,-0.162944 c 0.10704,-0.160587 0.19043,-0.414297 0.28515,-0.651825 z m 1.05922,0 0.24439,0 -0.0408,0.08149 -0.20363,-0.04069 0,-0.04069 z m 2.24056,0 0.48893,0 -0.12227,0.366644 -0.20364,0.0407 0,0.448125 0,0.04069 -0.0815,0.162947 0.0408,0.448124 -0.16295,0.04065 c -0.18092,-0.205344 -0.24268,-0.494793 -0.20371,-0.85551 0,-0.0259 0,-0.05468 0,-0.08149 0.0127,-0.0827 0.0164,-0.153769 0.0408,-0.244437 l 0.20372,-0.366644 z m 0.85552,0 0.73331,0 0.32591,0 -0.0408,0.203696 -0.24446,0 0,0.488854 0.20372,0 -0.0408,0.203694 -0.32591,0.529596 0,-0.285165 -0.48884,0.122213 -0.0408,-0.529599 0.24447,-0.04069 0,-0.488854 -0.28522,0.04069 -0.0408,-0.244435 z m -7.69956,0.08149 0,0.774031 c -0.26518,-0.0831 -0.40734,-0.288935 -0.40734,-0.651809 0.18263,1.6e-5 0.29992,-0.04253 0.40734,-0.122222 z m 5.54043,0 0.40742,0.122222 -0.0815,0.366644 -0.4481,-0.122221 0,-0.04069 0.16296,-0.203685 -0.0815,0 0.0408,-0.122219 z m 11.93636,0 0.1222,0.651815 c -0.0252,-0.01193 -0.0505,-0.0326 -0.0814,-0.0407 l -0.32598,0.0815 -0.0408,0.244438 0,0.285164 -0.0408,0.0815 -0.20364,-0.04065 0.0408,-0.203695 0.24439,-0.366648 0.16296,-0.285164 -0.44811,-0.122221 0.57038,-0.285165 z m -18.82115,0.08149 c 0.0917,0.0158 0.17616,0.0407 0.28522,0.0407 l 0,0.651808 -0.24447,-0.0815 -0.0408,0.122215 -0.12219,0 0,0.448122 0,0.08149 0.44809,0.122225 0.0408,-0.203688 0.16295,0 -0.52961,0.774016 -0.2444,-0.325906 -0.0815,0.366647 0.24439,0.0815 -0.0408,0.04066 0.5296,0.122211 0.0815,0.244429 -0.12219,0.203688 c -0.15501,0.0762 -0.25872,0.227022 -0.28514,0.448124 l -0.0408,0.122217 -0.16302,0 c -0.008,-0.02974 0.008,-0.05217 0,-0.0815 l 0.0815,-0.448117 -0.16296,-0.04065 c -0.0836,-0.433126 -0.15233,-0.792381 -0.24439,-1.059201 l 0.44811,-1.629528 z m -7.29217,0.44812 c 0.2126,0.119669 0.31238,0.322445 0.28519,0.611073 l -0.2037,-0.122218 -0.0815,-0.488855 z m 18.33226,0 0.0408,0 c -0.008,0.02988 -0.0341,0.05223 -0.0408,0.0815 -0.0297,0.137157 -0.0601,0.283125 -0.0815,0.407386 -0.0918,0.01577 -0.17616,0.04072 -0.28521,0.04072 l 0,0.488859 -0.2444,0 0.0815,-0.936984 0.52961,0 0,-0.0815 z m -12.38447,0.0815 0.28522,0 0.1222,0.04069 0,0.407386 -0.20371,0 0,0.203694 0.0815,0.366647 c -0.16785,-0.149066 -0.27052,-0.489065 -0.28514,-1.018351 z m 25.33929,0.04069 0.44818,0.122215 -0.12226,0.407382 -0.44811,-0.122211 0.12219,-0.407386 z m -33.93507,0.0407 c -0.0441,0.04952 -0.0769,0.109684 -0.12221,0.162954 l -0.0407,-0.122214 0.16297,-0.04069 z m -0.89625,0.04069 0.44813,0.936973 -0.20369,0.04072 -0.0815,-0.04072 c 0.0105,-0.04471 0.0281,-0.07499 0.0407,-0.122204 l -0.24443,-0.0815 -0.20369,-0.692547 0.24442,-0.0407 z m 17.5175,0 0.40741,0.122215 -0.0815,0.24443 -0.36665,-0.24443 0.0408,-0.122215 z m 0.73332,0 0.2037,0.08149 -0.1222,0.407387 -0.2037,-0.04073 0.1222,-0.448125 z m 7.12924,0.08149 0.0815,0.122223 0.28522,0.08149 0.0815,-0.04066 -0.20371,1.34437 -0.69257,2.525776 -0.24439,0.488845 -0.0815,-0.366641 0.20363,-0.285164 -0.20363,-0.203687 -0.24447,0.08149 -0.16296,-0.285164 0.28523,-0.122205 0.20363,0.04073 0.0408,-1.059193 0.28521,-0.977723 0.40735,0.0815 0.12226,-0.529593 0.0408,0 0,-0.0815 c -0.12509,-0.229684 -0.18093,-0.50832 -0.20372,-0.814767 z m 3.05533,0.0407 0.24446,0.08149 -0.0815,0.244437 0,0.04072 -0.16295,0.529586 -0.20371,-0.08149 0.20371,-0.81476 z m -20.24696,0.203691 0.40742,0.122212 -0.12228,0.366647 -0.28514,-0.488859 z m -10.63273,0.325906 0.0407,0.162953 -0.12223,0.04072 0,-0.162959 0.0815,-0.04066 z m 5.54042,0.04072 0.2037,0.08149 -0.0815,0.36664 0.2037,0.04066 -0.24444,0.122211 -0.1222,0.488866 -0.16296,-0.611077 0.20369,-0.488865 z m 27.41696,0 0.36665,0.08149 c -0.0498,0.185755 -0.0245,0.335267 0,0.448123 l -0.32589,-0.08149 c 0.0534,-0.200034 0.0193,-0.335307 -0.0408,-0.448123 z m -3.9516,0.08149 0.0408,0 c -0.023,0.120227 -0.0512,0.238733 -0.0815,0.36664 l -0.0408,0 0.0815,-0.36664 z m -17.31384,0.04065 0.20372,0.04073 -0.24447,0.814757 -0.20371,-0.04066 0.24446,-0.814771 z m 14.74729,0.04073 c 0.10669,0.0985 0.25799,0.167996 0.40735,0.244429 l -0.16295,0.325906 -0.16295,-0.04073 -0.0408,-0.04065 c -0.0475,-0.04006 -0.10957,-0.09031 -0.16296,-0.122212 l 0.12228,-0.366647 z m -21.91726,0.162946 0.0815,0 c 0.009,0.06321 -0.004,0.143416 0,0.203694 l -0.0815,-0.203694 z m 32.46853,0 0.32585,0.5296 -0.44804,-0.122211 0.12219,-0.407389 z m -33.24256,0.366647 0.0407,0.122218 -0.16297,-0.04072 0,-0.04072 0.12222,-0.04072 z m 6.76259,0.162953 0.20371,0.0815 -0.73332,2.810939 -0.2037,-0.08149 0.73331,-2.810946 z m 9.45127,0 -0.20365,0.81477 0,0.08149 c -0.0697,0.01 -0.17074,0.0316 -0.24446,0.04066 l 0.24446,-0.896234 0.20365,-0.04072 z m 1.58882,0.162953 c 0,0.05117 0,0.108311 0,0.162959 -0.14038,0.171183 -0.50326,0.287233 -1.01846,0.407375 l 0.0815,-0.244429 0.93696,-0.325905 z m 8.59583,0.122217 c 0.10667,0.184365 0.23741,0.337444 0.36665,0.488859 l 0,0.122211 0.16295,0.04066 c 0.0683,0.06851 0.13015,0.143636 0.20364,0.2037 l -0.16295,0.651812 -0.20364,-0.04072 c 0.0713,-0.266733 -0.1677,-0.492551 -0.61112,-0.611076 l 0.24447,-0.855519 z m 1.01846,0.04072 0,0.122218 -0.0815,-0.08149 0.0815,-0.04065 z m 5.58106,0.04066 0.44819,0.122204 -0.0411,0.203701 -0.48884,-0.122224 0.0815,-0.203681 z m -24.19851,0.04072 0.1222,0.448117 0.24439,0.896241 -0.4481,0.733288 0.3259,-0.122212 0.20371,0.04066 -0.12219,0.36664 -0.20371,-0.04066 -0.20371,-0.244428 -0.2444,-0.08149 -0.0815,0.448123 -0.24446,-0.04072 0.65179,-2.403557 z m -1.22218,0.08149 0.20372,0.08149 -0.12227,0.529606 -0.20364,-0.04072 0.12219,-0.570348 z m 7.12926,0 0.20363,0.04072 -0.0815,0.366647 -0.20364,-0.04066 0.0815,-0.366647 z m 14.5436,0.04072 -0.0815,0.244436 0.69257,0.162946 0.0815,-0.203688 -0.69255,-0.203694 z m -28.67987,0.08149 c 0.0261,-0.0047 0.0548,0.004 0.0815,0 -0.12596,0.1796 -0.30237,0.32896 -0.5296,0.448124 l -0.0407,-0.203695 c 0.14479,-0.11438 0.30616,-0.206769 0.48886,-0.244429 z m 13.3622,0.203701 c 0.12724,0.113801 0.23912,0.223203 0.28515,0.325905 l -0.28515,-0.08149 0,-0.244429 z m -12.95482,0.203681 0.0407,0 0.32592,0.122224 c 0.0284,0.106409 0.0514,0.197507 0.0815,0.285164 l -0.20369,0.77403 -0.20368,-0.04066 c 0.14265,-0.533366 0.0105,-0.857968 -0.28518,-0.936988 l -0.20369,0.0815 0.0407,-0.162953 0.3259,-0.0815 0.0815,0 0,-0.04072 z m -2.56651,0.04066 0.0815,0.244429 -0.12221,-0.04066 0.0407,-0.203687 z m 13.44365,0 0.2037,0 c -0.0149,0.100513 -0.023,0.219011 -0.0408,0.325906 l -0.16295,0.162952 0,-0.488858 z m 8.55505,0 0.36666,0 -0.0408,0.162953 -0.40733,-0.122211 c 0.02,-0.0187 0.0639,-0.02109 0.0815,-0.04066 z m 1.01848,0 0.4074,0 0,0.203694 c -0.19509,4e-5 -0.36087,0.03646 -0.48885,0.08149 l 0.0815,-0.285164 z m -19.4322,0.0815 0.16296,0.04065 -0.0815,0.325906 -0.0815,-0.36664 z m 13.81032,0.122204 0,0.529606 -0.0408,0.04066 -0.0408,0.162953 -0.24445,0 0.2037,-0.69256 0.12219,-0.04066 z m 0.85553,0 0.93695,0 -0.0408,0.16296 0,0.122211 -0.24439,0 -0.28522,-0.04072 -0.0815,0.04072 -0.28515,0 c 0,0.01491 0,0.02602 0,0.04066 l -0.0815,-0.04066 0.0815,-0.285171 z m 3.05538,0.16296 -0.0815,0.366646 -0.36667,0 -0.12219,-0.122217 0.0408,-0.162947 c 0.20437,-0.02069 0.3677,-0.0344 0.5296,-0.0815 z m 9.04393,0 c 0.69441,0.364158 0.93309,1.014685 0.69256,1.914691 l -0.48893,-0.122204 -0.16295,0.529594 0.36666,0.570334 -0.85552,1.262888 0.20371,0.04072 -0.24439,0.122218 -0.0815,0.285164 0.16296,1.303623 -0.57038,0.244436 0.20372,0.04072 -0.36666,0.570321 c -0.13861,0.962972 0.16101,1.503584 0.93702,1.711011 l -0.24446,0.162953 -0.0815,0.244429 0.0815,0.61107 -1.34437,-2.036903 -0.20371,-0.04072 0.16295,-0.611084 0.44818,0.0815 0.0408,-0.16296 c -0.2956,-0.07899 -0.53443,-0.51721 -0.6518,-1.26288 l 0.16295,-0.611083 0.20364,0.04072 -0.0815,0.448123 0.69249,0.203688 0.0815,-0.448117 -0.40734,-0.122211 0.24439,-0.814771 0.40742,0.122219 0.20371,-0.814772 -0.40741,-0.122211 0.0815,-0.36664 0.44811,0.122205 0.0815,-0.366641 -0.40735,-0.122211 0.16296,-0.611077 c 0.36947,0.09879 0.59828,-0.138227 0.81474,-0.651817 0.10683,-0.399997 -0.008,-0.614763 -0.44817,-0.733288 l 0.16296,-0.61107 z m -24.52455,0.04072 0.48886,0.122211 -0.40737,0.570341 -0.24444,-0.08149 0.16295,-0.611076 z m 23.30237,0 c 0.13765,0.0728 0.29792,0.115031 0.4481,0.162953 l -0.12219,0.407375 -0.32591,-0.529587 0,-0.04072 z m -16.70271,0.08149 0.65181,0 0.20364,0.244435 0.16295,0 -0.16295,0.611077 -0.61106,0 -0.24439,-0.855512 z m 5.70338,0.203701 0.0814,0 c -0.0356,0.161249 -0.0825,0.31655 -0.1222,0.448124 l -0.0815,0 0.12227,-0.448124 z m 4.88855,0.04072 0,0.162946 -0.0815,0.244436 -0.2037,0 0.0408,-0.203694 0.24439,-0.203688 z m -7.74024,0.0815 0.20363,0.04072 -0.0408,0.08149 -0.20371,0 0.0408,-0.122204 z m -8.63657,0.08149 0.6518,0.36664 -0.28517,1.018459 -0.2037,-0.0815 -0.24441,-0.936981 0.0815,-0.366641 z m 20.89876,0 0.48893,0.122218 0.36658,1.140676 -0.12219,0.448124 -0.2037,-0.04066 0.12226,-0.448124 -0.44817,-0.122224 -0.0408,0.203701 0.24446,0.733288 -0.24446,0.122211 c -0.10691,0.400035 0.0862,0.696259 0.52961,0.814763 l -0.57037,0.244429 0.0815,-0.36664 -0.40735,-0.122211 -0.3259,2.933151 -0.0815,0.162952 -0.57036,-0.325905 0.0815,-0.203688 0.40742,-0.77403 c 0.0683,-0.553068 -0.11937,-0.878946 -0.48885,-0.977723 l 0.1222,-0.366633 0.48885,0.122204 0.0408,-0.244429 -0.20371,-0.285157 0.32592,-0.0815 -0.0408,-1.099935 0.44809,-1.588793 z m -18.98403,0.04066 0.40734,0.122217 -0.0408,0.203688 -0.4074,-0.122205 0.0408,-0.2037 z m 11.20304,0 0.16295,0 c 0.0661,0.05849 0.1536,0.117406 0.2444,0.162959 l -0.0408,0.122205 -0.0815,0.285177 -0.28514,-0.529607 0,-0.04065 z m -19.96183,0.04065 0.32591,0.488865 -0.24445,-0.244435 -0.20368,-0.04065 0.12222,-0.203701 z m 1.09994,0.0815 0.16295,0.04073 0,0.162939 -0.16295,0.651825 -0.20369,-0.0815 0.20369,-0.774029 z m 31.0834,0 c 0.0438,0.102862 0.0884,0.18376 0.16295,0.203682 l 0.2037,0.04066 0,0.448123 -1.71101,6.355173 -0.48886,-0.122212 0.28515,-0.122211 0.0408,-0.203694 0.69256,-3.462757 0.28515,-0.122212 0.0408,-1.059199 0.48893,-1.955434 z m 1.01846,0 0.20372,0.04073 -0.20372,0.651804 -0.2037,-0.0815 0.16295,-0.570328 0.0408,-0.04072 z m -15.64356,0.122211 0.0408,0.448117 -0.12219,0.04066 -0.0815,-0.325906 0.16295,-0.162952 z m 12.79188,0 0.20371,0.04066 -0.12227,0.366647 -0.20364,-0.04066 0.1222,-0.366647 z m -9.57353,0.04066 c 0.13467,0.0336 0.32368,0.06129 0.48885,0.08149 l -0.12219,0.488865 -0.44817,-0.162953 0.0815,-0.407382 z m -20.9803,0.325919 0.48887,0.122204 -0.0815,0.203695 -0.16296,1.385105 c 0.008,-0.184418 -0.0231,-0.352295 -0.0815,-0.570341 l -0.2037,-0.814764 0.0407,-0.325899 z m 3.29983,0.04066 0.44811,0.08149 c -0.10689,0.399989 -0.0105,0.695001 0.28518,0.774029 l -0.0407,0.203688 c -0.44334,-0.118538 -0.70269,-0.103707 -0.77404,0.162953 l -0.20368,-0.04065 -0.0815,-0.61107 0.36666,-0.570334 z m 16.82495,0.04072 0.28515,0 -0.0815,0.244429 -0.20364,0 0,-0.244429 z m -13.76957,0.16296 0.20369,0.04072 -0.0407,1.059194 -0.40738,-0.122225 0.24443,-0.97771 z m 20.12476,0.203681 0.44809,0.162959 -0.0408,0.162946 -0.48879,-0.122211 0.0814,-0.203694 z m 3.09615,0 0.20362,0.04065 -0.44809,0.936989 -0.2037,-0.04066 0.2037,-0.814764 0.24447,-0.122224 z m -19.51373,0.122224 0.93697,0.04066 -0.12219,0.570328 -0.97772,0 0.16294,-0.61107 z m 8.59584,0.16294 0.2037,0 0,0.04065 -0.2037,-0.04065 z m 3.74787,0 0.32598,0 -0.0408,0.2037 -0.28522,0 0,-0.2037 z m 2.36284,0 0.3259,0 0,0.2037 -0.36659,0 0,-0.122217 0.0408,-0.08149 z m -19.51367,0.04065 0.32591,0.529607 -0.28517,0.122225 -0.2037,-0.04066 c 0.0624,-0.233344 0.13267,-0.434464 0.16296,-0.61109 z m -4.31827,0.162966 0.20369,0.04066 -0.12222,0.366641 -0.20369,-0.04066 0.12222,-0.366647 z m 32.30557,0 0.20371,0.04066 c -0.10699,0.400003 -0.0105,0.695021 0.28515,0.774029 l -1.4259,3.503486 0.20371,0.244428 -0.0408,0.203695 -0.52961,0.896233 -0.20364,-0.04072 0.16295,-1.42584 0.24439,-0.122204 0.1222,-0.448131 0.69257,-3.422009 0.28521,-0.203694 z m -35.36094,0.122218 0.12221,0.855493 0.20368,0.122218 c -0.012,0.0966 -0.0135,0.183487 -0.0407,0.285164 l 0,0.08151 -0.0407,-0.08151 -0.20369,0.08151 c 0.0223,0.08379 0.0346,0.137183 0.0407,0.203682 l -0.36665,0.162966 c -0.0102,-0.04358 -0.0315,-0.0797 -0.0407,-0.122225 l 0.12222,-0.04072 0.0407,-0.203688 0.16296,-1.344357 z m 9.45129,0.04066 0.61108,0.162953 -0.0407,0.203688 -0.69256,0.0815 0.12222,-0.44813 z m -4.80713,0.244437 0.2037,0.08149 -0.16296,0.529593 -0.20369,-0.04066 0.16295,-0.570335 z m 28.965,0 0.2037,0.04065 -0.28515,1.018459 -0.2037,-0.0815 0.28515,-0.977717 z m -20.49143,0.122204 0.36666,0.5296 -0.16296,0.611077 -0.2037,-0.325913 -0.40735,-0.122204 c -0.1069,0.400009 -0.41209,0.566641 -0.85551,0.448117 0.10699,-0.400017 -0.008,-0.655498 -0.44809,-0.77403 l 0.0408,-0.203687 0.40736,0.122218 0.16295,0.244422 c 0.0803,-0.299962 0.44638,-0.454298 1.09997,-0.5296 z m 10.83645,0.203701 0.12219,0 0,0.122218 -0.12219,-0.122218 z m 13.11777,0 0.89622,0.244423 -0.44811,1.751745 c -0.29554,-0.079 -0.37678,-0.544377 -0.16293,-1.344363 l -0.44811,-0.08149 0.16293,-0.570335 z m -6.15154,0.04066 0.28522,0.529593 -0.0408,0.203695 -0.28522,-0.570342 0.0408,-0.162946 z m -28.55759,0.08149 -0.2037,1.629528 -0.81477,0.244423 0.24444,-0.896234 c 0.44905,-0.222951 0.73082,-0.546867 0.77403,-0.977717 z m 0.69255,0 0.24443,0.0815 -0.0815,0.36664 -0.28516,-0.0815 0.12221,-0.366641 z m 21.87652,0.04072 0.16295,0.04066 0,0.244437 -0.40741,0 0.24446,-0.285178 z m -9.53277,0.04066 0.20371,0 0.16295,0.244437 -0.28522,0 -0.0815,0 0,-0.04073 0,-0.203701 z m -6.96627,0.244437 0.48885,0.122204 -0.0815,0.244449 -0.52959,0.936969 -0.16297,-0.24443 -0.20369,-0.0815 -0.5296,0.28517 0.0407,0.651811 c -0.29559,-0.07909 -0.50411,0.04804 -0.61108,0.44813 l -0.16294,-0.244435 -0.20369,-0.04073 -0.24444,0.122218 0.2037,-1.629534 0.61109,0.162953 0.12219,-0.407376 c 0.73904,0.197532 1.15603,0.07409 1.26291,-0.325912 z m 2.85165,0.122204 0.20371,0.0815 -0.0815,0.36664 -0.2444,-0.04072 0.1222,-0.407383 z m -7.86248,0.04066 0.20369,0.0815 -0.0815,0.366641 -0.24441,-0.04073 0.12222,-0.407375 z m 6.64035,0.04065 0.20371,0.0815 -0.0815,0.407389 -0.24444,-0.04072 0.12223,-0.44813 z m -9.28836,0.122225 0.2037,0.08149 -0.24443,0.08151 0.0407,-0.162953 z m -0.0407,0.285157 0.16295,0.122225 0,0.04072 -0.20369,-0.04072 0.0407,-0.122225 z m 15.72501,0.08151 c 0,0.206522 -0.12992,0.308246 -0.3259,0.366641 l -0.52961,0.04072 0,-0.162967 0,-0.04072 0.85551,-0.203681 z m 3.2591,0 c 0.0134,0.0047 0.0289,-0.006 0.0408,0 0.0891,0.04598 0.17483,0.11084 0.20371,0.203681 l -0.24447,0 0,-0.203681 z m 1.54808,0 0.40734,0 0.0815,0.122197 -0.2037,0.814772 c -0.0453,0.002 -0.0747,0 -0.12219,0 l 0,0.203693 -0.20372,-0.203693 -0.40734,0 -0.16295,-0.244423 0.12219,-0.448124 c 0.18924,0.05057 0.34951,-0.04405 0.48886,-0.244422 z m 1.22209,0 0.32591,0 c 0.0149,0.01903 -0.0104,0.05909 0,0.08149 -0.0984,0.337863 -0.32732,0.598554 -0.6518,0.733287 l -0.1222,-0.04072 0.44809,-0.774022 z m 4.44053,0 -0.0408,0.203681 -0.48885,0 0,-0.122218 c 0.20015,-0.02768 0.3723,-0.05077 0.52961,-0.08149 z m 8.88096,0 0.2037,0.04072 -0.0815,0.366641 -0.2037,-0.04072 0.0815,-0.366648 z m -26.84662,0.08149 0.40739,0.122211 -0.12223,0.448123 -0.40737,-0.122211 0.12221,-0.448123 z m 9.7365,0.122211 0.16295,0 -0.16295,0.570348 0,-0.570348 z m -11.97712,0.162959 -0.0815,0.366648 0.40739,0.122211 0.1222,-0.366641 -0.44812,-0.122218 z m 4.97012,0.04073 0.69257,0.203687 -0.12226,0.366648 0.44816,0.122211 0.16296,-0.611077 0.3259,0.366641 c -0.34781,0.172321 -0.58871,0.446773 -0.73332,0.814771 -0.0623,0.02648 -0.0885,0.04618 -0.12219,0.08149 l -0.20371,-0.04072 c 0.14016,-0.443859 -0.02,-0.72708 -0.40742,-0.814771 l -0.20363,-0.04072 c 0.0713,-0.114633 0.11841,-0.281465 0.16294,-0.448117 z m 16.90643,0 0.40734,0.122211 -0.0815,0.244436 -0.40741,-0.122225 0.0815,-0.244422 z m -14.4214,0.203687 0.1222,0.04073 c -0.043,1.99e-4 -0.0808,-0.002 -0.1222,0 l 0,-0.04073 z m -13.72886,0.244423 0.44813,0.08149 -0.0815,0.203701 -0.40739,-0.122218 0.0407,-0.162953 z m 20.16555,0 0.16289,0.08149 -0.20363,0.04072 0.0408,-0.122211 z m -10.4698,0.04072 0.16295,0.244436 0.20373,0.04072 c 0.11848,0.03174 0.22322,0.04192 0.32589,0.04073 -0.14736,0.09259 -0.29501,0.125319 -0.48885,0.08149 l -0.20372,0.651811 c 0.38761,0.0877 0.63452,0.218979 0.77402,0.448124 l -0.48887,0.244429 0.40742,0.08149 0.0815,-0.285158 c 0.12205,0.224807 0.15218,0.502572 0.0408,0.855513 l 0.6518,0.162932 -0.36665,1.099942 -0.61105,-0.122212 0,2.11838 -1.34441,1.140676 0.2037,0.325904 -1.75176,2.403577 0.44813,-0.122232 0.24443,0.0815 -0.12221,0.407388 -0.28518,-0.04072 -0.28517,-0.325899 -0.28518,-0.04072 -0.12221,0.488859 -0.28515,-0.08151 2.48504,-7.781017 0.24442,-0.04073 -0.28516,0.977731 0.65181,0.122204 0.40738,-1.303622 -0.44813,-0.08149 0.0407,-0.122211 -0.2037,-0.08149 -0.28517,0 0.0407,-0.122225 0.28516,-0.04072 0.0815,-0.203688 -0.24442,-0.0815 0.16296,-0.570328 -0.20371,-0.285177 0.0815,-0.203688 0.28518,-0.08149 z m 6.68109,0.04072 0.20372,0.04073 -0.0408,0.122224 -0.16296,-0.162966 z m 7.86252,0 0.0408,0.162966 -0.28514,-0.08151 0.2444,-0.08149 z m -20.04331,0.122225 0.44813,0.774029 -0.32589,0.16294 -0.16296,-0.04072 0.0407,-0.896227 z m -0.69254,0.04073 0.20371,0.04072 -0.12224,0.448111 -0.20368,-0.04072 0.12221,-0.448103 z m 19.88032,0.162939 -0.0815,0.24443 -0.20363,-0.04073 0,-0.08149 0.28514,-0.122224 z m -1.38504,0.122219 0.0814,0.122211 0,0.285171 -0.44809,-0.122218 0.16294,0 0.20372,-0.285164 z m 3.87007,0.122211 0.24446,0.08151 0,0.285164 0,0.651819 0,0.122211 -0.3259,0.122224 -0.40741,-0.08151 0.28521,-1.140677 0.0408,0 c 0.0638,-0.008 0.10274,-0.0322 0.16294,-0.04072 z m -25.37999,0.122218 0.36666,0.488865 -0.48887,-0.122225 0.12221,-0.36664 z m 35.4017,0.04072 0.2037,0.04072 -0.12228,0.366641 -0.2037,-0.04072 0.12228,-0.366641 z m -11.44751,0.122218 -0.0408,0.203682 -0.774,0.08151 -0.2037,-0.08151 0,-0.04072 1.01846,-0.162945 z m 6.43669,0 -0.0408,0.203682 0.40734,0.08151 0.0408,-0.16296 -0.40742,-0.122211 z m -27.17253,0.244423 0,0.203694 -0.4074,0.203695 0.32591,0.325899 -0.12222,0.08151 -0.28516,-0.08151 0.0815,-0.325899 -0.12222,-0.04073 0,-0.04072 0.52961,-0.325906 z m 3.13685,0 0.36663,0.08151 -0.24442,0.692546 -0.32592,-0.0815 0.20371,-0.692554 z m 8.31061,0 0.40741,0 0,0.04072 -0.40741,0 0,-0.04072 z m -13.60661,0.08151 0.20368,0.04072 -0.36663,1.344357 c -0.0187,-0.298219 -0.0905,-0.486775 -0.24443,-0.570328 l 0.0407,-0.325919 0.36666,-0.488851 z m 10.30682,0.08149 0.24439,0.08149 -0.1222,0.448124 -0.28514,-0.04072 0.16295,-0.488852 z m 2.11837,0.04072 0.24447,0.04073 -0.0815,0.244435 0.0408,0.162953 c -0.0104,0.196901 0.0326,0.337191 0.12219,0.44813 l 0,0.08149 -0.16296,0 -0.40734,0.448104 -0.20371,0 0.24447,-0.855499 0.16295,-0.285157 -0.0408,-0.04073 0.0814,-0.244436 z m 1.38512,0.04073 0.24446,0.285177 0,0.285164 c -0.16258,-0.11746 -0.28097,-0.253472 -0.40742,-0.366641 l 0.16296,-0.2037 z m -7.69955,0.2037 0.28517,0.04073 -0.16296,0.488851 -0.24443,-0.08149 0.12222,-0.448124 z m 13.9733,0.0815 0.20363,0.04072 0.32598,0.488859 -0.0815,0.244429 -0.2037,-0.0815 -0.0815,-0.08149 0,-0.162953 -0.20371,0 c 0.0127,-0.155335 0.0416,-0.321881 0.0408,-0.448117 z m -16.53982,0.0815 -0.12221,0.36664 -0.0407,1.425841 -0.65181,0.814777 0.36664,0.08149 -0.44813,0.122218 -0.0815,0.244429 0.28517,0.325906 -0.0407,0.203688 -0.57035,0.611076 0.0815,0.977717 -0.8555,1.425838 0.28515,0.285164 -0.61107,-0.122198 0.44812,-1.548063 -1.50732,0.855497 0.28518,0.285177 -1.01847,0.448117 c -0.11114,-0.219264 -0.21797,-0.417476 -0.32591,-0.651825 -0.004,-0.01065 0.004,-0.03001 0,-0.04072 l 0.12222,-0.77402 0.28517,0.08149 0.69255,0.448123 c -0.20055,-0.679502 -0.5592,-1.090604 -1.14067,-1.222151 l 0.2037,-0.692545 c 0.0146,-0.04605 0.0265,-0.07701 0.0407,-0.122212 l 0.12222,-0.04072 0.0407,-0.203695 -0.0815,-0.04072 c 0.0679,-0.225719 0.10797,-0.449748 0.16295,-0.651825 l 0.16296,-0.122198 0.0407,-0.203701 -0.0407,-0.122211 c 0.0591,-0.239831 0.0446,-0.410409 0.0815,-0.611076 0.21655,-0.04125 0.45006,-0.154968 0.69256,-0.366647 -0.0869,0.522227 -0.0361,0.832796 0.24443,0.896253 l -0.3259,0.203681 -0.0407,0.08149 c -0.18052,0.112429 -0.37515,0.243484 -0.52961,0.366646 l -0.0407,0.244429 0.40739,0.122212 -0.3259,1.67027 0.57033,0.122224 0.1222,-0.407389 0.44814,-0.203688 -0.28518,-0.285177 -0.28516,-0.08149 0.0815,-0.203694 1.50731,0.122211 0.20371,-0.692552 -0.52961,-0.122212 0.12222,-0.407382 0.57035,0.122218 0.36663,-1.140676 0.24444,-0.162947 -0.2037,-0.04072 0.48885,-1.548058 0.32592,-0.122225 z m -6.11076,0.04072 0.24442,0.08149 -0.1222,0.366641 -0.20369,-0.04073 0.0815,-0.407382 z m 24.03562,0 0.16303,0.244436 0.20363,0.0815 0.3259,-0.122212 -0.0408,0.162947 c -0.39613,0.0368 -0.72561,0.117893 -0.97771,0.203694 l -0.0408,0 -0.16294,-0.04073 0.28514,-0.448123 0.24446,-0.08149 z m -12.0178,0.08149 0.61113,0.122218 -0.12227,0.40739 -0.48886,-0.529608 z m 3.95167,0.122218 0.32591,0.0815 -0.0408,0.162959 -0.28521,0.08149 0,-0.04072 0,-0.285157 z m 4.80711,0.04072 0.2037,0.04072 0,0.04072 -0.2037,0 c 0,-0.03034 0,-0.05203 0,-0.08149 z m -13.81034,0.0815 0.28518,0.0815 -0.0815,0.61107 -0.36664,0.122211 0.0407,-0.407382 0.12222,-0.407375 z m 29.57609,0.04072 0.20371,0.04072 -0.12227,0.366641 -0.20363,-0.04072 0.12219,-0.36664 z m -7.45516,0.325906 0.40741,0.122225 -0.0815,0.448117 -0.40735,-0.244437 0.0814,-0.325905 z m -26.35773,0.04072 0.4074,0.122225 -0.0815,0.203681 -0.40737,-0.122205 0.0815,-0.203701 z m 1.67029,0 0.20368,0.244429 -0.0406,0.203701 -0.3259,-0.325905 0.16295,-0.122225 z m 18.16932,0.04072 c 0.1619,0.08751 0.27578,0.183866 0.48884,0.285171 -0.0186,0.05762 -0.0408,0.139604 -0.0408,0.203701 l -0.52962,0 c 0.0312,-0.173226 0.0601,-0.336073 0.0815,-0.488872 z m -3.25904,0.203695 0.16295,0 0,0.04072 -0.16295,-0.04072 z m -12.14007,0.2037 -0.0815,0.570328 -0.0407,0.244437 -0.28515,-0.08149 0.0407,-0.611077 0.36665,-0.122211 z m -3.29982,0.08149 0.24442,0.04072 -0.12219,0.488851 -0.28519,-0.04072 0.16296,-0.488858 z m 10.71422,0.04072 0.73325,0.162953 0,0.08149 -0.0814,0.244422 -0.0815,0.122225 0,0.162946 0,0.04072 -0.12227,0.285177 -0.0814,0 -0.20371,-0.285177 c 0.017,-0.323297 -0.0653,-0.599179 -0.16295,-0.814757 z m 20.00257,0 c -0.17824,0.666655 0.0961,1.387527 0.6925,2.118386 l 0.24446,-0.122211 0.16295,0.244422 -0.0408,0.16296 c -0.24632,-0.06587 -0.49568,0.01244 -0.69256,0.162946 -0.0424,-0.01571 -0.0735,-0.02987 -0.1222,-0.04072 l -0.36666,0.122205 c 0.14024,-0.443852 0.0616,-0.72706 -0.3259,-0.814765 l -0.40734,0.122212 -0.0408,0.0815 -0.28522,-0.203694 c 0.21647,-0.513564 0.44527,-0.709846 0.81475,-0.611076 l 0.12227,-0.407382 -0.61112,-0.162946 0.85551,-0.651812 z m 2.40351,0.04072 0.32594,0.488865 -0.12222,0.448124 -0.28514,-0.570335 0.0815,-0.366654 z m -17.96563,0.0815 0.28522,0.0815 -0.12228,0.407381 -0.24438,-0.325905 0.0815,-0.162953 z m -14.25843,0.04072 0.28518,0.04072 -0.0815,0.203688 c -0.11305,0.033 -0.218,0.08731 -0.32591,0.122224 l 0.12221,-0.366653 z m 15.76575,0 0.73332,0 -0.0815,0.203701 -0.69257,0.08151 c 0.0222,-0.106713 0.02,-0.183939 0.0408,-0.28517 z m -3.99235,0.0815 0.0408,0 0,0.122225 -0.0408,0 0,-0.122225 z m 19.67667,0 0.20371,0.04072 -0.20371,0.814765 -0.2037,-0.04073 0.2037,-0.81477 z m -28.43542,0.162947 0.57034,0.122224 -0.24443,0.692553 -0.36665,-0.611077 0.0407,-0.2037 z m 2.15914,0.04072 -0.0815,1.14067 0.61108,0.162966 0.0815,-1.181418 -0.61107,-0.122218 z m 19.55443,0.122218 0.16296,0.04072 -0.1222,0.448124 -0.2037,-0.04072 0,-0.04072 0.0408,0 0.1222,-0.407396 z m -13.44367,0.04072 0.1222,0 0.28521,0.733288 -0.12227,0.162953 -0.16294,0 -0.20364,-0.611083 c 0.008,-0.01131 -0.008,-0.02927 0,-0.04073 l 0,-0.04072 c 0.0259,-0.06547 0.0556,-0.134049 0.0814,-0.203688 z m 6.31442,0 0.40743,0 -0.0815,0.488859 -0.3259,0 0,-0.488859 z m 4.03311,0 0.24446,0.04073 -0.0408,0.162946 -0.24447,-0.0815 0.0408,-0.122205 z m -25.7059,0.08149 0.0815,0.04072 -0.0407,0.203694 -0.0815,-0.04072 0.0407,-0.203688 z m 38.17188,0.08149 -0.0411,0.162952 0.0411,0.04073 0,-0.203688 z m -21.55059,0.04072 0.0814,0 0,0.325906 -0.20363,-0.04072 0.12219,-0.285171 z m -10.91792,0.244442 c 0.27319,-0.04558 0.67943,-0.01344 1.18141,0.04073 l -0.12222,0.407362 c -0.38754,-0.0877 -0.75002,0.182195 -0.93697,0.774035 l -0.57035,-0.896233 c 0.0525,-0.166453 0.17492,-0.280288 0.44813,-0.325913 z m 14.09552,0.04073 0.3259,0 -0.12227,0.20368 -0.20363,0 0,-0.20368 z m 0.774,0 0.0815,0 0,0.20368 -0.0408,0 -0.0408,-0.20368 z m 15.15471,0.04072 0.48886,0.122211 -0.28523,1.018458 -0.36658,-0.488852 0.16295,-0.651817 z m -17.96565,0.04072 0.24439,0.04072 -0.28513,0.08149 0.0408,-0.122206 z m 10.83639,0 0.2037,0.04072 -0.0408,0.122212 -0.24447,0.122218 0,0.08149 -0.0408,0 0.0408,-0.08149 0.0815,-0.285177 z m 9.57354,0.122204 -0.12219,0.0815 -0.0816,0.162946 0.20372,0.244442 0,-0.488864 z m -13.81035,0.0815 0.40742,0.0815 -0.3259,0.44811 -0.32591,-0.08149 -0.0408,-0.162947 0.28514,-0.28517 z m -10.42897,0.04072 0.12219,0.08149 0,0.244436 -0.16295,-0.04073 c 0.0327,-0.102436 0.0171,-0.188583 0.0408,-0.285164 z m 13.85103,0.04073 0.61104,0.529593 0.0408,0.04072 -0.1222,0.61107 c -0.1738,-0.130169 -0.33511,-0.28384 -0.48885,-0.36664 -0.0431,-0.245588 -0.0713,-0.515155 -0.0408,-0.814758 z m -8.55507,0.04072 0.36666,0 0,0.244442 -0.36666,0 0,-0.244442 z m -16.45832,0.0815 0.16296,0.04072 -0.12222,0.407381 -0.28517,-0.0815 0.0815,-0.285171 0.16295,-0.08149 z m 4.19605,0.203694 0.5296,0.122212 0,1.18141 c -0.33907,-0.0767 -0.52094,-0.50904 -0.5296,-1.303622 z m 1.7925,0.162946 -0.24443,0.692553 0.65181,0.162959 0.20369,-0.692559 -0.61107,-0.162953 z m 3.01461,0.244423 c 0.53697,0.121399 0.59101,1.237449 0.16303,3.299808 -0.14907,0.248702 -0.35591,0.702028 -0.57038,1.140676 l -0.57035,-0.122217 -0.52962,-1.344358 c 0.38775,0.0877 0.59316,-0.0857 0.73332,-0.529593 l 0.0815,-1.181422 0.20372,0.244435 0.65179,0.162953 -0.16294,-1.670282 z m 9.6958,0.04072 0.1222,0.122218 -0.24448,0.285164 -0.12219,0.44813 -0.12219,0 -0.28515,-0.08149 -0.0408,-0.448124 0.0815,-0.122218 0.24446,0.244436 0.36667,-0.44813 z m 5.37748,0 c 0,0.306004 -0.15635,0.448157 -0.57038,0.448123 l 0,0.203701 0.40742,0 -0.36667,0.651811 -0.4074,-0.08149 0.0815,-0.0815 0,-0.285164 -0.0408,-0.04072 0.40734,-0.774029 c 0.15954,-0.009 0.31262,-0.04072 0.48893,-0.04072 z m -13.44369,0.04072 0.28514,0.04073 -0.44809,1.262901 -0.0815,0.325906 c 0.19799,0.08141 0.36667,0.166676 0.52961,0.244426 l -0.24446,0.448117 -0.12219,-0.203694 -0.32591,0.162953 -0.24446,-0.04072 c 0.0668,-0.141874 0.13051,-0.272495 0.2037,-0.488859 l -0.2037,0 0.16295,-0.488856 0.0408,0.04072 0.28523,0 0.16295,-1.303635 z m -8.18845,0.08151 0.57035,0.122204 -0.16296,0.407395 -0.40739,-0.529599 z m 13.1585,0.08149 0.0815,0.08149 -0.16295,-0.04072 0.0815,-0.04072 z m 4.35902,0 0.3259,0 c -0.0468,0.254264 -0.0753,0.448642 -0.0815,0.651804 l -0.61106,0 0.0815,-0.570328 0.28515,-0.0815 z m -3.13684,0.08149 0.0815,0.488852 c -0.20422,-0.106761 -0.34884,-0.234988 -0.44817,-0.407376 l 0.36665,-0.0815 z m -1.75178,0.0815 -0.12219,0.488864 -0.16296,0 0,-0.407388 0.28515,-0.08149 z m 18.00639,0.04072 0.20371,0.04072 -0.16296,0.651819 -0.2037,-0.0815 0.16295,-0.611083 z m 0.65181,0 0.48887,0.122212 -0.40736,1.466573 -0.16295,-0.04072 c -0.0834,-0.01883 -0.17104,0.02089 -0.24447,0.04072 l 0,-0.366639 0.32591,-1.222146 z m -21.22467,0.04072 0.12219,0 0,0.04073 -0.12219,-0.04073 z m 3.50349,0.122218 c 0.0814,0.03606 0.1343,0.0796 0.20364,0.122205 l -0.24439,0.04073 0.0408,-0.162946 z m -12.18082,0.0815 0.28518,0.04072 -0.28518,0.896253 -0.28516,-0.04072 0.28516,-0.896234 z m 1.7925,0.162939 -0.12221,0.448124 0.61107,0.122211 -0.48886,-0.570335 z m 19.5952,0 c 0.0453,0.04098 0.15508,0.119444 0.2037,0.162967 l -0.0815,0.529592 -0.89628,2.851666 -0.57036,0.814777 0.36665,1.059194 -0.6518,-0.16296 -0.36666,2.077672 -0.52961,-0.122225 0,-0.977717 0.32598,-0.122218 0.0814,-0.203694 0.16295,-1.466575 0.48886,-0.570335 -0.12219,-0.122212 c 0.0282,-0.05463 0.0408,-0.127194 0.0408,-0.203707 l 0.20372,-0.122198 -0.40742,-0.570341 0.36666,-0.122218 0.24446,0.04072 0.0815,-1.140663 0.36659,-1.140675 0.5296,0.122212 0.16295,-0.611076 z m 1.26285,0.08151 0.12227,0.162939 -0.16303,-0.04072 0.0408,-0.122211 z m 1.83322,0.122204 0.0815,1.629526 0.48885,0.122231 0.20371,-0.203708 -0.24438,0.814771 c -0.11478,-0.189761 -0.15695,-0.281325 -0.28523,-0.488865 l -0.2037,0.08149 c -0.0222,-0.0177 -0.0557,-0.02409 -0.0815,-0.04072 l -0.40741,-0.651805 0.4481,-1.262885 z m 0.52961,0 0.36666,0.08151 0,0.08149 -0.24446,0.366648 -0.2444,-0.0815 0.1222,-0.44811 z m 3.78871,0.162953 0.20365,0.04072 -0.1222,0.448123 -0.20371,-0.08149 0.12226,-0.407395 z m 1.79243,0.244422 0.20373,0.0815 0,1.059198 0,0.04072 c -0.0503,0.0364 -0.11678,0.06421 -0.16292,0.122218 l -0.36665,-0.0815 0.32584,-1.222143 z m -32.10183,0.04072 0.24444,0.0815 -0.97773,3.096101 -0.24444,-0.04072 0.97773,-3.136856 z m 29.57609,0.162966 0.0815,0.04072 -0.16294,0.611061 -0.20372,-0.04072 0.12219,-0.448123 0.16296,-0.162944 z m -14.01405,0.162938 0.2037,0 0,0.488858 -0.2037,0 0,-0.488858 z m 11.69198,0.0815 0.2037,0.08149 0.0408,0.244429 -0.28521,-0.203694 0.0408,-0.122204 z m -24.28011,0.08149 -0.16295,0.448124 0.61107,0.162953 0.16295,-0.488866 -0.61107,-0.122211 z m 27.13179,0.04072 0.2037,0.04073 0.0408,0.692552 -0.40742,-0.122218 0.16295,-0.611069 z m -29.0465,0.04073 0.28517,0.04072 -0.2037,0.651811 -0.24442,-0.0815 0.16295,-0.611064 z m 31.57228,0.203693 0.4073,0.122219 -0.0814,1.059199 -0.0816,0.3259 -0.24446,-0.08149 0.0816,-1.140676 c -0.0555,-0.01251 -0.11206,-0.0053 -0.16299,0 l 0.0816,-0.285171 z m -19.55447,0.244424 0.0408,0 0,0.44813 -0.20363,0 0.16288,-0.44813 z m -5.54042,0.04072 0.69256,0.162959 -0.57029,1.181411 -0.32598,0.448111 -0.0815,0 0.20371,-0.61107 0,-1.0592 c 0.0349,-0.02835 0.0475,-0.07379 0.0815,-0.122211 z m 5.94784,0.203694 0.40734,0 0,0.488858 0.24446,0 0.0408,-0.04072 -0.0408,0.285158 -0.32591,0.08149 -0.0408,-0.122205 0.0408,-0.203695 -0.36666,-0.08149 -0.16295,0.04073 c 0.14084,-0.121573 0.20372,-0.256899 0.20372,-0.44813 z m 13.89178,0 0.24446,0.04072 0.1222,0.733288 -0.0815,0.244429 -0.40734,-0.61107 0.12219,-0.407395 z m -11.81417,0.203694 0.0815,0 -0.20362,0.896241 -0.0815,0.04072 -0.20371,-0.2037 c -0.10349,0 -0.16451,0.009 -0.24447,0.04072 l 0.20372,-0.651811 0.44809,-0.122219 z m 0.77407,0 0.48886,0 0.16296,0.04073 -0.24447,0.774028 -0.52954,0.3259 -0.24447,0 0.0815,-0.203682 0.16295,0 0,-0.203694 0.28515,-0.0815 -0.28515,-0.285158 0.12219,-0.366653 z m 2.85169,0 0.65181,0 -0.0815,0.203695 -0.61105,-0.122218 0.0408,-0.08149 z m -22.52835,0.16296 0.65182,0.162939 -0.48887,0.611083 -0.36665,-0.0815 0.2037,-0.692546 z m 14.95099,0.122204 0.20372,0 0.36666,0.08149 -0.40742,0.203695 -0.0408,0.203694 0.0408,0.122212 -0.16296,0.04072 -0.2037,0 0.2037,-0.651811 z m 20.00255,0.04073 0.20373,0.04072 -0.0411,0.203694 -0.20373,-0.04072 0.0411,-0.203701 z m -18.82113,0.162959 0.24447,0.04072 -0.0408,0.203694 -0.28521,0.04073 0.0815,-0.285171 z m 6.19223,0 0.28515,0.04072 -0.0408,0.0815 -0.24439,-0.0815 0,-0.04072 z m 6.15155,0.203688 0.65181,0.122217 0.28514,0.855506 c 0.0275,0.313995 0.0364,0.616174 -0.0408,0.936975 l -0.20372,-0.08149 0.16296,-0.448124 -0.5703,-0.122198 -0.0408,0.203674 0.3259,0.814771 -0.3259,0.122218 c -0.10519,0.332919 -0.023,0.607197 0.28515,0.774023 -0.0408,0.109901 -0.0735,0.219996 -0.12219,0.325905 l -0.24447,0.08149 0.12219,-0.407382 -0.57029,-0.122211 -0.24446,1.751759 c -0.17075,0.174311 -0.36792,0.371191 -0.5703,0.529586 l 0.20364,-0.285164 c 0.0901,-0.613744 -0.1265,-0.990339 -0.61106,-1.099941 l 0.1222,-0.407388 0.61112,0.122218 0.1222,-0.285171 -0.3259,-0.285164 0.4481,-0.122211 0,-1.181412 0.52961,-1.792487 z m -27.37624,0.04072 0.81476,0.407376 -0.3259,1.099942 -0.28518,-0.0815 -0.32591,-1.018452 0.12223,-0.407388 z m 2.48504,0.04073 0.57033,0.122218 -0.0815,0.203694 -0.52961,-0.122225 0.0407,-0.203687 z m 32.02039,0.122218 0.28511,0.04072 -0.20358,0.692552 -0.28526,-0.04072 0.20373,-0.692545 z m -23.30237,0.04072 0.20372,0 0,0.203688 -0.24447,-0.04073 0.0408,-0.162959 z m 10.14383,0 0,0.0815 -0.0408,0 0.0408,-0.0815 z m 11.81416,0.285164 -0.36666,1.344364 -0.0408,0 0.4074,-1.344364 z m -11.48825,0.08149 0.24446,0.0815 -0.0815,0.203694 -0.28515,0.122219 0.1222,-0.40739 z m 10.30684,0 0.0408,0 c 0.0275,0.19875 0.008,0.418061 -0.0408,0.651805 l -0.16295,-0.04072 0.16295,-0.611069 z m 1.58883,0 0.12219,0.04072 0,0.203701 -0.16295,-0.04072 0.0408,-0.203681 z m -16.33612,0.122211 0.16295,0 -0.4481,0.448124 -0.20371,0 0.48886,-0.448124 z m 3.13683,0 0.28522,0 -0.0815,0.448124 -0.32599,0 0.12228,-0.448124 z m -22.44685,0.203701 0.0815,0.122205 -0.0407,0.0815 c -0.0109,-0.06871 -0.0407,-0.136111 -0.0407,-0.203688 z m 20.16553,0 0.52961,0 0.0814,0.0815 -0.0814,0.325898 -0.61113,-0.122204 0.0815,-0.285164 z m -18.90265,0.0815 0.2037,0.04072 0,0.244435 c -0.0664,-0.0966 -0.13833,-0.183998 -0.2037,-0.28517 z m 10.71425,0.203694 -0.0815,0.285164 -0.0408,0.08149 -0.0408,0.122205 -0.16296,-0.203688 0.32591,-0.285164 z m 19.71735,0 0.2037,0.04073 -0.0815,0.162946 c -0.0282,-0.05376 -0.0917,-0.146671 -0.1222,-0.203681 z m -4.15531,0.04073 0.61105,0.122212 -0.0815,0.244428 -0.61105,-0.162952 0.0815,-0.203688 z m 7.94401,0 0.16296,0.04072 -0.28523,0.977704 -0.12219,-0.04072 0.24446,-0.97771 z m -29.4539,0.08149 1.22215,0.0815 -0.20369,0.611084 -1.26288,0 0.24442,-0.692553 z m 10.91791,0.04072 0.65179,0 0,0.203701 -0.12219,0 -0.61112,-0.162953 c 0.0297,-0.01371 0.0504,-0.02708 0.0815,-0.04073 z m 14.29919,0.0815 0.28515,0.407375 -0.28515,0.448124 -0.24447,-0.04073 0.24447,-0.81477 z m 1.14065,0.325899 0.1222,0.611089 -0.28514,-0.0815 0.16294,-0.5296 z m 4.15534,0.04072 0.12226,0 c -0.0647,0.20396 -0.0571,0.392085 0,0.5296 l -0.0411,0 -0.12234,0.407388 0.0411,0.896234 -0.4073,0.488872 -0.20373,-0.04073 0.32592,-1.181416 -0.44809,-0.122226 0.24436,-0.81475 0.40746,0.122211 0.0814,-0.285171 z m -17.23235,0.04072 0.36666,0 0,0.285171 -0.24446,0.08149 -0.1222,-0.04072 0,-0.325899 z m 0.77399,0 0.40742,0 -0.16295,0.570328 -0.24447,-0.04072 -0.0814,-0.0815 0.0814,0 0,-0.448124 z m 2.03694,0 0.40741,0 -0.12226,0.692546 c -0.14596,0.152666 -0.3487,0.249653 -0.5703,0.325906 l -0.61105,-0.448064 c 0.0966,0.02901 0.20245,0.06441 0.32591,0.0815 0.41394,0 0.57029,-0.192809 0.57029,-0.651818 z m -22.44686,0.04072 c 0.0101,0.01796 0.0709,0.02242 0.0815,0.04072 l -0.0815,0 0,-0.04072 z m 2.77022,0.04072 0.81478,0.20368 -0.0815,0.203702 -0.81476,0.0815 c -0.02,-0.02169 -0.0207,-0.05935 -0.0407,-0.0815 l 0.12222,-0.407382 z m 21.42842,0 0.28515,0.162946 -0.0815,0.2037 -0.28514,-0.04072 0.0815,-0.3259 z m -2.32207,0.08149 0.28514,0.0815 -0.28514,0 0,-0.0815 z m -14.29923,0.366653 0.48887,0.529581 -0.20368,0.651817 -0.0407,0 -0.24444,-0.325906 -0.5296,-0.122211 c -0.0477,0.150996 -0.13914,0.279388 -0.24441,0.366641 l -0.85552,-0.24443 c -0.0468,-0.231807 -0.22213,-0.400867 -0.61107,-0.488851 l 0.0407,-0.203701 0.57033,0.122217 0.20368,0.244424 c 0.10526,-0.332893 0.56893,-0.446035 1.42585,-0.529581 z m 3.17761,0.325893 0.36666,0.448116 -0.65187,-0.122204 0.28521,-0.325912 z m 21.67285,0 0.1222,0.203688 c -0.02,0.075 -0.0868,0.163631 -0.1222,0.244428 l -0.12226,-0.04072 0.12226,-0.407389 z m -1.34437,0.122217 0.20364,0.366641 -0.0408,0.203701 -0.24439,-0.366647 c 0.0222,-0.0703 0.0608,-0.131939 0.0814,-0.203695 z m -25.90965,0.407382 0.24443,0.04073 -0.12221,0.407382 -0.24444,-0.04072 0.12222,-0.407389 z m -1.50733,0.08149 0.2037,0.04072 -0.0407,0.122211 c -0.0614,-0.04225 -0.10219,-0.117667 -0.16297,-0.162946 z m -3.91088,0.08149 c 0.19838,0.04491 0.3656,0.106914 0.52961,0.122211 l 0.48885,0.611083 0,-0.488865 -0.12221,-0.122218 c 0.17362,-0.01084 0.33161,-0.06567 0.44811,-0.122211 0.15589,0.200134 0.3052,0.427057 0.48886,0.651817 l -0.32589,0.448124 -0.12223,-0.122218 -0.0815,-0.162959 -0.28517,-0.04072 -0.65181,0.285164 0.0407,0.611069 c -0.16971,-0.150596 -0.32843,-0.324588 -0.48887,-0.488851 l 0.0815,-0.203695 -0.36665,-0.08149 c -0.1552,-0.172175 -0.30256,-0.344796 -0.44811,-0.529593 l 0.65181,0.122204 0.16295,-0.488858 z m 11.73271,0.244429 0.4481,0 0,0.488865 -0.4481,0 0,-0.488865 z m 11.69189,0 0.16295,0 0,0.122218 -0.16295,-0.122218 z m -4.44052,0.04072 0.16296,0.28517 -0.0408,0.16296 -0.97772,0 -0.28515,0 0,-0.04072 c 0.0969,0.02189 0.19547,0.06122 0.28515,0.04072 0.17944,-0.04112 0.35961,-0.196395 0.48886,-0.407388 l 0.36667,-0.04072 z m -0.73324,0.04073 0,0.04072 -0.52961,0 0.52961,-0.04072 z m 2.19981,0.04072 c 0.0999,0.0769 0.15701,0.226763 0.16302,0.366647 l -0.69256,0 0.16295,-0.285184 0.36659,-0.0815 z m 17.11016,0.04072 0.16293,0.04072 -0.0411,0.162946 -0.16299,-0.08149 0.0411,-0.122224 z m -21.1432,0.04072 0.1222,0 c 0.12613,0.06321 0.21975,0.154696 0.2444,0.285171 l -0.3666,0 0,-0.285171 z m 11.6919,0.448124 0.52961,0.122205 -0.0815,0.244429 -0.52961,-0.122204 0.0815,-0.24443 z m -13.03626,0.08149 0.16295,0.122225 -0.0815,0.203681 -0.0815,-0.04072 0,-0.285171 z m -4.11462,0.0815 0.24447,0.04072 0.12219,0.08149 0.16295,0 -0.0815,0.244429 -0.36665,0.203694 -0.12219,0.04072 0,-0.08149 0.12219,0.04072 0.0408,-0.203695 -0.1222,-0.285164 0,-0.08149 z m 25.4208,0.04072 0.12217,0.448111 -0.12217,0.28517 0,-0.733281 z m -16.17317,0.16294 -0.0408,0.203701 -0.0408,0.488852 -0.93696,-0.122212 -0.0815,-0.08149 0.774,-0.36664 -0.36666,-0.0815 0.69256,-0.04072 z m -3.50349,0.04072 -0.0408,0.122218 -0.28522,-0.0815 0.32597,-0.04072 z m 4.76634,0 0.44817,0.0815 0,0.04072 0,0.203687 c -0.19048,-1.3e-5 -0.29895,0.04791 -0.40741,0.122225 l -0.0408,-0.44813 z m -2.56646,0.04072 -0.12227,0.448123 -0.61106,-0.0815 -0.24438,-0.244429 -0.0815,0.203694 -0.28523,-0.04073 0.0815,-0.244429 0.0815,0 0.20371,0.0815 -0.0408,-0.0815 0.28514,0 0.73333,-0.04072 z m 3.78864,0 0.12219,0.04072 -0.12219,0 0,-0.04072 z m -15.27689,0.04072 0.16295,0.244436 0.28517,0 0.16295,-0.122218 0.28517,0.285158 -0.32592,0.366647 c -0.76182,0.0181 -1.19934,0.124767 -1.26288,0.325913 l -0.0815,0.20368 0.28517,0.0815 0.5296,0 -0.24443,0.285164 c -0.30674,2e-5 -0.72457,-0.157484 -1.18142,-0.366647 l 0.12222,-0.325899 -0.36666,-0.08149 -0.3259,0.162953 c -0.32533,-0.183913 -0.6735,-0.425241 -1.05919,-0.692554 0.52996,0.11989 0.94083,0.02089 1.22216,-0.285157 0.452,0.09709 0.89641,0.162953 1.38509,0.162953 l 0.0815,0 0.16295,0.04073 0.0407,-0.162953 0.12223,-0.122211 z m 1.9147,0.08149 c 0.012,0.278178 0.17506,0.471679 0.61109,0.570342 l -0.0407,0.122211 -0.16297,0.0815 c -0.40159,-0.0334 -0.77866,-0.0703 -1.09992,-0.0815 0.18752,-0.174184 0.46538,-0.465516 0.69255,-0.692553 z m 25.17636,0 0.12219,0.04072 -0.24446,1.018459 -0.1222,-0.04073 0.24447,-1.018452 z m -10.95867,0.0815 0.24447,0.0815 -0.0815,0.285164 -0.16296,0 0,-0.366641 z m -20.81731,0.122225 c 0.29648,0.344616 0.63234,0.712248 0.97771,1.099942 l -0.73329,-0.162973 c -0.29396,-0.250777 -0.58272,-0.525235 -0.8555,-0.814751 l 0.61108,-0.122218 z m -1.0592,0.244429 0.44812,0.733287 -0.32592,0 c -0.23131,-0.135312 -0.47377,-0.249924 -0.69254,-0.407388 0.0469,-0.06751 0.0914,-0.146844 0.12221,-0.244422 l 0.44813,-0.0815 z m 23.22088,0.162946 0.57038,0.122225 0,1.181404 -0.44818,0.122218 -0.5296,-0.122218 0.4074,-1.303629 z m 11.28456,0.122225 -0.20371,0.407369 0.0815,-0.325893 0.1222,-0.0815 z m -16.29536,0.122211 0.24439,0 0,0.08149 -0.24439,-0.04072 0,-0.04072 z m -19.67666,0.122205 c 0.0287,0.007 0.0541,-0.0053 0.0815,0 l 0.0815,0.08151 -0.36665,0 0.20369,-0.08151 z m 29.16867,0.04072 -0.0408,0.366641 -0.28514,-0.0815 c 0.11952,-0.08739 0.21484,-0.191778 0.32589,-0.285164 z m 3.82947,0 0,0.0815 -0.0408,0 0.0408,-0.0815 z m -0.97778,0.04072 0.20371,0.0815 c -0.072,0.06481 -0.16963,0.10082 -0.24439,0.16296 -0.19199,0.159413 -0.36808,0.338528 -0.57037,0.488865 -0.0776,-0.0803 -0.13978,-0.201685 -0.20371,-0.325912 0.1573,-0.0786 0.28433,-0.161449 0.44818,-0.244429 l 0.3259,0.0815 0.0408,-0.203681 c 0.008,-0.0027 -0.008,-0.03766 0,-0.04072 z m -23.54678,0.203688 -1.09993,0.529606 -0.16295,0 0,-0.203694 c 0.1087,2e-5 0.29662,-0.111033 0.52959,-0.285164 l 0.73329,-0.04072 z m -4.92934,0.122231 c 0.12971,0.14532 0.23015,0.256073 0.36664,0.407375 l 0,0.203688 c -0.0655,-0.04252 -0.13897,-0.0782 -0.2037,-0.122211 l 0.0407,-0.0815 -0.16295,-0.04072 c -0.0796,-0.05589 -0.16597,-0.104665 -0.24444,-0.162952 l 0.16296,-0.04072 0.0407,-0.162952 z m 10.02162,0.08149 0.36666,0.244423 -0.0815,0.0815 -0.20364,0 c 0,-0.12072 -0.0372,-0.228227 -0.0815,-0.325905 z m -2.03685,0.325906 0.6518,0 0,0.203695 -0.6518,0 0,-0.203695 z m 6.64033,0 0.40734,0 0,0.0815 -0.24439,0.122212 -0.16295,0 0,-0.203682 z m -3.09615,0.122204 0.40741,0.0815 -0.40741,0 0,-0.0815 z m 5.82564,0 0.24439,0.04072 0.24446,0.285158 0.0815,0 0,0.407388 c -0.36162,0.03127 -0.75804,0.06109 -1.14074,0.0815 l 0.32591,-0.488864 c 0.0789,-0.004 0.15575,0 0.24447,0 l 0,-0.325893 z m -6.47745,0.325906 0.65181,0 0,0.488865 -1.01847,0 0.36666,-0.488865 z m 8.1884,0.04072 0.28522,0.08149 -0.0408,0.122218 c -0.10625,0.01458 -0.21752,0.02715 -0.32591,0.04072 l 0.0814,-0.24443 z m 9.41058,0.04072 c -0.02,0.287606 -0.0416,0.561591 0.0408,0.774028 l -0.16295,0.08149 -0.1222,0.407389 -0.32589,-0.448124 0.57035,-0.814764 z m -12.05856,0.04072 c 0.0104,-0.004 0.0304,0.004 0.0408,0 l 0.0408,0.04072 -0.0815,0.244429 -0.24439,-0.04073 c 0.0431,-0.0934 0.10378,-0.184192 0.24439,-0.244429 z m -8.6365,0.162959 0.65181,0 0,0.203681 -0.65181,0.203688 0,-0.407369 z m 1.01847,0 0.48885,0 0,0.203681 -0.48885,0 0,-0.203681 z m 3.58493,0 0.36665,0 -0.36665,0.407369 -0.48886,0 0.48886,-0.407369 z m -15.15466,0.203681 0.0406,0 0,0.203688 -0.44813,0 0,-0.04072 0.40738,-0.162953 z m 3.34052,0 0.61111,0 0,0.203688 -0.61111,0 0,-0.203688 z m 4.9701,0 0.61108,0 0,0.203688 -0.61108,0 0,-0.203688 z m 3.91091,0 0.6518,0 0,0.203688 -0.6518,0 0,-0.203688 z m 18.04708,0.04072 0.0815,0 0,0.04072 -0.0815,-0.04072 z m -2.72949,0.08151 0.0408,0 -0.16295,0.488845 -0.52954,-0.122204 0.0408,-0.08149 c 0.17551,-0.0707 0.41492,-0.200821 0.61106,-0.285165 z m 5.29603,0 c 0.072,0.0901 0.1611,0.148414 0.24439,0.244429 l 0,0.04072 -0.40734,-0.08149 c -0.0282,-0.02362 -0.0549,-0.05789 -0.0815,-0.0815 l 0.24446,-0.122204 z m -32.63148,0.285164 0.65181,0 0,0.244423 -0.65181,0 0,-0.244423 z m 2.93317,0 0.36666,0 -0.36666,0.529594 0,-0.529594 z m -3.54424,0.244423 0.44812,0 0,0.285171 -0.44812,0 0,-0.285171 z m 9.3291,0 0.61109,0 1.01847,0.285171 1.2221,-0.285171 1.30369,0 0,0.488864 -5.17381,0 0,-0.203693 1.01846,-0.285171 z m 4.52193,0 4.60347,0 -0.4481,0.488864 -0.2037,-0.203693 -1.01847,0.203693 -2.48503,0 -0.44817,-0.488864 z m 5.45899,0 0.57029,0 0,0.285171 -0.57029,0 0,-0.285171 z m 15.31765,0 c -0.0207,0.06659 -0.0289,0.136098 -0.0408,0.203707 l -0.0408,0 0.0408,-0.162966 0.0408,-0.04072 z m -30.51309,0.285171 1.01846,0 0,0.203693 -1.01846,0 0,-0.203693 z"
+       id="path2878-8-3-0-24" />
+    <path
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       style="font-size:52.63950729px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#7a5c5c;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:FFF Tusj;-inkscape-font-specification:FFF Tusj Bold"
+       d="m -549.13023,61.885803 c 0,0.0369 -0.0187,0.0828 -0.0562,0.13798 -0.0374,0.0552 -0.0187,0.10122 0.0562,0.13797 -0.0749,2e-5 -0.12431,-0.046 -0.1493,-0.13797 -0.0254,-0.0919 0.0254,-0.13794 0.1493,-0.13798 l 0,0 z m -14.9292,1.26934 0,0.11033 c 0,0.092 0.0374,0.14719 0.11229,0.16556 -0.24888,-0.0736 -0.2863,-0.16552 -0.11229,-0.27594 l 0,0 z m -0.18657,0.77264 c 0.12429,0.092 0.17415,0.23917 0.14929,0.44152 -0.0254,0.20237 -0.0374,0.40473 -0.0374,0.60706 -0.0749,-0.14715 -0.11227,-0.30811 -0.11227,-0.4829 0,-0.17474 0,-0.3633 0,-0.56568 l 0,0 z m 15.48908,13.052077 c -0.0494,0.092 -0.10559,0.16558 -0.16801,0.22076 -0.0628,0.0552 -0.0935,0.12879 -0.0935,0.22075 -0.12431,1e-5 -0.17403,-0.0229 -0.14929,-0.069 0.0254,-0.0459 0.0374,-0.11501 0.0374,-0.20695 -0.0749,0.0369 -0.13099,0.14718 -0.16788,0.33112 -0.0374,0.18398 0,0.29436 0.13099,0.33113 0.12431,-0.0368 0.1493,-0.10579 0.0749,-0.20696 -0.0749,-0.10111 -0.0494,-0.12416 0.0749,-0.0689 0,0.092 -0.0374,0.20235 -0.11227,0.33112 -0.0749,0.12879 -0.13687,0.25296 -0.1866,0.37253 -0.0495,0.11958 -0.0749,0.22536 -0.0749,0.31733 0,0.092 0.0628,0.16557 0.18661,0.22075 0.12429,0.0552 0.168,0.0644 0.13097,0.0276 -0.0374,-0.0368 -0.0801,0.0184 -0.13097,0.16555 -0.12431,0.14719 -0.17404,0.30815 -0.14931,0.48292 0.0254,0.17477 0.0628,0.33573 0.11228,0.48287 0.1243,-0.0919 0.1803,-0.20693 0.168,-0.3449 -0.0134,-0.13796 -0.0186,-0.30815 -0.0186,-0.5105 0.0749,0.0735 0.10559,0.16098 0.0935,0.26215 -0.0134,0.10123 -0.0254,0.20235 -0.0374,0.30353 -0.0134,0.10123 -0.0134,0.18858 0,0.26215 0.0134,0.0736 0.0682,0.12879 0.16801,0.16556 0.0749,0.092 0.0682,0.16097 -0.0187,0.20696 -0.0868,0.046 -0.16801,0.0966 -0.24261,0.15177 -0.0494,1e-5 -0.0682,-0.0185 -0.0561,-0.0552 0.0134,-0.0367 0,-0.0552 -0.0561,-0.0552 -0.0749,1e-5 -0.0935,0.0369 -0.0561,0.11044 0.0374,0.0736 0.0561,0.13799 0.0561,0.19317 0,0.0369 0.0495,0.0369 0.1493,0 0.0989,-0.0367 0.17428,1e-5 0.22402,0.11033 -0.0254,0.092 -0.0495,0.14719 -0.0749,0.16556 -0.0254,0.0185 -0.0134,0.0643 0.0374,0.13797 -0.0749,0.0369 -0.19915,0.0552 -0.3733,0.0552 -0.0749,0.0919 -0.0868,0.17938 -0.0374,0.26214 0.0495,0.0828 0.0989,0.12418 0.14916,0.12418 0.19917,0.0185 0.19917,-0.046 0,-0.19317 0.12432,0.31274 0.15559,0.68988 0.0935,1.13136 -0.0628,0.44154 -0.0682,0.90145 -0.0186,1.37971 -0.1243,-0.0367 -0.16173,-0.1011 -0.11227,-0.19314 0.0494,-0.092 0.0374,-0.18397 -0.0374,-0.27594 -0.12431,0.0367 -0.17416,0.14717 -0.14931,0.33112 0.0254,0.18398 0.0628,0.29435 0.11228,0.33113 0.0749,0 0.0989,-0.0185 0.0749,-0.0552 -0.0254,-0.0367 -0.0374,-0.0828 -0.0374,-0.13798 0.0494,0.14719 0.1493,0.22538 0.29861,0.23457 0.14916,0.009 0.21157,0.10578 0.18671,0.28973 -1.3e-4,0.0552 -0.1243,0.0736 -0.37332,0.0552 0,0.25753 0.0134,0.50589 0.0374,0.74505 0.0254,0.23915 0.0374,0.5059 0.0374,0.80021 -0.12429,0.0552 -0.16788,0.0414 -0.13097,-0.0413 0.0374,-0.0828 0,-0.0966 -0.13099,-0.0413 -0.0495,1e-5 -0.0615,0.0551 -0.0374,0.16556 0.0254,0.11034 0.0254,0.21156 0,0.30354 0.0749,1e-5 0.16801,1e-5 0.28001,0 0.11228,1e-5 0.19287,0.046 0.24259,0.13796 -1.4e-4,0.18396 -0.1243,0.26676 -0.37331,0.24835 l 0,0.30354 c 0.29859,0.34954 0.71535,0.63467 1.25039,0.85544 0.53504,0.22073 1.05124,0.4323 1.54886,0.63466 0.0494,0 0.0442,-0.0185 -0.0187,-0.0552 -0.0628,-0.0367 -0.0561,-0.0828 0.0187,-0.13798 0.24888,0.12879 0.50389,0.27136 0.76519,0.42771 0.26132,0.15637 0.52878,0.29434 0.80251,0.41394 0.27361,0.11956 0.55977,0.21153 0.85824,0.27591 0.29859,0.0643 0.60961,0.0782 0.93321,0.0413 0.0494,0.0921 0.16788,0.14716 0.3546,0.16557 0.18659,0.0184 0.41675,0.0276 0.69049,0.0276 0.0254,-0.0369 0.0374,-0.10125 0.0374,-0.19317 0,-0.092 0.0134,-0.17936 0.0374,-0.26213 0.0254,-0.0828 0.0682,-0.15177 0.131,-0.20696 0.0614,-0.0552 0.18029,-0.0828 0.35445,-0.0828 0,0.092 0.0186,0.18856 0.0561,0.28975 0.0374,0.10124 0.0441,0.22534 0.0186,0.37251 0.24888,-0.0736 0.51018,-0.0736 0.78392,0 -0.0494,0.0921 -0.12431,0.17478 -0.22402,0.24837 -0.0989,0.0736 -0.28616,0.092 -0.5599,0.0552 0,0.23916 0,0.49211 0,0.75884 0,0.26675 0.0374,0.52889 0.11228,0.78645 0.32345,0.0367 0.60949,0.0644 0.8585,0.0828 0.24873,0.0185 0.5722,0.0276 0.97036,0.0276 -0.0254,0.0552 -0.0186,0.12877 0.0187,0.22075 0.0374,0.0921 0.0561,0.18397 0.0561,0.27594 -0.27359,0.0367 -0.56604,0.046 -0.87694,0.0275 -0.31116,-0.0185 -0.66576,-0.009 -1.06379,0.0276 -0.0749,0.0552 -0.12431,0.12418 -0.1493,0.20697 -0.0254,0.0828 -0.0628,0.14257 -0.11228,0.17935 -0.1243,0 -0.23016,-0.0507 -0.3173,-0.15176 -0.0869,-0.10125 -0.15545,-0.15176 -0.20518,-0.15176 -1.11967,-0.0736 -2.3202,-0.0551 -3.60159,0.0552 -1.28155,0.11033 -2.51939,0.20236 -3.71377,0.27594 -0.1493,0.38632 -0.2176,0.80023 -0.2053,1.24174 0.0134,0.44152 -0.0935,0.9014 -0.31717,1.37971 -0.12431,-0.38632 -0.17416,-0.80025 -0.14931,-1.24175 0.0254,-0.4415 -0.0254,-0.83701 -0.14929,-1.18654 -0.1493,-0.11045 -0.34217,-0.17478 -0.57848,-0.19316 -0.23631,-0.0185 -0.48519,-0.0138 -0.7465,0.0138 -0.26116,0.0276 -0.52862,0.0688 -0.80236,0.12418 -0.27373,0.0552 -0.52261,0.0921 -0.74662,0.11035 -0.17402,-0.12879 -0.24875,-0.22996 -0.22389,-0.30356 -1.26897,-0.0367 -2.49436,-0.0275 -3.67618,0.0276 -1.1821,0.0552 -2.2332,0.10125 -3.15385,0.13799 -0.12431,0.0367 -0.18659,0.046 -0.18659,0.0276 0,-0.0185 -0.0254,-0.0276 -0.0749,-0.0276 -0.10024,0.0551 -0.24273,0.0919 -0.4293,0.11034 -0.1866,0.0185 -0.37948,0.0276 -0.57849,0.0276 -0.19915,0 -0.39818,-0.005 -0.59733,-0.0138 -0.19903,-0.009 -0.36062,-0.005 -0.48505,0.0138 0,0.20237 0.0186,0.40011 0.0561,0.59329 0.0374,0.19317 -0.0815,0.31733 -0.35459,0.3725 0,0.14717 0.0254,0.29895 0.0749,0.45532 0.0495,0.15637 -0.0254,0.26214 -0.22402,0.31733 -0.1243,-0.14717 -0.2116,-0.38171 -0.2613,-0.70364 -0.0495,-0.32195 -0.0749,-0.60249 -0.0749,-0.84163 0,-0.092 -0.0989,-0.13796 -0.29847,-0.13796 -0.19915,0 -0.36075,0 -0.48519,0 -0.39818,0 -0.81493,0.0229 -1.2504,0.0689 -0.43532,0.046 -0.87707,0.0783 -1.32483,0.0966 -0.44803,0.0185 -0.87708,0.009 -1.28781,-0.0276 -0.41048,-0.0367 -0.77737,-0.13797 -1.10096,-0.30354 -0.34833,0.0367 -0.71522,0.0598 -1.10096,0.0689 -0.38562,0.009 -0.67821,0.0599 -0.87722,0.15178 -0.1243,-0.092 -0.30474,-0.11959 -0.54106,-0.0828 -0.23644,0.0367 -0.3546,0.10124 -0.3546,0.19317 -0.27374,-0.0736 -0.51633,-0.0873 -0.72777,-0.0413 -0.21159,0.046 -0.45418,0.0506 -0.72779,0.0138 l 0,-0.11034 c 0.1243,-0.14716 0.30475,-0.21616 0.54119,-0.20695 0.23631,0.009 0.49134,-0.005 0.76507,-0.0413 0,-0.0919 0,-0.20694 0,-0.34491 0,-0.13797 -0.0254,-0.25294 -0.0749,-0.34493 0,-0.0367 -0.0494,-0.0414 -0.14942,-0.0138 -0.0989,0.0276 -0.18659,-0.005 -0.26132,-0.0966 0,-0.18396 0.22402,-0.27595 0.67192,-0.27595 0.0495,-0.0367 0.11762,-0.0873 0.20517,-0.15176 0.0868,-0.0644 0.20543,-0.14258 0.3546,-0.23457 -0.0494,-0.092 -0.11228,-0.15176 -0.1866,-0.17935 -0.0749,-0.0276 -0.14916,-0.0413 -0.22387,-0.0413 -0.0749,0 -0.13687,0.005 -0.18659,0.0138 -0.0494,0.009 -0.0749,-0.0138 -0.0749,-0.0689 0,-0.14716 0.0815,-0.22074 0.24247,-0.22074 0.16172,0 0.30474,-0.0276 0.42917,-0.0828 0,-0.14717 -0.0186,-0.28055 -0.0561,-0.40012 -0.0374,-0.11958 -0.0561,-0.30813 -0.0561,-0.56569 -0.0495,-0.0367 -0.14302,-0.0552 -0.28003,-0.0552 -0.13673,10e-6 -0.16788,-0.0736 -0.0935,-0.22077 0.19903,-0.0552 0.37319,-0.12876 0.52248,-0.22073 0.14918,-0.0921 0.28616,-0.18397 0.4106,-0.27595 0.0749,0.0736 0.0989,0.14717 0.0749,0.22075 -0.0254,0.0736 -0.0134,0.13798 0.0374,0.19317 0.52234,-0.0369 1.0761,-0.0644 1.66073,-0.0828 0.58476,-0.0185 1.16324,-0.0506 1.73558,-0.0966 0.5722,-0.046 1.11967,-0.12417 1.64228,-0.23453 0.52247,-0.11034 0.9828,-0.28515 1.38099,-0.52431 0.0254,-0.0919 -0.0134,-0.14256 -0.1123,-0.15176 -0.10024,-0.009 -0.13698,-0.0873 -0.11226,-0.23455 0.0749,-0.0552 0.17429,-0.0873 0.29872,-0.0966 0.12431,-0.009 0.24876,-0.0138 0.37319,-0.0138 0.19902,-0.18396 0.29232,-0.41391 0.28002,-0.68984 -0.0134,-0.27595 -0.0561,-0.56109 -0.13098,-0.85544 -0.0494,-0.33113 -0.0815,-0.66225 -0.0935,-0.99339 -0.0134,-0.33114 -0.0802,-0.64384 -0.20516,-0.93819 -0.1243,0.29435 -0.20529,0.56569 -0.2426,0.81401 -0.0374,0.24837 -0.0561,0.4921 -0.0561,0.73126 0,0.23915 0,0.4829 0.0187,0.73124 0.0134,0.24836 0.0186,0.51969 0.0186,0.81403 -0.14943,-0.31272 -0.21785,-0.64386 -0.20529,-0.99339 0.0134,-0.34952 0.0561,-0.70825 0.13098,-1.07617 0.0749,-0.36791 0.15544,-0.72663 0.24259,-1.07617 0.0869,-0.34953 0.13099,-0.68066 0.13099,-0.99341 -0.0749,-0.0552 -0.16172,-0.0966 -0.26117,-0.12417 -0.10025,-0.0276 -0.14943,-0.0873 -0.1493,-0.17935 0.0749,-0.0367 0.14302,-0.0644 0.20516,-0.0828 0.0628,-0.0185 0.14303,-0.0552 0.24273,-0.11035 0,-0.20236 -0.0374,-0.40931 -0.11227,-0.62088 -0.0749,-0.21155 -0.0749,-0.4185 0,-0.62087 0,-0.0552 0.0254,-0.12416 0.0749,-0.20695 0.0495,-0.0828 0.0749,-0.14256 0.0749,-0.17937 -0.0749,-0.092 -0.13701,-0.19315 -0.18659,-0.30353 -0.0494,-0.11034 -0.0628,-0.23915 -0.0374,-0.38632 -0.0749,-0.73583 -0.13099,-1.4671 -0.168,-2.19374 -0.0374,-0.72665 -0.0495,-1.4625 -0.0374,-2.20755 0.0134,-0.74504 0.0374,-1.50847 0.0749,-2.29033 0.0374,-0.78181 0.0935,-1.60504 0.16802,-2.46968 0.0495,3e-5 0.0749,-0.0275 0.0749,-0.0828 0,-0.0552 0.0614,-0.0644 0.18659,-0.0277 0.0254,-0.47827 0,-0.94739 -0.0749,-1.407307 -0.0749,-0.45988 -0.10024,-0.85541 -0.0749,-1.18654 0.0749,0.25755 0.13687,0.56109 0.18659,0.91061 0.0494,0.34953 0.0869,0.717467 0.11228,1.103757 0.0253,0.38634 0.0495,0.77266 0.0749,1.15896 0.0254,0.38635 0.0614,0.74507 0.11227,1.07619 0.0749,2e-5 0.0935,-0.0552 0.0561,-0.16558 -0.0374,-0.11033 -0.0561,-0.18394 -0.0561,-0.22074 0.0749,2e-5 0.12431,0.0138 0.1493,0.0414 0.0254,0.0277 0.0628,0.0507 0.11226,0.069 0,-0.14715 0,-0.27133 0.0186,-0.37252 0.0134,-0.10114 0.0187,-0.19775 0.0187,-0.28974 -0.0749,1e-5 -0.11229,0.0184 -0.11229,0.0552 0,0.0369 0,0.0782 0.0187,0.12417 0.0134,0.0461 0,0.0873 -0.0187,0.12418 -0.0254,0.0369 -0.0868,0.0552 -0.18657,0.0552 0.0254,-0.14714 0.0628,-0.29433 0.11227,-0.44151 0.0494,-0.14714 0.0749,-0.29432 0.0749,-0.44151 0.0494,0.0184 0.0628,0.0598 0.0374,0.12417 -0.0254,0.0644 -0.0374,0.1242 -0.0374,0.17938 0.1243,-0.23914 0.14929,-0.47829 0.0749,-0.71747 -0.0749,-0.23913 -0.0495,-0.47826 0.0749,-0.71745 -0.0494,-0.0184 -0.0869,-0.0138 -0.11227,0.0138 -0.0254,0.0277 -0.0749,0.0138 -0.14917,-0.0414 -0.0495,0.0552 -0.0682,0.138 -0.0561,0.24835 0.0134,0.11046 0,0.19318 -0.0561,0.24836 l 0,-0.689867 c 0.0494,2e-5 0.0935,-0.0367 0.13098,-0.11033 0.0374,-0.0736 0.0935,-0.0644 0.16788,0.0277 l 0,-0.5519 c -0.12431,-0.0184 -0.23016,-0.0184 -0.31719,0 -0.0869,0.0184 -0.15558,0.009 -0.20529,-0.0275 0.0749,-0.25754 0.12429,-0.48288 0.14917,-0.67605 0.0254,-0.19314 0.0749,-0.39091 0.1493,-0.5933 0.10024,0.092 0.143,0.184 0.13098,0.27595 -0.0134,0.092 -0.0442,0.17938 -0.0935,0.26215 -0.0495,0.0828 -0.0869,0.16098 -0.11226,0.23454 -0.0254,0.0736 -0.0134,0.138 0.0374,0.19316 0.27375,-0.0367 0.36088,-0.0966 0.2613,-0.17935 -0.0989,-0.0828 -0.17415,-0.15175 -0.224,-0.20697 0.0495,-0.0367 0.0868,-0.0736 0.11226,-0.11034 0.0254,-0.0367 0.0749,-0.0184 0.1493,0.0552 -0.1243,-0.3127 -0.15558,-0.65302 -0.0935,-1.02098 0.0615,-0.36789 0.0307,-0.68064 -0.0935,-0.9382 -0.0989,0.23917 -0.11763,0.48752 -0.0561,0.74503 0.0615,0.25758 0.0561,0.48753 -0.0187,0.68987 -0.12432,-0.29431 -0.16789,-0.60705 -0.131,-0.9382 0.0374,-0.33111 0.0561,-0.59786 0.0561,-0.80024 l 0.1493,0 c 0,-0.0736 0.0134,-0.12874 0.0374,-0.16556 l 0.0749,-0.11034 c 0.0495,-0.0736 0.0495,-0.12875 0,-0.16557 -0.0254,-0.0184 -0.0614,-0.0275 -0.11226,-0.0276 0.0254,-0.14714 0.0749,-0.25753 0.14928,-0.33113 0.0749,-0.0736 0.0749,-0.19313 0,-0.35873 -0.0494,4e-5 -0.0682,0.0322 -0.0561,0.0966 0.0134,0.0644 0,0.0966 -0.0561,0.0966 -0.0749,-0.20233 -0.0749,-0.39548 0,-0.57948 0.0749,-0.18394 0.0869,-0.37709 0.0374,-0.57947 -0.0989,0.34955 -0.16158,0.68988 -0.18657,1.02098 -0.0254,0.33116 -0.0374,0.57031 -0.0374,0.71745 0,0.092 0.0186,0.1426 0.0561,0.15177 0.0374,0.009 0.0186,-0.005 -0.0561,-0.0414 -0.0749,-1.12214 -0.0374,-2.25351 0.11228,-3.39409 -0.0495,-0.0367 -0.1493,-0.0506 -0.29861,-0.0415 -0.1493,0.009 -0.22388,-0.005 -0.22388,-0.0414 -0.0749,0.0552 -0.11228,0.184 -0.11228,0.38632 -0.0749,-0.0919 -0.12429,-0.17473 -0.14929,-0.24834 -0.0254,-0.0736 -0.0628,-0.15634 -0.11226,-0.24835 0.17401,-0.7726 0.31704,-1.59123 0.42904,-2.45589 0.11228,-0.8646 0.0682,-1.78439 -0.13098,-2.75942 -0.19903,0.0552 -0.3919,0.0644 -0.57849,0.0276 -0.18659,-0.0367 -0.37946,-0.0552 -0.57848,-0.0552 0.0254,-0.18393 0.16173,-0.27591 0.41046,-0.27595 -0.37318,-0.23911 -0.78364,-0.43226 -1.23166,-0.57947 -0.44777,-0.14714 -0.91438,-0.26671 -1.39957,-0.35873 -0.48519,-0.0919 -0.98908,-0.17472 -1.51156,-0.24834 -0.52248,-0.0736 -1.04509,-0.16555 -1.56758,-0.27596 -0.1243,0.0369 -0.18658,0.14721 -0.18658,0.33113 0,0.18401 -0.0374,0.29438 -0.11228,0.33115 -0.0254,3e-5 -0.0374,-0.0275 -0.0374,-0.0828 0,-0.0367 0.0134,-0.0736 0.0374,-0.11034 -0.0494,0.0552 -0.0935,0.10123 -0.13098,0.13797 -0.0374,0.0369 -0.11762,0.0552 -0.24274,0.0552 -0.0494,-0.0919 -0.0868,-0.18853 -0.11226,-0.28974 -0.0254,-0.10112 -0.0614,-0.22533 -0.11228,-0.37253 -0.0749,-0.0552 -0.16172,-0.10113 -0.26116,-0.13797 -0.0989,-0.0367 -0.14932,-0.12874 -0.14932,-0.27594 -0.12429,0.0369 -0.19286,0.11961 -0.20529,0.24835 -0.0134,0.12881 0.0187,0.23918 0.0935,0.33114 -0.19903,-0.0552 -0.28002,-0.12875 -0.2426,-0.22077 0.0374,-0.0919 0.0307,-0.18393 -0.0187,-0.27594 -0.1243,-0.0552 -0.29244,-0.0782 -0.50389,-0.069 -0.21159,0.01 -0.42304,0.0184 -0.63462,0.0275 -0.21145,0.009 -0.40419,0.005 -0.57848,-0.0138 -0.17416,-0.0183 -0.29861,-0.0736 -0.37319,-0.16556 0.27374,-0.12873 0.59106,-0.16094 0.95167,-0.0966 0.36088,0.0644 0.74034,0.0782 1.13851,0.0414 0.0254,-0.0919 0,-0.15173 -0.0935,-0.17935 -0.0869,-0.0275 -0.13099,-0.069 -0.13099,-0.12418 0.27373,-0.38628 0.41689,-0.80479 0.42931,-1.25554 0.0134,-0.45067 0.0682,-0.86917 0.16801,-1.25553 0.27374,-0.12875 0.49134,-0.12875 0.65306,0 0.16187,0.12879 0.37947,0.23918 0.65319,0.33111 -0.0749,0.092 -0.0749,0.15642 0,0.19317 0.0749,0.0369 0.0989,0.12882 0.0749,0.27594 1.24427,-0.0183 2.38251,-0.0505 3.41516,-0.0966 1.03253,-0.0459 2.1335,-0.0598 3.30302,-0.0414 0,-0.29429 -0.0614,-0.54725 -0.18659,-0.75884 -0.1243,-0.21151 -0.13686,-0.44606 -0.0374,-0.70365 0.12431,-0.0183 0.19902,4e-5 0.22389,0.0552 0.0254,0.0553 0.0374,0.12422 0.0374,0.20696 0,0.0828 0,0.17021 -0.0187,0.26215 -0.0134,0.092 0.0187,0.14721 0.0935,0.16556 0.1493,-0.2575 0.21761,-0.53804 0.20531,-0.84163 -0.0134,-0.30347 0,-0.60243 0.0186,-0.8968 0.22388,0.0553 0.35459,0.15641 0.39189,0.30353 0.0374,0.14721 0.0441,0.30818 0.0187,0.4829 -0.0254,0.17481 -0.0494,0.35876 -0.0749,0.55189 -0.0253,0.19319 0.0134,0.36336 0.11229,0.5105 0.0494,0.092 0.0615,0.1564 0.0374,0.19316 -0.0254,0.0369 -0.0374,0.10123 -0.0374,0.19315 l 0,0.19317 c 2.01545,0.0369 4.10549,0.0644 6.27039,0.0828 2.16462,0.0184 4.55327,0.0736 7.16593,0.16557 0.0749,-0.0736 0.0989,-0.16093 0.0749,-0.26215 -0.0254,-0.10112 -0.0561,-0.20692 -0.0935,-0.31733 -0.0374,-0.11034 -0.0495,-0.21613 -0.0374,-0.31734 0.0134,-0.10112 0.0935,-0.18853 0.24259,-0.26213 0.0749,0.0552 0.1243,0.13339 0.14929,0.23454 0.0254,0.10123 0.0374,0.20699 0.0374,0.31732 0,0.11046 0,0.2208 -0.0186,0.33114 -0.0134,0.11045 0,0.2024 0.0561,0.27595 1.21926,0.092 2.35136,0.1242 3.39645,0.0966 1.04508,-0.0275 2.12734,-0.0782 3.24714,-0.15176 0.10024,-0.11033 0.17415,-0.23911 0.22402,-0.38632 0.0494,-0.14714 0.10559,-0.2897 0.16775,-0.42771 0.0628,-0.13793 0.14314,-0.25291 0.24271,-0.34494 0.0989,-0.0919 0.24875,-0.15631 0.44776,-0.19315 -0.0749,0.34957 -0.0307,0.6347 0.131,0.85542 0.16172,0.22079 0.24245,0.43234 0.24258,0.63467 0.42291,0.0369 0.78379,0.0369 1.08225,0 0.2986,-0.0367 0.57234,0.0369 0.82121,0.22075 -0.27373,0.092 -0.5722,0.1518 -0.89578,0.17936 -0.32334,0.0277 -0.72151,0.0874 -1.19426,0.17937 0.0494,0.29438 0.10024,0.58872 0.14929,0.88302 0.0495,0.29438 0.21145,0.51511 0.4852,0.66225 -0.0989,0.0369 -0.16174,0.0782 -0.1866,0.12419 -0.0254,0.0461 -0.0628,0.0691 -0.11227,0.069 0,0.092 0.0254,0.15181 0.0749,0.17937 0.0495,0.0276 0.11227,0.0598 0.18658,0.0966 -0.1243,0.092 -0.19915,0.22539 -0.22388,0.40012 -0.0254,0.1748 -0.0494,0.33576 -0.0749,0.4829 -0.0749,-0.0552 -0.13686,-0.11034 -0.18659,-0.16557 -0.0494,-0.0552 -0.0628,-0.12873 -0.0374,-0.22075 -0.12432,-0.0736 -0.19302,-0.0782 -0.20531,-0.0138 -0.0134,0.0644 -0.0815,0.0874 -0.2053,0.069 l 0,-0.27594 c -0.67178,-0.0184 -1.32497,0.0138 -1.95946,0.0966 -0.63449,0.0828 -1.24425,0.1886 -1.82888,0.31733 -0.58476,0.12881 -1.15696,0.28057 -1.71687,0.45531 -0.55977,0.17479 -1.10108,0.35415 -1.62343,0.53808 -0.12431,2.42833 -0.21159,4.87961 -0.2613,7.35388 -0.0495,2.4743 -0.0749,4.94399 -0.0749,7.409057 -0.0254,0.092 -0.0307,0.20698 -0.0187,0.34492 0.0134,0.13799 -0.0441,0.28055 -0.16802,0.42771 0.0494,0.5887 0.0749,1.18658 0.0749,1.79362 0,0.6071 0.0134,1.29695 0.0374,2.06957 0,0.0552 0.0307,0.11046 0.0935,0.16557 0.0615,0.0552 0.11762,0.11035 0.16801,0.16557 l 0,0 z m -0.33601,-8.140317 c 0,0.0184 -0.0134,0.0599 -0.0374,0.12419 -0.0254,0.0644 -0.0494,0.1288 -0.0749,0.19316 -0.0253,0.0644 -0.0374,0.12419 -0.0374,0.17938 0,0.0552 0.0374,0.0828 0.11226,0.0828 -0.0494,-0.0736 -0.0561,-0.14256 -0.0186,-0.20696 0.0374,-0.0644 0.0749,-0.11954 0.11229,-0.16557 0.0374,-0.046 0.0628,-0.0828 0.0749,-0.11033 0.0134,-0.0275 -0.0307,-0.0597 -0.13099,-0.0966 l 0,0 z m -14.07083,-17.08083 c 0.0254,-0.0919 0.0307,-0.20692 0.0186,-0.34492 -0.0134,-0.13793 -0.0561,-0.18853 -0.131,-0.15177 0.0254,3e-5 0.0374,0.0276 0.0374,0.0828 0,0.0552 0,0.11045 -0.0187,0.16555 -0.0134,0.0553 -0.0186,0.11046 -0.0186,0.16556 0,0.0552 0.0374,0.0828 0.11228,0.0828 l 0,0 z m 0.22402,1.18656 c 0.24873,4e-5 0.57861,0.005 0.98908,0.0138 0.41047,0.009 0.82095,0.0184 1.23169,0.0276 0.41047,0.01 0.79608,0.01 1.15696,0 0.36074,-0.01 0.6282,-0.0412 0.80249,-0.0966 -0.19916,2e-5 -0.47903,-0.009 -0.83978,-0.0277 -0.36089,-0.0183 -0.74034,-0.0367 -1.13839,-0.0552 -0.39804,-0.0183 -0.79621,-0.0183 -1.19439,0 -0.39804,0.0184 -0.73405,0.0644 -1.00766,0.13797 l 0,0 z m 13.95867,0.52429 0,0.11034 c 0.24901,3e-5 0.53504,0.0138 0.8585,0.0413 0.32359,0.0277 0.64078,0.0507 0.95179,0.0691 0.31104,0.0184 0.60335,0.0277 0.87722,0.0277 0.27347,5e-5 0.50991,-0.0183 0.70907,-0.0552 -0.52262,-0.0736 -1.11981,-0.13335 -1.79146,-0.17937 -0.67189,-0.046 -1.20695,-0.0505 -1.60512,-0.0137 l 0,0 z m -2.20191,0.0828 c 0.0989,4e-5 0.23017,0.009 0.39189,0.0276 0.16174,0.0184 0.32974,0.0322 0.50377,0.0414 0.17429,0.01 0.3483,0.005 0.52261,-0.0138 0.17415,-0.0183 0.31102,-0.0644 0.41047,-0.13796 -0.27362,2e-5 -0.56592,0.0138 -0.87708,0.0414 -0.31104,0.0277 -0.6282,0.0414 -0.95166,0.0414 l 0,0 z m 8.88292,0.16556 0.37319,0 c 0,-0.0919 -0.0628,-0.12873 -0.1866,-0.11033 -0.12431,0.0184 -0.18672,0.0552 -0.18659,0.11033 l 0,0 z m -22.35655,-0.4415 c -0.1243,0.0369 -0.26759,0.0507 -0.42918,0.0413 -0.16174,-0.009 -0.27988,0.005 -0.3546,0.0414 0.1243,4e-5 0.27374,0.01 0.44788,0.0276 0.17404,0.0184 0.28618,-0.0183 0.3359,-0.11034 l 0,0 z m 22.61772,0.71745 c -1.11967,-0.0367 -2.27662,-0.0413 -3.47102,-0.0138 -1.19439,0.0277 -2.35136,0.023 -3.47116,-0.0138 0.19915,0.1472 0.4356,0.22079 0.70921,0.22075 0.27373,4e-5 0.54746,4e-5 0.82121,0 0.87078,0.0184 1.69186,0.0321 2.46335,0.0414 0.77123,0.01 1.51772,-0.0138 2.23921,-0.069 0.12431,0.0184 0.28002,0.0322 0.46661,0.0414 0.18659,0.009 0.35461,-0.0598 0.5039,-0.20694 -0.0254,-0.0183 -0.0494,-0.0275 -0.0749,-0.0276 -0.10024,3e-5 -0.16173,0.01 -0.18659,0.0276 l 0,0 z m -23.66269,-0.33113 c -0.79633,-0.0183 -1.57998,-0.0183 -2.35133,0 -0.77137,0.0184 -1.41828,0.0552 -1.94088,0.11033 1.11966,0.0184 2.22062,0.0414 3.30301,0.0691 1.08238,0.0276 2.1586,-0.023 3.22843,-0.15177 -0.39805,-0.0552 -0.77136,-0.0735 -1.11968,-0.0552 -0.34832,0.0184 -0.7215,0.0277 -1.11955,0.0277 l 0,0 z m 13.06302,0.13796 c -1.24409,0.0369 -2.57522,0.0598 -3.99349,0.069 -1.41839,0.01 -2.66251,0.0322 -3.73233,0.0691 -0.0495,4e-5 -0.13098,4e-5 -0.24273,0 -0.11227,4e-5 -0.22387,4e-5 -0.33588,0 -0.11228,4e-5 -0.18672,4e-5 -0.22389,0 -0.0374,4e-5 0,4e-5 0.13099,0 0.52249,0.0552 0.9268,0.0736 1.2131,0.0552 0.28604,-0.0183 0.6282,-0.0275 1.02625,-0.0277 0.5972,0.0184 1.2814,0.0322 2.05275,0.0414 0.77136,0.01 1.57372,0.0184 2.40735,0.0276 0.83352,0.01 1.67958,0.01 2.53808,0 0.85824,-0.01 1.67316,-0.0322 2.44453,-0.0691 -0.72151,-0.0183 -1.34985,-0.0507 -1.88476,-0.0966 -0.53504,-0.046 -1.00151,-0.069 -1.39956,-0.069 l 0,0 z m -19.2214,0.38633 c 0.12431,0.0368 0.20517,0.0368 0.24259,0 0.0374,-0.0367 0.0561,-0.0874 0.0561,-0.15177 0,-0.0644 0,-0.12414 0,-0.17936 0,-0.0552 0.0374,-0.0919 0.11227,-0.11034 -0.0495,4e-5 -0.11227,-0.0275 -0.18659,-0.0828 -0.0749,-0.0552 -0.13699,-0.10112 -0.18672,-0.13797 -0.0254,0.1472 -0.0561,0.25758 -0.0935,0.33113 -0.0374,0.0736 -0.0187,0.18401 0.0561,0.33113 l 0,0 z m 22.84161,0.16556 0,0.46911 c 0.39817,-0.0183 0.87106,-0.0183 1.41839,0 0.54735,0.0184 1.11954,0.0369 1.71687,0.0552 0.59707,0.0184 1.1881,0.0322 1.77286,0.0413 0.58465,0.01 1.12583,-0.005 1.62344,-0.0413 0.12431,5e-5 0.27375,-0.0138 0.4479,-0.0414 0.17417,-0.0275 0.28618,-0.11488 0.33589,-0.26214 -0.54733,-0.0736 -1.11338,-0.115 -1.69815,-0.12418 -0.58476,-0.01 -1.18812,-0.01 -1.81016,0 -0.62219,0.01 -1.25026,0.01 -1.88488,0 -0.63436,-0.01 -1.27526,-0.0414 -1.92216,-0.0966 l 0,0 z m -13.84668,-0.0552 c 0,0.1472 0,0.28057 -0.0187,0.40012 -0.0134,0.11961 0.0442,0.20699 0.16803,0.26215 2.01531,-0.0183 4.0308,-0.0322 6.04625,-0.0414 2.01546,-0.01 4.00592,-0.0138 5.97168,-0.0138 0.19901,3e-5 0.44775,0.01 0.74648,0.0277 0.29861,0.0184 0.48518,-0.0183 0.55976,-0.11035 l 0,-0.4691 c -2.23933,-0.0367 -4.46638,-0.0597 -6.68073,-0.0691 -2.21461,-0.009 -4.47881,-0.005 -6.79275,0.0138 l 0,0 z m -6.53158,-0.13797 c 0.12431,4e-5 0.26746,0.01 0.42932,0.0276 0.16159,0.0184 0.24246,-0.0183 0.24246,-0.11033 -0.12431,-0.0183 -0.24875,-0.01 -0.37317,0.0277 -0.12431,0.0369 -0.22402,0.0552 -0.29861,0.0552 l 0,0 z m 6.15827,0.11034 c 0,0.0369 0,0.115 0.0186,0.23456 0.0134,0.1196 0.0441,0.1334 0.0935,0.0414 -0.0495,-0.0919 -0.0628,-0.15173 -0.0374,-0.17936 0.0254,-0.0275 0.0374,-0.0597 0.0374,-0.0966 l -0.11229,0 z m -7.05405,0.13798 c 0.3483,0.25757 0.8025,0.42314 1.36239,0.49669 0.55977,0.0736 1.16312,0.11045 1.81003,0.11034 0.64706,2e-5 1.29397,-0.01 1.94088,-0.0277 0.64691,-0.0183 1.23167,3e-5 1.75416,0.0552 0.0254,-0.14714 0.0374,-0.2897 0.0374,-0.4277 0,-0.13793 0,-0.25291 0,-0.34494 -1.3187,-0.0367 -2.51923,-0.0137 -3.60162,0.0691 -1.08251,0.0828 -2.18348,0.10579 -3.30314,0.0691 l 0,0 z m 22.80444,0.74504 c -0.27373,3e-5 -0.56618,-0.0183 -0.87721,-0.0552 -0.31104,-0.0367 -0.5412,0.0644 -0.69049,0.30354 0.2986,0.0369 0.65935,0.0598 1.08238,0.0691 0.42304,0.01 0.85851,0.01 1.30626,0 0.4479,-0.01 0.88965,-0.0275 1.32511,-0.0552 0.43533,-0.0275 0.81479,-0.069 1.13825,-0.12418 0.19915,0.0184 0.38575,0.0184 0.5599,0 0.17417,-0.0183 0.2986,-0.10112 0.37332,-0.24835 -0.57233,0.0369 -1.25053,0.0552 -2.03419,0.0552 -0.78378,4e-5 -1.51155,0.0184 -2.18333,0.0552 l 0,0 z m -24.52132,-0.38632 -0.0374,0.11034 c 0.0749,4e-5 0.1616,4e-5 0.2613,0 0.0989,4e-5 0.16174,-0.0275 0.1866,-0.0828 -0.0749,-0.0183 -0.14301,-0.0367 -0.20531,-0.0552 -0.0614,-0.0183 -0.13099,-0.009 -0.2053,0.0276 l 0,0 z m 21.64736,0.41392 c -0.84607,0.0369 -1.74787,0.0369 -2.70583,0 -0.95794,-0.0367 -1.92215,-0.0367 -2.89266,0 -0.87081,-0.0183 -1.69817,-0.0138 -2.48193,0.0138 -0.78379,0.0276 -1.57373,0.0598 -2.37008,0.0966 -0.32332,3e-5 -0.6655,-0.01 -1.02637,-0.0277 -0.36076,-0.0183 -0.71522,0.0461 -1.06367,0.19316 1.51784,0.0736 3.07913,0.0782 4.68411,0.0138 1.60487,-0.0644 3.26573,-0.0782 4.9826,-0.0414 0.59706,-0.0367 1.20681,-0.0275 1.82888,0.0277 0.62192,0.0552 1.19424,0.0369 1.71685,-0.0552 0.0241,-0.20231 -0.0495,-0.2989 -0.22399,-0.28974 -0.17418,0.009 -0.32346,0.0322 -0.44791,0.0691 l 0,0 z m -13.95867,0.13797 c -0.52261,-0.0183 -1.00781,-0.0275 -1.45583,-0.0276 -0.44777,3e-5 -0.83351,0.0276 -1.15683,0.0828 0.19887,0.092 0.44162,0.1518 0.72777,0.17935 0.28604,0.0276 0.59707,0.0322 0.93295,0.0138 0.33603,-0.0183 0.67819,-0.0414 1.02652,-0.0691 0.34831,-0.0275 0.67177,-0.0505 0.97023,-0.069 -0.0749,-0.0919 -0.2176,-0.13332 -0.42905,-0.12417 -0.21157,0.01 -0.41689,0.0139 -0.61576,0.0138 l 0,0 z m 17.2431,0.41391 c -0.39817,3e-5 -0.77135,0.005 -1.11967,0.0138 -0.34832,0.01 -0.58477,0.0874 -0.70907,0.23455 0.49749,0.11046 0.91437,0.138 1.25027,0.0828 0.33588,-0.0552 0.70291,-0.12873 1.10096,-0.22075 0.1243,0.092 0.3173,0.11046 0.57848,0.0552 0.2613,-0.0552 0.45404,-0.12872 0.57861,-0.22074 -0.3236,-0.0183 -0.6159,-0.023 -0.87708,-0.0138 -0.2613,0.01 -0.52876,0.0322 -0.8025,0.069 l 0,0 z m -1.82874,-0.0277 c -1.4e-4,0.092 0.0869,0.11961 0.26118,0.0828 0.0749,-0.0183 0.16173,-0.0367 0.2613,-0.0552 -0.0749,-0.0183 -0.18057,-0.0414 -0.3173,-0.069 -0.13674,-0.0275 -0.20532,-0.0137 -0.20518,0.0414 l 0,0 z m -13.47375,0.0277 c -0.0495,0.092 -0.0682,0.18859 -0.0561,0.28974 0.0134,0.10123 0.0187,0.19779 0.0187,0.28974 1.26897,0.0369 2.61264,0.0507 4.03091,0.0413 1.41828,-0.009 2.82412,-0.0321 4.21739,-0.0691 0.57232,3e-5 1.12595,-0.0275 1.661,-0.0828 0.5349,-0.0552 1.03881,-0.0735 1.51156,-0.0552 0.27374,-0.0367 0.52876,-0.0367 0.76507,0 0.23645,0.0369 0.45417,-0.0183 0.6532,-0.16556 -0.12431,-0.0367 -0.16801,-0.0552 -0.13099,-0.0552 0.0374,3e-5 0.0815,-0.046 0.13099,-0.13797 -2.13977,-0.12875 -4.28596,-0.16094 -6.43815,-0.0966 -2.15246,0.0644 -4.27352,0.0782 -6.3637,0.0414 l 0,0 z m -3.135,0.24835 c 0.44775,0.092 0.80864,0.1794 1.08237,0.26215 0.27361,0.0828 0.64693,0.0966 1.11954,0.0414 0,-0.0919 0,-0.18851 0.0187,-0.28973 0.0134,-0.10113 0.0186,-0.19774 0.0186,-0.28975 -0.1243,3e-5 -0.20517,0.0369 -0.24245,0.11034 -0.0374,0.0736 -0.0935,0.13802 -0.168,0.19315 -0.0254,-0.0919 -0.11764,-0.15632 -0.28004,-0.19315 -0.16158,-0.0367 -0.33575,-0.0505 -0.52233,-0.0414 -0.1866,0.01 -0.37947,0.0322 -0.57862,0.0691 -0.19902,0.0369 -0.34832,0.0828 -0.44776,0.13797 l 0,0 z m 16.42204,0.68985 c 0.19901,4e-5 0.28616,-0.0552 0.2613,-0.16556 -0.0255,-0.11034 -0.0628,-0.18392 -0.11228,-0.22076 -0.0749,0.0369 -0.10024,0.0966 -0.0749,0.17936 0.0254,0.0828 0,0.15181 -0.0749,0.20696 l 0,0 z m 1.19438,-0.16556 c 0.24887,4e-5 0.37317,-0.0644 0.37332,-0.19316 -0.12431,3e-5 -0.20532,0.0184 -0.24273,0.0552 -0.0374,0.0369 -0.0801,0.0828 -0.13099,0.13796 l 0,0 z m -7.57667,-0.0552 c -0.92066,0.0369 -1.8536,0.0828 -2.79924,0.13797 -0.94538,0.0552 -1.84117,0.0736 -2.68724,0.0552 -0.27374,3e-5 -0.56592,-0.01 -0.87708,-0.0276 -0.31103,-0.0183 -0.50377,0.0461 -0.57848,0.19315 0.1243,0.14719 0.28001,0.1978 0.4666,0.15177 0.1866,-0.046 0.34204,-0.0598 0.46648,-0.0414 1.64228,-0.0183 3.40887,-0.005 5.2999,0.0414 1.89102,0.0461 3.69502,0.0322 5.41177,-0.0414 0.0254,-0.0736 0.0815,-0.11954 0.168,-0.13798 0.0869,-0.0183 0.18044,-0.0275 0.27988,-0.0277 0.0989,4e-5 0.19289,-0.005 0.28003,-0.0138 0.0868,-0.009 0.14302,-0.0322 0.16788,-0.069 -0.0495,-0.0552 -0.0427,-0.10579 0.0186,-0.15177 0.0615,-0.046 0.0561,-0.0966 -0.0186,-0.15176 -0.84594,-0.0367 -1.7293,-0.0275 -2.64982,0.0275 -0.92065,0.0552 -1.90358,0.0736 -2.94868,0.0552 l 0,0 z m 1.00779,0.77263 c -0.99536,0.0369 -2.0093,0.0139 -3.04183,-0.069 -1.03266,-0.0827 -2.10875,-0.0597 -3.22843,0.069 0.39805,0.11045 0.87093,0.2208 1.41827,0.33113 0.54734,0.11046 1.11967,0.14722 1.71687,0.11046 0.79621,0.0184 1.61114,0.0322 2.44464,0.0413 0.83351,0.009 1.71072,-0.005 2.63137,-0.0413 0.64692,0.0184 1.21284,0.0276 1.69816,0.0275 0.48518,4e-5 0.80236,-0.18392 0.95166,-0.55188 -0.79622,-0.0736 -1.56141,-0.069 -2.29535,0.0138 -0.73407,0.0828 -1.49928,0.10579 -2.29536,0.069 l 0,0 z m -7.20335,-0.0275 c 0,0.1472 0.0869,0.22078 0.2613,0.22075 0.0749,-0.0552 0.17404,-0.0919 0.29847,-0.11034 0.12431,-0.0183 0.16187,-0.046 0.11228,-0.0828 -0.0749,0.0369 -0.17403,0.0461 -0.29859,0.0277 -0.12431,-0.0183 -0.24887,-0.0367 -0.37319,-0.0552 l 0,0 z m 12.42855,4.19433 c 0,-0.0919 0.0134,-0.19314 0.0374,-0.30354 0.0254,-0.11033 -0.0254,-0.16553 -0.1493,-0.16556 0,0.20239 -0.0134,0.32657 -0.0374,0.37252 -0.0254,0.0461 0.0628,0.14259 0.26132,0.28974 -0.0749,0.0552 -0.087,0.0966 -0.0374,0.12418 0.0495,0.0277 -0.0241,0.0229 -0.22389,-0.0138 l 0,0.66226 c 0.27376,-0.0367 0.40434,-0.15635 0.3919,-0.35874 -0.0134,-0.20233 0,-0.40467 0.0187,-0.60706 0.10025,-0.62544 0.15558,-1.2739 0.168,-1.9454 0.0134,-0.67143 0,-1.27388 -0.0561,-1.80743 -1.3e-4,-0.0736 -0.0374,-0.11033 -0.11228,-0.11033 -0.1243,0.27597 -0.19273,0.55651 -0.20516,0.84162 -0.0134,0.28518 0,0.5887 0.0187,0.91061 0.0254,0.32195 0.0374,0.6577 0.0374,1.00718 0,0.34957 -0.0374,0.71749 -0.11227,1.10378 l 0,0 z m -9.70388,-3.09056 c 1.19426,-0.0183 2.31392,-0.009 3.35888,0.0277 1.0451,0.0369 2.05289,0.046 3.02327,0.0276 0.27361,-0.0552 0.5599,-0.0782 0.85837,-0.069 0.29859,0.009 0.54747,-0.0598 0.7465,-0.20695 -0.12431,-0.14715 -0.34205,-0.22072 -0.65308,-0.22075 -0.31104,3e-5 -0.56605,3e-5 -0.7652,0 -1.39341,-0.0736 -2.81784,-0.0782 -4.27352,-0.0138 -1.45556,0.0644 -2.78054,0.0783 -3.97493,0.0414 0.10024,0.16559 0.23644,0.28057 0.41074,0.34492 0.17403,0.0644 0.3669,0.092 0.57849,0.0828 0.21144,-0.009 0.42904,-0.0507 0.65305,-0.12416 0.22402,-0.0736 0.42304,-0.15635 0.5972,-0.24838 -0.0749,0.092 -0.16801,0.15183 -0.28001,0.17938 -0.11228,0.0277 -0.20518,0.0874 -0.27976,0.17936 l 0,0 z m -3.65775,0.13799 c 0.1243,-0.0367 0.28003,-0.046 0.46661,-0.0277 0.18659,0.0184 0.37947,0.009 0.57848,-0.0275 -0.10024,-0.0367 -0.21786,-0.0828 -0.35459,-0.13797 -0.13687,-0.0552 -0.26118,-0.0919 -0.37319,-0.11046 -0.11228,-0.0183 -0.19915,-0.009 -0.26144,0.0276 -0.0615,0.0369 -0.0802,0.12881 -0.0561,0.27594 l 0,0 z m 6.79275,0.24833 c -0.72149,-0.0367 -1.41199,-0.0828 -2.07133,-0.13797 -0.65948,-0.0552 -1.27525,-0.0367 -1.84758,0.0552 -0.0749,0.0184 -0.16803,0.0598 -0.27989,0.12417 -0.11228,0.0644 -0.22402,0.12881 -0.33589,0.19317 -0.11227,0.0644 -0.19916,0.1288 -0.26131,0.19316 -0.0614,0.0644 -0.0815,0.10579 -0.0561,0.12417 1.8413,3e-5 3.53944,0.0139 5.09472,0.0413 1.555,0.0277 3.12873,-0.0138 4.72128,-0.12417 0.0494,-0.0919 0.0615,-0.17474 0.0374,-0.24836 -0.0254,-0.0736 -0.0374,-0.18393 -0.0374,-0.33112 -0.72149,-0.0183 -1.51785,-0.0138 -2.38864,0.0138 -0.87093,0.0277 -1.7293,0.0599 -2.57537,0.0966 l 0,0 z m -6.94205,0.0552 c 0,0.092 0.0254,0.1564 0.0749,0.19317 0.0494,0.0369 0.0749,0.12881 0.0749,0.27594 0.42304,0.0552 0.87079,0.0276 1.34369,-0.0828 0.47276,-0.11034 0.80864,-0.26671 1.00767,-0.46912 -0.5972,5e-5 -1.04509,0.0139 -1.34356,0.0414 -0.29874,0.0276 -0.68434,0.0414 -1.15711,0.0414 l 0,0 z m 10.67437,0.66227 c -0.72148,-0.0184 -1.48054,-0.0184 -2.27675,0 -0.79608,0.0184 -1.60486,0.0414 -2.42594,0.0689 -0.82107,0.0277 -1.62972,0.0506 -2.42593,0.069 -0.79636,0.0184 -1.55514,0.0184 -2.27677,0 -0.0495,0.092 -0.13099,0.1656 -0.2426,0.22075 -0.11228,0.0552 -0.2053,0.1288 -0.28001,0.22077 1.79171,-0.0552 3.47115,-0.0644 5.03872,-0.0277 1.56744,0.0369 3.07286,0.0184 4.51612,-0.0552 0.1243,4e-5 0.27988,0.005 0.46661,0.0138 0.18658,0.009 0.3606,0.005 0.52246,-0.0138 0.16174,-0.0184 0.31104,-0.0552 0.44777,-0.11034 0.137,-0.0552 0.21788,-0.13794 0.2426,-0.24835 -0.12431,-0.0552 -0.32346,-0.0919 -0.59707,-0.11033 -0.27373,-0.0183 -0.51004,-0.0275 -0.70921,-0.0275 l 0,0 z m -10.56235,0.11034 c 0,0.092 -0.0134,0.19779 -0.0374,0.31732 -0.0254,0.11961 0.0253,0.207 0.1493,0.26215 0.44776,-0.12874 0.67164,-0.3587 0.67178,-0.68984 -0.0749,0.0552 -0.19289,0.0736 -0.35461,0.0552 -0.16174,-0.0183 -0.30475,3e-5 -0.42918,0.0552 l 0,0 z m -0.7092,1.79363 c 0,-0.33111 -0.0254,-0.62085 -0.0749,-0.86922 -0.0495,-0.24833 -0.13688,-0.47368 -0.26131,-0.67606 0,0.092 -0.0254,0.22538 -0.0749,0.40012 -0.0495,0.17478 -0.0815,0.34495 -0.0935,0.51049 -0.0134,0.16559 0.0134,0.31276 0.0749,0.44149 0.0615,0.12882 0.20517,0.19322 0.42905,0.19318 l 0,0 z m 0.6719,-0.93822 c 1.84118,0.092 3.75706,0.17021 5.74767,0.23456 1.99047,0.0644 4.08065,0.0966 6.27026,0.0966 0,-0.0919 0,-0.18854 0.0186,-0.28975 0.0134,-0.10112 0.0187,-0.19772 0.0187,-0.28974 -2.04032,0.0552 -4.08064,0.0828 -6.12097,0.0828 -2.04032,5e-5 -4.01837,0.0552 -5.93426,0.16558 l 0,0 z m 2.61252,0.35873 c -0.47275,-0.0184 -0.92679,-0.0229 -1.36226,-0.0138 -0.43533,0.009 -0.85222,0.0874 -1.25026,0.23457 0.0494,0.0552 0.0615,0.0966 0.0374,0.12416 -0.0254,0.0277 -0.0374,0.0873 -0.0374,0.17937 1.56743,0.0369 3.14757,0.0783 4.73999,0.12418 1.59244,0.0461 3.17243,0.0873 4.74,0.12417 0.24889,-0.0184 0.54119,-0.0275 0.87708,-0.0276 0.33589,2e-5 0.64693,-0.0138 0.93308,-0.0414 0.28604,-0.0275 0.51018,-0.0736 0.67192,-0.13797 0.16159,-0.0644 0.1803,-0.17013 0.0561,-0.31734 -1.39339,-0.0367 -2.91739,-0.0782 -4.5721,-0.12417 -1.6546,-0.046 -3.26572,-0.0874 -4.8333,-0.12417 l 0,0 z m -3.84419,1.65565 c 0.12431,0.0369 0.21145,0.0322 0.26116,-0.0138 0.0494,-0.046 0.13687,-0.0413 0.26131,0.0138 0,-0.14713 -0.0134,-0.2759 -0.0374,-0.38632 -0.0254,-0.11033 -0.0134,-0.23911 0.0374,-0.38632 -0.12431,4e-5 -0.21145,-0.0183 -0.26131,-0.0552 -0.0495,-0.0367 -0.13672,-0.0552 -0.26116,-0.0552 l 0,0.88301 z m 1.97803,-0.55188 c -0.12431,-0.0552 -0.19902,-0.115 -0.22387,-0.17937 -0.0254,-0.0644 -0.17417,-0.0689 -0.44791,-0.0138 -0.0495,0.092 -0.0441,0.207 0.0186,0.34494 0.0628,0.13799 0.0561,0.28057 -0.0186,0.42771 1.04509,-0.0552 2.06519,-0.0782 3.06042,-0.069 0.99523,0.009 1.99061,0.0277 2.98598,0.0552 0.99523,0.0276 1.98431,0.0413 2.96711,0.0413 0.98295,10e-6 1.98433,-0.0367 3.00442,-0.11034 l 0,-0.57949 c -0.87079,0.0369 -1.80386,0.0506 -2.7991,0.0414 -0.99524,-0.009 -1.99061,-0.0184 -2.98585,-0.0277 -0.99523,-0.009 -1.96573,-0.0138 -2.91126,-0.0138 -0.94551,4e-5 -1.82887,0.0277 -2.64994,0.0828 l 0,0 z m 0.85851,0.88301 c -0.27375,3e-5 -0.53505,-0.009 -0.78379,-0.0275 -0.24888,-0.0184 -0.51005,0.0184 -0.78378,0.11033 l 0,0.38632 c 1.79143,-0.0367 3.7509,-0.0414 5.87837,-0.0138 2.12733,0.0276 4.17395,0.0414 6.13956,0.0414 l 0,-0.4967 c -1.76658,-0.0367 -3.50217,-0.0505 -5.20648,-0.0414 -1.70443,0.009 -3.45245,0.0229 -5.24388,0.0414 l 0,0 z m 11.75675,0.71747 c 0.0749,-0.14716 0.0989,-0.27592 0.0749,-0.38632 -0.0254,-0.11035 0,-0.23912 0.0749,-0.38633 -0.19901,0.0369 -0.28604,0.1518 -0.26117,0.34493 0.0254,0.19319 0.0614,0.33575 0.11226,0.42772 l 0,0 z m -0.11226,0 c -0.0749,0.092 -0.0989,0.18857 -0.0749,0.28974 0.0241,0.10123 0.0374,0.19777 0.0374,0.28973 0.12431,3e-5 0.16173,-0.0367 0.11228,-0.11034 -0.0494,-0.0736 -0.0494,-0.13795 0,-0.19315 0,0.0552 0.0254,0.10123 0.0749,0.13795 l 0.0749,0.0552 c 0,-0.0919 0.0187,-0.20693 0.0561,-0.34493 0.0374,-0.13795 0.0307,-0.17933 -0.0186,-0.12418 0,0.092 -0.0307,0.12421 -0.0935,0.0966 -0.0628,-0.0275 -0.11762,-0.0598 -0.168,-0.0966 l 0,0 z m -5.11332,-0.0277 c -0.44776,0.0184 -0.98282,0.0277 -1.60487,0.0277 -0.62204,2e-5 -1.26896,-0.005 -1.94087,-0.0138 -0.67164,-0.009 -1.33728,-0.0138 -1.99676,-0.0138 -0.65933,1e-5 -1.25025,0.0184 -1.77273,0.0552 -0.12431,2e-5 -0.26131,-0.005 -0.4106,-0.0138 -0.1493,-0.009 -0.23644,0.0598 -0.26118,0.20696 1.11968,0.11044 2.34507,0.1702 3.67619,0.17936 1.33126,0.009 2.63137,0.0322 3.90034,0.069 0.69677,0.0184 1.44929,0.0599 2.25806,0.12417 0.80865,0.0644 1.53643,0.0506 2.18333,-0.0414 -0.0749,-0.0919 -0.1176,-0.17474 -0.13098,-0.24834 -0.0134,-0.0736 0,-0.15635 0.0187,-0.24837 -0.7215,-0.0552 -1.39341,-0.0644 -2.01533,-0.0275 -0.62205,0.0368 -1.25667,0.0184 -1.90358,-0.0552 l 0,0 z m -7.98701,0.63466 c 0,0.092 0,0.18398 0.0187,0.27595 0.0134,0.092 0.0441,0.16558 0.0935,0.22074 1.91588,-0.0184 3.69504,0.0139 5.33719,0.0966 1.64214,0.0828 3.24713,0.115 4.8147,0.0966 0.12432,4e-5 0.29233,0.009 0.50391,0.0276 0.21144,0.0184 0.40419,0.0229 0.57848,0.0138 0.17415,-0.009 0.31717,-0.0413 0.42932,-0.0966 0.11227,-0.0552 0.14301,-0.15635 0.0935,-0.30353 -2.01545,-0.20234 -4.03706,-0.29893 -6.06497,-0.28974 -2.02788,0.009 -3.96249,-0.005 -5.80366,-0.0414 l 0,0 z m 13.06302,3.3389 c 0.0494,-0.22073 0.0815,-0.46907 0.0935,-0.74504 0.0134,-0.27591 0.0134,-0.55646 0,-0.84162 -0.0134,-0.28512 -0.0254,-0.55647 -0.0374,-0.81404 -0.0134,-0.25752 -0.0307,-0.48747 -0.0561,-0.68985 -0.0989,0.47831 -0.137,0.97962 -0.11227,1.50389 0.0254,0.52431 0.0628,1.0532 0.11227,1.58666 l 0,0 z m -12.98843,-2.56626 0,0.68986 c 1.91587,-0.0552 3.86906,-0.046 5.8598,0.0277 1.99046,0.0736 4.00592,0.0369 6.04625,-0.11034 0,-0.0367 -0.0254,-0.0873 -0.0749,-0.15177 -0.0495,-0.0644 -0.0749,-0.14254 -0.0749,-0.23455 -1.96575,-0.14715 -3.88791,-0.21153 -5.76638,-0.19316 -1.8786,0.0184 -3.87548,0.009 -5.99039,-0.0277 l 0,0 z m 0.7465,1.29692 c -0.12431,-0.0736 -0.23631,-0.12875 -0.33603,-0.16556 -0.0989,-0.0367 -0.24875,-0.0552 -0.44776,-0.0552 0,0.092 0.0254,0.17018 0.0749,0.23454 0.0495,0.0644 0.0749,0.14261 0.0749,0.23456 0.92051,-0.0184 1.90345,-0.0275 2.94841,-0.0276 1.04509,2e-5 2.0839,0.009 3.11656,0.0276 1.03253,0.0184 2.02775,0.0322 2.98583,0.0414 0.95793,0.009 1.81003,0.005 2.55665,-0.0138 0,-0.14713 0.0374,-0.25752 0.11227,-0.33113 0.0749,-0.0736 0.0869,-0.15634 0.0374,-0.24834 -1.64214,0.0369 -3.41503,0.0552 -5.31834,0.0552 -1.90359,2e-5 -3.83819,0.0828 -5.80379,0.24835 l 0,0 z m 11.38343,0.27595 c -0.0749,-0.0367 -0.0989,-0.12415 -0.0749,-0.26215 0.0254,-0.13794 0,-0.20692 -0.0749,-0.20695 0,0.092 0,0.19318 -0.0186,0.30354 -0.0134,0.11045 0.0441,0.16558 0.16787,0.16556 l 0,0 z m 1.26897,0.99339 c 0,-0.14715 0.0134,-0.29891 0.0374,-0.45531 0.0254,-0.15634 -0.0254,-0.26212 -0.14929,-0.31733 0,0.092 0,0.22078 0,0.38632 0,0.16559 0.0374,0.29436 0.11226,0.38632 l 0,0 z m -8.73349,-0.74504 c -0.44789,2e-5 -0.94565,2e-5 -1.49299,0 -0.54734,2e-5 -1.04495,0.0184 -1.49298,0.0552 -0.17402,2e-5 -0.3546,-0.009 -0.54119,-0.0277 -0.1866,-0.0184 -0.36062,-0.0275 -0.52249,-0.0276 -0.16172,1e-5 -0.30473,0.0229 -0.42917,0.069 -0.12431,0.046 -0.21145,0.1242 -0.26118,0.23456 0.1243,0.14718 0.27989,0.20238 0.46648,0.16555 0.18658,-0.0367 0.34216,-0.046 0.4666,-0.0275 0.97024,0.0369 1.8909,0.0736 2.76183,0.11033 0.87081,0.0369 1.73557,0.0691 2.59393,0.0966 0.85851,0.0276 1.72931,0.046 2.61254,0.0552 0.88335,0.009 1.83502,0.0138 2.85524,0.0138 0.0749,-0.0919 0.11763,-0.17473 0.13099,-0.24835 0.0134,-0.0736 0.0307,-0.18394 0.0561,-0.33113 -1.26898,-0.12875 -2.48809,-0.18854 -3.65762,-0.17937 -1.16939,0.009 -2.35135,0.0229 -3.5456,0.0414 l 0,0 z m 7.27792,0.44151 c 0,-0.0552 0.0374,-0.13336 0.11229,-0.23457 0.0749,-0.10112 0.0494,-0.15172 -0.0749,-0.15175 0,0.0369 -0.0186,0.0966 -0.0561,0.17936 -0.0374,0.0828 -0.0307,0.15179 0.0186,0.20696 l 0,0 z m -10.71166,0.19315 c -0.19915,0.092 -0.39817,0.12881 -0.59706,0.11034 -0.19914,-0.0183 -0.43558,2e-5 -0.7092,0.0552 0,0.14719 0.0187,0.25756 0.0561,0.33113 0.0374,0.0736 0.0561,0.15638 0.0561,0.24835 2.01559,-0.0552 4.01834,-0.0367 6.00909,0.0552 1.99046,0.092 3.90636,0.0828 5.74765,-0.0275 0.0254,-0.0919 0.0134,-0.17475 -0.0374,-0.24835 -0.0495,-0.0736 -0.0749,-0.15634 -0.0749,-0.24835 -0.84593,-0.0367 -1.72302,-0.0552 -2.6311,-0.0552 -0.90835,4e-5 -1.81015,-0.005 -2.70595,-0.0138 -0.89592,-0.009 -1.77916,-0.0229 -2.64994,-0.0414 -0.87107,-0.0184 -1.69202,-0.0736 -2.46336,-0.16557 l 0,0 z m 10.82368,0.66226 c -0.0495,-0.0367 -0.0495,-0.0874 0,-0.15176 0.0495,-0.0644 0.0134,-0.14255 -0.11227,-0.23455 0,0.092 -0.0134,0.20239 -0.0374,0.33113 -0.0253,0.1288 0.0241,0.1472 0.1493,0.0552 l 0,0 z m 0.89579,0.13797 c 0,-0.0552 0,-0.14254 0,-0.26214 0,-0.11956 -0.0254,-0.13335 -0.0749,-0.0413 0,-0.0367 0.0134,0.0139 0.0374,0.15179 0.0254,0.13797 0.0374,0.18858 0.0374,0.15174 l 0,0 z m 0.52235,0.77263 c -0.12431,-0.23911 -0.14917,-0.40927 -0.0749,-0.51047 0.0749,-0.10113 0.0134,-0.22532 -0.1866,-0.37253 0.0749,0.0736 0.10559,0.1518 0.0935,0.23455 -0.0134,0.0828 -0.0307,0.1656 -0.0561,0.24835 -0.0254,0.0828 -0.0254,0.15638 0,0.22076 0.0254,0.0644 0.0989,0.12419 0.22387,0.17934 l 0,0 z m -13.4362,-0.55186 c 0,0.14718 0,0.27595 0,0.38633 0,0.11044 -0.0134,0.21154 -0.0374,0.30352 2.04034,-0.11033 4.04964,-0.12875 6.02768,-0.0552 1.97818,0.0736 3.88778,0.10125 5.72908,0.0828 0.0254,-0.14714 0.0134,-0.28512 -0.0374,-0.41391 -0.0495,-0.12876 -0.0749,-0.22073 -0.0749,-0.27596 -0.79621,0.0369 -1.65456,0.0461 -2.57522,0.0276 -0.92066,-0.0184 -1.88488,-0.0414 -2.89255,-0.069 -1.0078,-0.0275 -2.03417,-0.046 -3.07926,-0.0552 -1.04482,-0.009 -2.06519,0.0139 -3.06041,0.0691 l 0,0 z m 12.01806,0.60706 c 0,-0.0367 0,-0.14254 0.0187,-0.31733 0.0134,-0.17474 -0.0442,-0.26213 -0.16802,-0.26214 0.0749,0.092 0.0989,0.20238 0.0749,0.33112 -0.0254,0.1288 0,0.21158 0.0749,0.24835 l 0,0 z m 0.85837,0.13797 c 0.0254,-0.0552 0.0561,-0.16094 0.0935,-0.31733 0.0374,-0.15634 0.0186,-0.21614 -0.0562,-0.17936 0,0.092 -0.0186,0.20698 -0.0561,0.34494 -0.0374,0.13797 -0.0307,0.18858 0.0187,0.15175 l 0,0 z m -12.91372,0.22077 c 0.0494,0.092 0.0682,0.20697 0.0561,0.34492 -0.0134,0.13799 0,0.25297 0.0561,0.34492 0.97038,-0.0552 1.94689,-0.0782 2.92983,-0.0689 0.98281,0.009 1.95946,0.0184 2.92984,0.0277 0.97036,0.009 1.93459,0.0138 2.89254,0.0138 0.95795,1e-5 1.92204,-0.0459 2.89255,-0.13798 l 0,-0.4967 c -1.91589,-0.0736 -3.8505,-0.11955 -5.8038,-0.13796 -1.95318,-0.0184 -3.9375,0.0184 -5.95297,0.11034 l 0,0 z m 12.01793,0.52429 c 0,-0.0919 0,-0.20695 -0.0187,-0.34493 -0.0134,-0.13796 -0.0561,-0.18855 -0.13098,-0.15178 0,0.0552 0,0.16099 0.0186,0.31734 0.0134,0.15638 0.0561,0.21617 0.13099,0.17937 l 0,0 z m 1.30639,0.11033 c 0,-0.0919 0,-0.17933 -0.0187,-0.26214 -0.0134,-0.0828 -0.0561,-0.12415 -0.13098,-0.12417 0,0.0552 0,0.13338 -0.0187,0.23454 -0.0134,0.10125 0.0428,0.1518 0.16788,0.15177 l 0,0 z M -549.35451,71.93 c 0.1243,-0.25754 0.18658,-0.55186 0.18658,-0.88303 0,-0.3311 0,-0.61624 0,-0.85541 -0.0749,0.14719 -0.1243,0.40933 -0.14916,0.78644 -0.0254,0.37713 -0.0374,0.69446 -0.0374,0.952 l 0,0 z m -13.02573,-1.79364 c -0.0495,0.092 -0.0614,0.1886 -0.0374,0.28976 0.0254,0.10123 0.0374,0.22537 0.0374,0.37252 0.97051,-0.0184 1.98432,-0.0322 3.04184,-0.0414 1.05752,-0.009 2.09634,-0.0184 3.11655,-0.0276 1.0201,-0.009 2.00303,-0.0184 2.94842,-0.0276 0.94551,-0.009 1.79144,-0.0322 2.53807,-0.069 l 0,-0.38633 c -1.56756,-0.0736 -3.37772,-0.115 -5.43061,-0.12417 -2.05263,-0.009 -4.1241,-0.005 -6.21427,0.0138 l 0,0 z m 5.37449,0.77265 c -0.52236,-0.0184 -1.07611,0.0184 -1.66087,0.11033 -0.58464,0.092 -1.13825,0.138 -1.66073,0.13798 -0.39818,0.0369 -0.79008,0.0322 -1.17582,-0.0138 -0.3856,-0.046 -0.69049,0.0322 -0.91436,0.23454 0.19915,0.1472 0.39818,0.20699 0.59732,0.17936 0.19889,-0.0275 0.39791,-0.0414 0.59706,-0.0414 1.64215,-0.0367 3.36518,-0.0229 5.16919,0.0414 1.80387,0.0644 3.56444,0.0782 5.28117,0.0414 0,-0.0919 0,-0.18855 0,-0.28974 0,-0.10113 0.0134,-0.22534 0.0374,-0.37253 -1.04509,0.0369 -2.07147,0.046 -3.07926,0.0277 -1.00767,-0.0184 -2.07134,-0.0367 -3.19113,-0.0552 l 0,0 z m 4.92671,0.96579 c -0.64692,-0.0184 -1.41827,-0.046 -2.31407,-0.0828 -0.89579,-0.0367 -1.74171,-0.0367 -2.53794,0 -0.79621,-0.0184 -1.71058,-0.0322 -2.74311,-0.0413 -1.03279,-0.009 -1.94716,0.0322 -2.74337,0.12418 0.0494,0.1472 0.0614,0.32196 0.0374,0.52431 -0.0254,0.20236 0,0.37712 0.0749,0.52427 1.36841,0.0369 2.84897,0.0506 4.44153,0.0414 1.59229,-0.009 3.24701,-0.0229 4.96374,-0.0414 0.32359,3e-5 0.69049,0.0138 1.10123,0.0414 0.41047,0.0276 0.77736,-0.005 1.10097,-0.0966 -0.0254,-0.0919 -0.0869,-0.16095 -0.18661,-0.20697 -0.0989,-0.046 -0.21157,-0.0782 -0.33588,-0.0966 -0.1243,-0.0184 -0.2426,-0.0275 -0.3546,-0.0277 -0.11227,2e-5 -0.20529,2e-5 -0.28002,0 -1.64214,-0.0736 -3.26573,-0.11956 -4.87058,-0.13798 -1.60486,-0.0184 -3.02941,0.009 -4.27352,0.0828 -0.19901,3e-5 -0.43547,0.0138 -0.70907,0.0414 -0.27373,0.0277 -0.47275,-0.0322 -0.59719,-0.17935 0.0749,-0.14714 0.21159,-0.21153 0.41047,-0.19316 0.19916,0.0184 0.36089,0.0277 0.48531,0.0277 0.82095,-0.0367 1.61116,-0.0552 2.36994,-0.0552 0.75893,3e-5 1.524,0.009 2.29535,0.0277 0.77136,0.0184 1.56141,0.0369 2.37006,0.0552 0.80865,0.0184 1.68573,0.0369 2.63125,0.0552 0.12429,0.0184 0.29859,0.0322 0.5226,0.0413 0.22388,0.009 0.41047,-0.0322 0.55977,-0.12418 -0.0254,-0.11033 -0.0868,-0.18853 -0.18658,-0.23456 -0.0989,-0.046 -0.21761,-0.0736 -0.35461,-0.0828 -0.13674,-0.009 -0.28603,-0.009 -0.44776,0 -0.16187,0.009 -0.30488,0.0139 -0.42933,0.0138 l 0,0 z m -11.94335,0.63467 c 0,0.0552 0,0.1288 -0.0187,0.22077 -0.0134,0.0919 0.0815,0.1196 0.28003,0.0828 0,-0.0919 -0.0187,-0.23913 -0.0561,-0.44152 -0.0374,-0.20234 -0.0441,-0.37711 -0.0187,-0.52429 0,0.0552 0,0.1334 0,0.23454 0,0.10125 0,0.1978 0,0.28975 0,0.092 -0.0134,0.15639 -0.0374,0.19316 -0.0254,0.0369 -0.0749,0.0184 -0.14929,-0.0552 l 0,0 z m 14.7053,2.12477 c 0.0254,-0.3495 0.0561,-0.75883 0.0935,-1.22794 0.0374,-0.46909 0,-0.8968 -0.13099,-1.28313 -0.0241,0.38633 -0.0374,0.82783 -0.0374,1.32453 0,0.4967 0.0254,0.89222 0.0749,1.18654 l 0,0 z m -13.02572,-1.40731 c 0,0.0919 0,0.18398 0.0187,0.27595 0.0134,0.092 0.0442,0.15639 0.0935,0.19315 0.92067,0.0369 1.88489,0.046 2.89255,0.0276 1.0078,-0.0184 2.00933,-0.0184 3.00455,0 -0.0749,0.0736 -0.16802,0.115 -0.27988,0.12419 -0.11228,0.009 -0.23017,0.009 -0.35461,0 -0.12429,-0.009 -0.24272,-0.0138 -0.35445,-0.0138 -0.11229,1e-5 -0.18059,0.0184 -0.20531,0.0552 1.36841,0.0369 2.57522,0.0598 3.62032,0.069 1.04496,0.009 2.15221,-0.0322 3.32159,-0.12418 0,-0.0552 0,-0.17015 -0.0187,-0.34494 -0.0134,-0.17474 -0.0815,-0.28971 -0.2053,-0.34491 -1.11967,1e-5 -2.16476,0.005 -3.13499,0.0138 -0.97051,0.009 -1.91602,0.0184 -2.83668,0.0276 -0.92066,0.009 -1.83502,0.0184 -2.74325,0.0277 -0.90821,0.009 -1.84743,0.0138 -2.81782,0.0138 l 0,0 z m -1.71687,0.63467 0.26117,0 c -0.0989,-0.0552 -0.14302,-0.0966 -0.13099,-0.12417 0.0134,-0.0275 0.0441,-0.0597 0.0935,-0.0966 0.0495,-0.0367 0.0989,-0.0828 0.1493,-0.13799 0.0494,-0.0552 0.0615,-0.12876 0.0374,-0.22076 -0.0749,-0.0367 -0.13674,-0.0736 -0.1866,-0.11034 -0.0494,-0.0367 -0.1243,-0.0276 -0.22387,0.0277 -0.0495,0.14718 -0.0749,0.24377 -0.0749,0.28973 0,0.046 0.0254,0.17019 0.0749,0.37253 l 0,0 z m 0.67177,-0.19316 c 0.0495,-0.0919 0.0749,-0.15174 0.0749,-0.17937 0,-0.0275 0.0628,-0.0873 0.18673,-0.17936 -0.0749,3e-5 -0.14316,-0.005 -0.2053,-0.0138 -0.0628,-0.009 -0.13099,-0.0138 -0.20531,-0.0138 0,0.0552 0,0.12419 0.0186,0.20695 0.0134,0.0828 0.0561,0.14261 0.13099,0.17937 l 0,0 z m 10.18918,0.4967 c -0.72163,2e-5 -1.44312,-0.009 -2.16462,-0.0276 -0.72176,-0.0184 -1.44326,-0.0322 -2.16476,-0.0414 -0.72163,-0.009 -1.44326,-0.005 -2.16489,0.0138 -0.7215,0.0184 -1.443,0.0828 -2.16463,0.19316 0.12429,0 0.22402,0.0414 0.29859,0.12417 0.0749,0.0828 0.14931,0.17019 0.22389,0.26215 1.76659,-0.0736 3.58302,-0.0828 5.44919,-0.0277 1.86603,0.0552 3.65763,0.0644 5.37447,0.0277 0,-0.0919 0,-0.18856 0.0187,-0.28974 0.0134,-0.10113 0.0186,-0.19775 0.0186,-0.28974 -0.52249,1e-5 -1.00781,0.0138 -1.45557,0.0414 -0.44789,0.0276 -0.87081,0.0322 -1.26897,0.0138 l 0,0 z m -10.89823,0.0828 c -0.10025,1.32453 -0.10561,2.58927 -0.0187,3.79422 0.0869,1.20495 0.15544,2.3869 0.2053,3.54585 0.12432,1e-5 0.24875,1e-5 0.3732,0 0.12429,1e-5 0.21156,-0.0184 0.26115,-0.0552 -0.19888,-0.0184 -0.34203,-0.0229 -0.42904,-0.0138 -0.0868,0.009 -0.15558,-0.0597 -0.20531,-0.20697 0.12432,-0.12876 0.29847,-0.18394 0.52248,-0.16557 -0.0749,-0.16555 -0.0749,-0.28051 0,-0.34492 0.0749,-0.0644 0.12431,-0.14254 0.1493,-0.23455 -0.0495,-0.0552 -0.13098,-0.0828 -0.2426,-0.0828 -0.11227,1e-5 -0.2053,-0.046 -0.27987,-0.13798 0.0749,-0.092 0.18029,-0.13796 0.31717,-0.13796 0.13688,0 0.2053,-0.046 0.2053,-0.13798 -0.0495,-0.0919 -0.0935,-0.18394 -0.13098,-0.27594 -0.0374,-0.0919 -0.11763,-0.16555 -0.24273,-0.22074 0.0254,-0.092 0.0815,-0.15178 0.16801,-0.17937 0.0869,-0.0276 0.13098,-0.0873 0.13098,-0.17937 -0.0494,-0.64386 -0.0441,-1.26931 0.0187,-1.87641 0.0615,-0.60706 0,-1.18654 -0.16801,-1.73844 0.14929,-0.20234 0.16186,-0.42309 0.0374,-0.66226 -0.0749,3e-5 -0.16787,0.009 -0.27987,0.0275 -0.11229,0.0184 -0.19289,0.009 -0.24261,-0.0275 l 0,-0.19315 c 0.0495,-0.0919 0.11762,-0.11957 0.20531,-0.0828 0.0869,0.0369 0.1926,0.0277 0.31717,-0.0276 -0.0749,-0.0919 -0.13687,-0.15633 -0.18672,-0.19316 -0.0495,-0.0367 -0.0614,-0.12876 -0.0374,-0.27594 -0.0749,2e-5 -0.16172,0.005 -0.26116,0.0138 -0.10024,0.009 -0.16174,0.0322 -0.1866,0.069 l 0,0 z m 12.68982,0.74504 c -0.92078,-0.0552 -1.79159,-0.0873 -2.61266,-0.0966 -0.82107,-0.009 -1.62356,-0.009 -2.40734,0 -0.78393,0.009 -1.58,0.0229 -2.38878,0.0414 -0.80865,0.0184 -1.64844,0.0369 -2.51923,0.0552 -0.0749,-0.0552 -0.1056,-0.0414 -0.0935,0.0413 0.0134,0.0828 -0.0441,0.0966 -0.16787,0.0413 -0.29874,1e-5 -0.5599,-0.0367 -0.78392,-0.11046 0,0.092 0,0.17019 0,0.23457 0,0.0644 -0.0133,0.14257 -0.0374,0.23455 0.79621,0.0736 1.58628,0.092 2.36993,0.0552 0.78391,-0.0367 1.59884,-0.0275 2.44477,0.0277 1.11968,0.0369 2.17091,0.0277 3.15385,-0.0277 0.98281,-0.0552 1.93447,-0.0644 2.85512,-0.0275 0.1493,-0.0367 0.34832,-0.0414 0.59719,-0.0138 0.24874,0.0277 0.41048,-0.0322 0.48519,-0.17935 0,-0.20236 -0.11762,-0.29895 -0.3546,-0.28975 -0.23644,0.009 -0.41675,0.0138 -0.54106,0.0138 l 0,0 z m -0.18672,0.66227 c -0.19915,-0.0184 -0.41675,-0.0277 -0.6532,-0.0277 -0.23644,2e-5 -0.45403,2e-5 -0.6532,0 -1.31856,0.0736 -2.67466,0.10579 -4.06808,0.0966 -1.3934,-0.009 -2.91125,0.005 -4.5534,0.0414 -0.1243,2e-5 -0.26745,-0.009 -0.42918,-0.0277 -0.16173,-0.0184 -0.28003,0.046 -0.35461,0.19316 0,0.0919 0.0989,0.15178 0.29847,0.17936 0.19914,0.0277 0.36088,0.0413 0.48532,0.0413 0.1243,1e-5 0.28604,-0.0184 0.48518,-0.0552 0.19903,-0.0367 0.43546,-0.046 0.70921,-0.0277 0.64692,-0.0367 1.39326,-0.0229 2.23921,0.0413 0.84608,0.0644 1.66715,0.0782 2.46336,0.0413 0.64691,0.0184 1.33126,0.0184 2.05289,0 0.72149,-0.0184 1.34356,-0.0184 1.86602,0 0.27374,1e-5 0.54119,1e-5 0.80249,0 0.26132,1e-5 0.42921,-0.10113 0.50391,-0.30352 -0.1243,-0.14716 -0.30488,-0.21616 -0.54132,-0.20697 -0.23631,0.009 -0.45405,0.0138 -0.65307,0.0138 l 0,0 z m 2.46336,1.18654 c 0,-0.0367 0,-0.13336 0,-0.28973 0,-0.15636 -0.0374,-0.28054 -0.11228,-0.37253 0.0749,0.14719 0.0815,0.28515 0.0188,0.4139 -0.0628,0.1288 -0.0307,0.21159 0.0935,0.24836 l 0,0 z m -4.92658,-0.4691 c -0.57248,0.0369 -1.2131,0.0506 -1.92216,0.0414 -0.70921,-0.009 -1.43071,-0.0184 -2.16478,-0.0277 -0.73405,-0.009 -1.45556,-0.0184 -2.16476,-0.0277 -0.70906,-0.009 -1.3374,0.005 -1.88488,0.0413 -0.0749,0.1472 -0.11762,0.26219 -0.13098,0.34494 -0.0134,0.0828 -0.0186,0.19778 -0.0186,0.34493 2.04031,-0.0552 4.0122,-0.0782 5.91566,-0.069 1.90345,0.009 3.90034,-0.0229 5.99025,-0.0966 0,-0.0919 0,-0.18853 -0.0187,-0.28975 -0.0134,-0.10111 -0.0441,-0.19773 -0.0935,-0.28973 -0.72164,0.0367 -1.34369,0.0413 -1.86617,0.0138 -0.52261,-0.0275 -1.06981,-0.0229 -1.64214,0.0138 l 0,0 z m -8.28573,0.99341 c -0.0254,0.0919 -0.0307,0.21615 -0.0187,0.3725 0.0134,0.15639 0.0562,0.26216 0.13099,0.31734 0.87081,-0.12876 1.79159,-0.20235 2.76196,-0.22076 0.97038,-0.0184 1.95946,-0.0229 2.96712,-0.0138 1.00781,0.009 2.02162,0.0184 3.04184,0.0276 1.0201,0.009 2.01546,-0.0138 2.98585,-0.0689 0,-0.0919 0,-0.18396 0.0187,-0.27594 0.0134,-0.0919 0.0187,-0.15639 0.0187,-0.19317 -2.04033,-0.0735 -4.01208,-0.0828 -5.91567,-0.0276 -1.90332,0.0552 -3.90021,0.0828 -5.99025,0.0828 l 0,0 z m 3.50831,0.77262 c -0.47275,-0.0184 -0.97666,-0.0368 -1.51156,-0.0552 -0.53504,-0.0184 -1.03881,0.0459 -1.51157,0.19316 0.97038,-0.0368 1.93447,-0.0323 2.89254,0.0139 0.95795,0.0459 1.90345,0.10579 2.83641,0.17938 0.9332,0.0736 1.87859,0.13338 2.83667,0.17934 0.95794,0.0459 1.92203,0.0506 2.89254,0.0138 0.0254,-0.0919 0.0374,-0.18394 0.0374,-0.27594 0,-0.0919 0,-0.16555 0,-0.22075 -1.44313,-0.0552 -2.84282,-0.0828 -4.19881,-0.0828 -1.3561,1e-5 -2.78053,0.0184 -4.2735,0.0552 l 0,0 z m 4.77742,0.74506 c -0.57248,-0.0552 -1.15697,-0.12417 -1.75429,-0.20696 -0.59706,-0.0828 -1.25641,-0.13337 -1.97804,-0.15178 -0.72163,-0.0184 -1.44941,-0.005 -2.18349,0.0413 -0.73405,0.0459 -1.49912,0.0322 -2.29533,-0.0413 0,0.14719 -0.0134,0.29895 -0.0374,0.45531 -0.0253,0.1564 0.0254,0.23455 0.14929,0.23455 1.76658,-0.0551 3.56431,-0.0229 5.39319,0.0966 1.82875,0.11958 3.68876,0.12418 5.57979,0.0137 0.0749,2e-5 0.16159,0.005 0.2613,0.0138 0.0989,0.009 0.19273,0.005 0.27988,-0.0138 0.0869,-0.0184 0.15545,-0.0552 0.20518,-0.11033 0.0495,-0.0551 0.0628,-0.14714 0.0374,-0.27593 -0.64693,-0.0919 -1.26912,-0.11957 -1.86617,-0.0828 -0.5972,0.0369 -1.1944,0.0459 -1.79145,0.0276 l 0,0 z m 2.87382,0.74503 c -1.717,-0.0367 -3.53318,-0.0552 -5.44906,-0.0552 -1.91614,1e-5 -3.80704,0.009 -5.67321,0.0275 l 0,0.46911 c 1.71674,10e-6 3.42746,-0.009 5.13203,-0.0275 1.7043,-0.0184 3.3403,-0.0367 4.90786,-0.0552 0.17416,2e-5 0.37319,0.0138 0.59708,0.0413 0.22399,0.0276 0.43559,0.0413 0.63462,0.0413 0.19901,1e-5 0.36074,-0.0322 0.48517,-0.0966 0.1243,-0.0644 0.17416,-0.17938 0.1493,-0.34494 -0.0254,-0.0185 -0.0868,-0.0367 -0.18672,-0.0552 -0.0989,-0.0185 -0.19902,-0.0276 -0.29847,-0.0276 -0.0989,2e-5 -0.18031,0.009 -0.24273,0.0276 -0.0615,0.0185 -0.0815,0.0368 -0.0561,0.0552 l 0,0 z m -11.0104,0.82784 c -0.0749,0.092 -0.0989,0.18857 -0.0749,0.28974 0.0254,0.10112 0.0374,0.19778 0.0374,0.28973 1.96575,-0.0919 3.94378,-0.13796 5.93453,-0.13797 1.99046,1e-5 3.94364,-0.10113 5.85953,-0.30353 -0.0494,-0.0552 -0.0494,-0.12876 0,-0.22076 0.0495,-0.0921 0.0134,-0.11957 -0.11228,-0.0828 -1.09482,0.0369 -2.11505,0.0506 -3.06042,0.0413 -0.94566,-0.009 -1.88487,-0.0185 -2.81796,-0.0276 -0.93323,-0.009 -1.86617,-0.005 -2.79924,0.0138 -0.93309,0.0185 -1.92217,0.0644 -2.96727,0.13799 l 0,0 z m 3.88164,0.77264 c -1.36841,-0.0367 -2.67468,0.0276 -3.91893,0.19315 0.4729,0.0736 1.02025,0.0873 1.64216,0.0413 0.62218,-0.046 1.16952,-0.0599 1.64241,-0.0413 0.84594,0.0185 1.59859,0.0322 2.25793,0.0413 0.65948,0.009 1.38725,0.0229 2.18348,0.0413 0.64677,0.0184 1.31869,0.0506 2.01545,0.0966 0.69651,0.046 1.36842,-0.0322 2.01535,-0.23454 l 0,-0.30354 c -1.19439,-0.0185 -2.46952,-0.0138 -3.8255,0.0138 -1.35612,0.0276 -2.69352,0.0783 -4.01235,0.15178 l 0,0 z m 9.10681,0.9382 c 0,-0.0552 0.0186,-0.13334 0.0561,-0.23456 0.0374,-0.10112 0,-0.15175 -0.13098,-0.15176 -0.0989,0.0367 -0.14302,0.11034 -0.131,0.22075 0.0134,0.11033 0.0802,0.16559 0.20518,0.16557 l 0,0 z m -12.91373,-0.35872 c 0,0.14717 -0.0307,0.30813 -0.0935,0.4829 -0.0628,0.17476 -0.0307,0.30814 0.0935,0.40011 0.62206,-0.0736 1.32497,-0.12878 2.10876,-0.16558 0.78379,-0.0367 1.59871,-0.0597 2.44465,-0.069 0.84607,-0.009 1.68572,-0.0138 2.51923,-0.0138 0.83351,0 1.61113,-0.0184 2.3329,-0.0552 0.14917,-0.0184 0.38548,-0.0229 0.70906,-0.0138 0.32346,0.009 0.62821,0.005 0.91438,-0.0138 0.28617,-0.0185 0.51005,-0.0643 0.67177,-0.13799 0.16174,-0.0736 0.18046,-0.19313 0.0561,-0.35872 -1.89115,-0.0367 -3.81319,-0.0783 -5.7665,-0.12418 -1.95319,-0.046 -3.94992,-0.0229 -5.99025,0.0689 l 0,0 z m -1.71687,0.93821 c 0.0749,-0.0921 0.11763,-0.20696 0.13099,-0.34494 0.0134,-0.13797 0.0187,-0.30811 0.0187,-0.51049 l -0.1493,0 c -0.0495,0.14718 -0.0615,0.30355 -0.0374,0.46911 0.0254,0.16556 0.0374,0.29433 0.0374,0.38632 l 0,0 z m 0.52248,-0.0552 c -0.0494,-0.0919 -0.0494,-0.18396 0,-0.27594 0.0495,-0.0919 0.0134,-0.16556 -0.11226,-0.22075 0.0254,0.0736 0.0307,0.14258 0.0187,0.20694 -0.0134,0.0644 -0.0307,0.11501 -0.0561,0.15179 -0.0254,0.0369 -0.0307,0.0689 -0.0186,0.0966 0.0134,0.0276 0.0682,0.0413 0.16788,0.0413 l 0,0 z m 14.07082,0.44153 c -0.0494,-0.092 -0.0441,-0.20237 0.0187,-0.33115 0.0628,-0.12877 0.0307,-0.21154 -0.0935,-0.24834 0,0.092 -0.0186,0.19776 -0.0561,0.31732 -0.0374,0.11959 0,0.20696 0.13099,0.26217 l 0,0 z m -2.83653,-0.5519 c -0.62205,0.0369 -1.32497,0.0644 -2.10876,0.0828 -0.78379,0.0184 -1.58628,0.0367 -2.40722,0.0552 -0.82121,0.0185 -1.63614,0.0413 -2.44479,0.0689 -0.80864,0.0276 -1.54898,0.0689 -2.22063,0.12419 -0.12429,0 -0.2986,-0.009 -0.52248,-0.0276 -0.22414,-0.0185 -0.34845,0.0736 -0.37331,0.27594 0.0749,0.0921 0.16802,0.14259 0.27988,0.15178 0.11229,0.009 0.24274,0.005 0.39189,-0.0138 0.14931,-0.0185 0.30489,-0.0367 0.46662,-0.0552 0.16159,-0.0185 0.30475,-0.0276 0.42905,-0.0276 0.77135,-0.0367 1.59256,-0.046 2.46336,-0.0276 0.87092,0.0184 1.74801,0.0322 2.63137,0.0413 0.88336,0.009 1.75416,0.005 2.61265,-0.0138 0.85824,-0.0185 1.68573,-0.0828 2.48194,-0.19315 0.0749,-0.0919 0.0815,-0.15636 0.0187,-0.19316 -0.0628,-0.0367 -0.0561,-0.10113 0.0186,-0.19316 -0.34844,-0.0185 -0.65319,-0.0276 -0.91436,-0.0276 -0.26131,2e-5 -0.52877,-0.009 -0.8025,-0.0276 l 0,0 z m -11.64476,0.85542 c 0.0495,0.0369 0.11228,0.0506 0.18661,0.0413 0.0749,-0.009 0.13685,-0.0138 0.18657,-0.0138 0,-0.0552 0.0187,-0.10113 0.0561,-0.13797 0.0374,-0.0367 0.0187,-0.0552 -0.0561,-0.0552 -0.0494,0.092 -0.0989,0.10578 -0.14929,0.0413 -0.0494,-0.0644 -0.0374,-0.115 0.0374,-0.15178 -0.1243,-0.0552 -0.1866,-0.0367 -0.1866,0.0552 0,0.092 -0.0253,0.16558 -0.0749,0.22076 l 0,0 z m 10.82354,0.0276 c -0.67163,0 -1.39326,-0.005 -2.16463,-0.0138 -0.77134,-0.009 -1.56142,-0.0138 -2.37006,-0.0138 -0.80864,2e-5 -1.61114,0.0185 -2.40721,0.0552 -0.79623,0.0369 -1.56757,0.0919 -2.31407,0.16556 0,0.0369 0,0.0873 -0.0186,0.15175 -0.0134,0.0644 -0.0187,0.14259 -0.0187,0.23457 2.0156,-0.0185 3.99365,-0.0185 5.93453,0 1.94073,0.0185 3.91891,1e-5 5.93424,-0.0552 0.0989,-0.0368 0.11762,-0.10579 0.0561,-0.20695 -0.0628,-0.10123 -0.0682,-0.22534 -0.0186,-0.37253 -0.52248,0.0369 -1.00153,0.0413 -1.43685,0.0138 -0.43547,-0.0275 -0.82735,-0.0138 -1.17581,0.0413 l 0,0 z m -10.82354,0.24834 c 0.0495,0.4783 0.0749,0.93822 0.0749,1.3797 0,0.44153 0.0615,0.86464 0.1866,1.26936 -0.0254,-0.11034 -0.0254,-0.22997 0,-0.35875 0.0254,-0.12877 0.0562,-0.25754 0.0935,-0.3863 0.0374,-0.12877 0.0561,-0.25755 0.0561,-0.38633 0,-0.12876 -0.0254,-0.23913 -0.0749,-0.33115 0.0749,-0.0919 0.10559,-0.20233 0.0935,-0.33111 -0.0134,-0.12876 -0.0815,-0.23913 -0.2053,-0.33113 0.0494,-0.0551 0.10024,-0.115 0.14929,-0.17937 0.0494,-0.0644 0.0494,-0.17014 0,-0.31733 0,-0.0367 -0.0307,-0.0323 -0.0935,0.0138 -0.0628,0.046 -0.15546,0.0323 -0.2799,-0.0413 l 0,0 z m 12.24209,0.63467 c -0.27387,-0.0185 -0.53518,-0.0276 -0.78393,-0.0276 -0.24887,1e-5 -0.47275,1e-5 -0.6719,0 -1.31857,-0.0368 -2.73082,-0.0873 -4.23596,-0.15176 -1.50542,-0.0643 -2.91754,-0.0323 -4.23623,0.0966 -0.12431,0.0367 -0.28002,0.0506 -0.46662,0.0413 -0.18658,-0.009 -0.25502,0.0598 -0.20529,0.20695 0.59718,0.0552 1.34983,0.10124 2.25818,0.13798 0.9081,0.0369 1.88461,0.0598 2.9297,0.0688 1.04509,0.009 2.09646,0.009 3.15386,0 1.05752,-0.009 2.02174,-0.0323 2.89253,-0.0688 0.0749,0 0.20531,0.009 0.3919,0.0276 0.18658,0.0184 0.27988,-0.046 0.28001,-0.19317 -0.12429,-0.14717 -0.32359,-0.20696 -0.59733,-0.17936 -0.2736,0.0276 -0.51004,0.0413 -0.70892,0.0413 l 0,0 z m -0.67192,0.55186 c -0.1243,1e-5 -0.14301,0.0185 -0.0561,0.0552 0.0868,0.0369 0.0682,0.0552 -0.0561,0.0552 -1.59257,0.0184 -3.20985,0.0138 -4.85201,-0.0138 -1.64214,-0.0275 -3.33416,-0.0598 -5.07601,-0.0966 -0.0254,0.0921 -0.0374,0.19319 -0.0374,0.30356 0,0.11033 0,0.23915 0,0.38631 1.06994,-0.12877 2.12747,-0.19774 3.17256,-0.20696 1.04495,-0.009 2.07146,1e-5 3.07912,0.0276 1.00767,0.0276 2.00291,0.0552 2.98585,0.0828 0.9828,0.0276 1.94701,0.0138 2.89253,-0.0414 -1.2e-4,-0.0552 -1.2e-4,-0.12878 0,-0.22075 -1.2e-4,-0.0919 0.0134,-0.18396 0.0374,-0.27596 -0.39803,-0.0552 -0.75263,-0.0598 -1.06379,-0.0138 -0.31103,0.046 -0.65306,0.0323 -1.02624,-0.0414 l 0,0 z m 2.83654,0.44153 c 0,-0.0368 0.0186,-0.0966 0.0561,-0.17937 0.0374,-0.0828 0.0307,-0.15174 -0.0186,-0.20695 -0.0254,0.092 -0.0495,0.19317 -0.0749,0.30354 -0.0241,0.11034 -0.0134,0.13798 0.0374,0.0828 l 0,0 z m -2.20219,0.4691 c -0.52247,-0.0185 -1.15696,-0.0413 -1.90331,-0.0689 -0.74664,-0.0275 -1.53657,-0.0551 -2.37007,-0.0828 -0.83365,-0.0276 -1.67329,-0.0413 -2.51936,-0.0413 -0.84594,0 -1.62973,0.0276 -2.35136,0.0828 -0.1243,0.0367 -0.28602,0.0552 -0.48518,0.0552 -0.19903,1e-5 -0.38561,0.0138 -0.55976,0.0413 -0.17431,0.0276 -0.31731,0.0736 -0.4292,0.13797 -0.11227,0.0644 -0.15558,0.17017 -0.13098,0.31733 0.97038,-0.0552 1.97817,-0.0783 3.02326,-0.0688 1.04496,0.009 2.09005,0.0229 3.13514,0.0413 1.04496,0.0185 2.07133,0.0367 3.07913,0.0552 1.00752,0.0185 1.97175,0.0276 2.89254,0.0275 -0.0494,-0.0919 -0.0561,-0.17017 -0.0186,-0.23455 0.0374,-0.0644 0.0561,-0.14257 0.0561,-0.23455 -0.19901,10e-6 -0.41688,-0.005 -0.65306,-0.0138 -0.23645,-0.009 -0.4916,-0.0138 -0.76535,-0.0138 l 0,0 z m 0.0749,0.66227 c -0.0494,0.0919 -0.18672,0.12879 -0.41074,0.11034 -0.22387,-0.0184 -0.47275,-0.0275 -0.74635,-0.0275 -0.82107,-0.0185 -1.62357,-0.0368 -2.40735,-0.0552 -0.78379,-0.0185 -1.56758,-0.0276 -2.35149,-0.0276 -0.78366,0 -1.58,0.0185 -2.38852,0.0552 -0.80863,0.0369 -1.64856,0.11034 -2.51936,0.22078 0,0.11033 0.0682,0.18393 0.20531,0.22074 0.13687,0.0367 0.29231,0.0506 0.4666,0.0413 0.17403,-0.009 0.34832,-0.0275 0.52249,-0.0552 0.17402,-0.0275 0.29845,-0.0599 0.37317,-0.0966 0.67191,0.0552 1.44941,0.10578 2.33279,0.15176 0.88335,0.046 1.80386,0.0783 2.76181,0.0966 0.95794,0.0185 1.90973,0.0276 2.85525,0.0276 0.94551,0 1.81631,-0.0185 2.61265,-0.0552 -1.2e-4,-0.0367 0,-0.11501 -0.0187,-0.23456 -0.0134,-0.11956 -0.0441,-0.19775 -0.0935,-0.23454 -0.27374,-0.0185 -0.50991,-0.009 -0.70906,0.0276 -0.19903,0.0369 -0.36076,-0.0185 -0.48507,-0.16554 l 0,0 z m 0.63435,1.26932 0.11229,0 c -0.39818,-0.0919 -0.84607,-0.15636 -1.34369,-0.19315 -0.49762,-0.0367 -0.92053,-0.0828 -1.26897,-0.13796 -0.44778,0.0368 -0.97666,0.046 -1.58629,0.0276 -0.60949,-0.0185 -1.23783,-0.0413 -1.88474,-0.0689 -0.64692,-0.0276 -1.30011,-0.0551 -1.95946,-0.0828 -0.65948,-0.0276 -1.28754,-0.0323 -1.88488,-0.0138 -0.19888,0.14716 -0.43533,0.23915 -0.70906,0.27594 -0.27374,0.0369 -0.47276,0.12877 -0.5972,0.27593 0.89579,0.0185 1.84131,0.0506 2.83667,0.0966 0.99524,0.046 1.99675,0.0873 3.00442,0.12419 1.00766,0.0367 1.99675,0.0598 2.96711,0.0689 0.97052,0.009 1.86632,-0.0138 2.68725,-0.0689 -0.1493,-0.0185 -0.3669,-0.046 -0.65305,-0.0828 -0.28618,-0.0367 -0.58476,-0.0643 -0.89566,-0.0828 -0.31103,-0.0185 -0.63463,-0.0275 -0.97051,-0.0275 -0.33603,0 -0.62834,0.009 -0.87709,0.0275 -0.10024,0 -0.19902,0.009 -0.29859,0.0276 -0.0989,0.0185 -0.19287,0.0275 -0.27989,0.0275 -0.0868,0 -0.16173,-0.0185 -0.22388,-0.0552 -0.0628,-0.0367 -0.0935,-0.10113 -0.0935,-0.19316 0.34845,-0.0185 0.65947,-0.0229 0.93322,-0.0138 0.27346,0.009 0.54119,0.0184 0.80235,0.0276 0.26118,0.009 0.52249,0.009 0.78366,0 0.26143,-0.009 0.55376,-0.0322 0.87722,-0.0688 0.12429,0.0551 0.14301,0.10112 0.0561,0.13797 -0.0869,0.0367 -0.0682,0.0552 0.0561,0.0552 0,-0.12876 0.0374,-0.16558 0.11228,-0.11034 0.0749,0.0552 0.17402,0.0644 0.29846,0.0275 l 0,0 z m -0.29845,0.57949 c -0.92066,-0.0185 -1.88488,-0.0323 -2.89269,-0.0414 -1.00765,-0.009 -2.01546,-0.0185 -3.02313,-0.0276 -1.00765,-0.009 -1.98432,-0.0185 -2.92982,-0.0275 -0.94565,-0.009 -1.82887,-0.0229 -2.64995,-0.0413 l 0,0.57947 c 2.23947,-0.0551 4.4414,-0.0551 6.60615,0 2.16477,0.0552 4.22994,0.0737 6.19569,0.0552 -0.0989,-0.0552 -0.14929,-0.18397 -0.14929,-0.38631 -0.19902,-0.0367 -0.39189,-0.0644 -0.57848,-0.0828 -0.18672,-0.0185 -0.3796,-0.0276 -0.57848,-0.0276 l 0,0 z m 1.82874,0.4967 c 0.1243,0.0185 0.39189,0.0414 0.80236,0.0688 0.4106,0.0276 0.75277,-0.005 1.02651,-0.0966 -0.27374,-0.11036 -0.52262,-0.20698 -0.7465,-0.28976 -0.22388,-0.0828 -0.49761,-0.12417 -0.8212,-0.12417 0,0.14717 -0.0307,0.24835 -0.0935,0.30355 -0.0628,0.0552 -0.11896,0.10111 -0.168,0.13796 l 0,0 z m -14.2574,0.0552 0.14929,-0.11033 c 0,-0.0367 0,-0.0921 0.0187,-0.16557 0.0134,-0.0736 -0.0441,-0.11033 -0.168,-0.11033 0,0.0367 -0.0307,0.0828 -0.0935,0.13796 -0.0628,0.0552 -0.0307,0.13798 0.0935,0.24836 l 0,0 z m 14.51857,0.27594 c -0.0989,0.12877 -0.11763,0.23456 -0.0561,0.31733 0.0628,0.0828 0.0682,0.17018 0.0186,0.26215 0.84595,0.0185 1.67971,0.0413 2.50067,0.0689 0.82119,0.0276 1.55512,-0.005 2.20203,-0.0966 -0.64691,-0.25754 -1.37468,-0.4369 -2.18332,-0.53808 -0.80865,-0.10113 -1.63601,-0.10579 -2.48208,-0.0138 l 0,0 z m -13.5855,-0.0828 c 0.0494,0.092 0.0615,0.20235 0.0374,0.33113 -0.0253,0.12877 -0.0134,0.23914 0.0374,0.33112 2.18949,-0.0552 4.40398,-0.0689 6.64346,-0.0413 2.23933,0.0276 4.25479,0.0323 6.04638,0.0138 0,-0.0922 -0.0254,-0.17476 -0.0749,-0.24835 -0.0494,-0.0736 -0.0628,-0.18396 -0.0374,-0.33114 -2.01545,-0.0367 -4.08692,-0.0689 -6.21439,-0.0966 -2.12734,-0.0276 -4.27338,-0.0138 -6.43815,0.0413 l 0,0 z m -1.34356,0.24833 c -0.24888,-0.11034 -0.50389,-0.16556 -0.7652,-0.16556 -0.26117,0 -0.51633,0.0369 -0.76508,0.11034 -0.24886,0.0736 -0.48532,0.15635 -0.70919,0.24834 -0.22388,0.092 -0.43547,0.17476 -0.63436,0.24835 0.52235,0.0185 1.10711,0.0138 1.75403,-0.0138 0.64691,-0.0275 1.23167,-0.0322 1.75415,-0.0138 0,-0.092 0.0187,-0.19775 0.0561,-0.31733 0.0374,-0.11957 0.0307,-0.20694 -0.0186,-0.26214 -0.1989,-0.0552 -0.32961,-0.0506 -0.39177,0.0138 -0.0628,0.0644 -0.15546,0.115 -0.27989,0.15177 l 0,0 z m -3.91893,0.0552 -0.14929,0.0552 c 0.1243,0.0184 0.24875,0.009 0.37318,-0.0276 0.12432,-0.0369 0.22388,-0.0828 0.2986,-0.13797 -0.12431,0 -0.21145,0.005 -0.2613,0.0138 -0.0494,0.009 -0.13674,0.0414 -0.26119,0.0966 l 0,0 z m -2.50063,0.0276 c 0,0.0921 0.0307,0.17018 0.0935,0.23457 0.0628,0.0644 0.11763,0.115 0.168,0.15176 0.0749,-0.0369 0.14931,-0.0644 0.22389,-0.0828 0.0749,-0.0185 0.17429,-0.0552 0.29873,-0.11034 0.19889,-0.0369 0.42303,-0.0783 0.67177,-0.12418 0.24887,-0.046 0.37319,-0.0873 0.37319,-0.12418 -0.27374,0.0369 -0.59707,0.046 -0.97038,0.0276 -0.37331,-0.0185 -0.65935,-0.009 -0.85837,0.0276 l 0,0 z m 26.90982,0.68986 c -0.97038,-0.0552 -1.94704,-0.0736 -2.92983,-0.0552 -0.98294,0.0185 -1.83502,0.046 -2.55666,0.0828 l 0,0.27594 c 2.13991,0.0368 4.31709,0.009 6.53158,-0.0828 -1.3e-4,-0.11032 -0.0495,-0.19315 -0.14943,-0.24834 -0.0989,-0.0552 -0.20517,-0.0873 -0.31705,-0.0966 -0.11227,-0.009 -0.23029,0 -0.3546,0.0276 -0.1243,0.0276 -0.19915,0.0598 -0.22401,0.0966 l 0,0 z m -8.09915,-0.0276 c -0.79621,0 -1.65471,-0.005 -2.57523,-0.0138 -0.92065,-0.009 -1.85989,-0.0229 -2.81783,-0.0414 -0.95794,-0.0185 -1.91588,-0.0368 -2.87383,-0.0552 -0.95807,-0.0185 -1.86002,-0.0276 -2.70595,-0.0276 0,0.0921 0,0.18398 -0.0187,0.27596 -0.0134,0.0922 -0.0187,0.16558 -0.0187,0.22075 2.11503,-0.0184 4.30467,-0.0322 6.56886,-0.0414 2.26434,-0.009 4.35439,-0.0413 6.27027,-0.0966 -0.0749,-0.12879 -0.18658,-0.21157 -0.33588,-0.24834 -0.14929,-0.0367 -0.31103,-0.0552 -0.48519,-0.0552 -0.17417,2e-5 -0.35461,0.0138 -0.54119,0.0413 -0.18658,0.0276 -0.34217,0.0413 -0.46662,0.0413 l 0,0 z m -11.53275,0.35874 c 0.0254,-0.16558 -0.0494,-0.29435 -0.22401,-0.38632 -0.34831,0.0368 -0.78992,0.046 -1.32483,0.0276 -0.53504,-0.0185 -1.08239,-0.0276 -1.64216,-0.0276 -0.56004,0 -1.09494,0.0322 -1.60499,0.0966 -0.51004,0.0644 -0.91449,0.21615 -1.21296,0.45531 0.49761,-0.0184 1.03252,-0.0322 1.60486,-0.0414 0.5722,-0.009 1.13824,-0.0229 1.69814,-0.0413 0.55977,-0.0185 1.07624,-0.0322 1.549,-0.0414 0.47262,-0.009 0.85837,-0.0229 1.15695,-0.0413 l 0,0 z m 14.10799,0.35872 c 0.64691,0.0736 1.30012,0.115 1.95945,0.12417 0.65948,0.009 1.31255,0.0229 1.95947,0.0413 0.94564,0.0367 1.81644,-0.046 2.61265,-0.24834 -0.92065,-0.11034 -1.99047,-0.14716 -3.20971,-0.11034 -1.21912,0.0369 -2.32649,0.10123 -3.32186,0.19317 l 0,0 z m -3.91893,-0.0828 c -1.49285,0.0369 -2.93597,0.046 -4.32938,0.0276 -1.39341,-0.0185 -2.77439,-0.0185 -4.1428,0 -0.19903,0.0552 -0.42919,0.0736 -0.69049,0.0552 -0.26117,-0.0184 -0.42918,0.0185 -0.5039,0.11034 1.26897,0.0369 2.56909,0.0322 3.90021,-0.0138 1.33125,-0.046 2.69352,-0.0783 4.08692,-0.0966 0.34832,0 0.72778,0.0138 1.13852,0.0413 0.41048,0.0276 0.82722,0.046 1.25013,0.0552 0.42302,0.009 0.8335,0.009 1.23168,0 0.39805,-0.009 0.75892,-0.0507 1.08238,-0.1242 -0.39804,-0.11034 -0.85223,-0.15635 -1.36227,-0.13797 -0.51018,0.0185 -1.06366,0.046 -1.661,0.0828 l 0,0 z m -17.35512,-0.13797 c 0.0494,-0.0369 0.13099,-0.069 0.24273,-0.0966 0.11228,-0.0275 0.20518,-0.0873 0.27976,-0.17936 -0.12431,0 -0.26118,0.0229 -0.41047,0.0689 -0.1493,0.046 -0.1866,0.115 -0.11228,0.20694 l 0,0 z m 26.23806,0.60708 c -0.72149,0.0369 -1.524,0.0413 -2.40724,0.0138 -0.88335,-0.0276 -1.68571,0.005 -2.40734,0.0966 -0.0749,0.0736 -0.0868,0.11958 -0.0374,0.13796 0.0495,0.0185 0.11227,0.0276 0.18658,0.0276 0.0749,0 0.13099,0.005 0.16788,0.0138 0.0374,0.009 0,0.0413 -0.0935,0.0966 0.12431,0 0.29231,0.009 0.50376,0.0276 0.21146,0.0184 0.35447,-0.046 0.4292,-0.19317 0.6469,0 1.36226,0.0229 2.14617,0.069 0.78366,0.046 1.51143,0.0413 2.18334,-0.0138 0.1989,0.0184 0.40432,0.0184 0.61591,0 0.21131,-0.0185 0.35433,-0.0737 0.42918,-0.16558 -0.1243,-0.14715 -0.3546,-0.21155 -0.69048,-0.19316 -0.33604,0.0184 -0.67807,0.046 -1.02652,0.0828 l 0,0 z m -19.44531,-0.16556 c -0.0749,-0.0185 -0.0989,-0.0689 -0.0749,-0.15176 0.0253,-0.0828 0,-0.1058 -0.0749,-0.0689 -1.24411,0.0369 -2.4508,0.0413 -3.62033,0.0138 -1.16938,-0.0276 -2.17706,0.0229 -3.02313,0.15175 0,0.0921 0.0187,0.17478 0.0561,0.24838 0.0374,0.0736 0.0427,0.15636 0.0187,0.24834 1.31869,-0.0367 2.60637,-0.0966 3.86292,-0.17936 1.25652,-0.0828 2.3825,-0.17018 3.37773,-0.26214 -0.10025,0 -0.14944,-0.0644 -0.14932,-0.19317 -0.12429,-0.0552 -0.20528,-0.0507 -0.24258,0.0138 -0.0374,0.0644 -0.0815,0.12417 -0.13098,0.17937 l 0,0 z m 12.91385,0.13798 c -1.11979,2e-5 -2.17719,-0.005 -3.17241,-0.0138 -0.99526,-0.009 -1.97818,-0.0138 -2.94857,-0.0138 -0.97036,0 -1.94074,0.0185 -2.91125,0.0552 -0.97037,0.0369 -1.97804,0.11035 -3.02312,0.22075 2.11504,-0.0552 4.21751,-0.0598 6.30769,-0.0138 2.08992,0.046 3.95621,0.0873 5.59837,0.12417 0.12429,0.0185 0.29231,0.0322 0.50389,0.0413 0.21132,0.009 0.35461,-0.0598 0.42919,-0.20696 0.0254,-0.0921 0,-0.15636 -0.0561,-0.19316 -0.0614,-0.0369 -0.13686,-0.0552 -0.22387,-0.0552 -0.087,0 -0.18672,0.009 -0.2986,0.0276 -0.11227,0.0184 -0.18057,0.0276 -0.2053,0.0276 l 0,0 z m -11.90605,1.10377 c 0.52247,-0.0367 1.08866,-0.046 1.69815,-0.0275 0.60962,0.0184 1.22553,0.0275 1.84759,0.0275 0.62193,0 1.22539,-0.0138 1.81015,-0.0414 0.58464,-0.0276 1.10096,-0.0966 1.54887,-0.20697 -1.04509,0.0369 -2.15862,0.046 -3.34045,0.0276 -1.18182,-0.0185 -2.36993,0.0552 -3.56431,0.22076 l 0,0 z m -5.48649,-0.0828 c -0.47276,0.0367 -0.9268,0.0506 -1.36228,0.0413 -0.43532,-0.009 -0.82734,0.0597 -1.17566,0.20695 0.39803,0.0367 0.84593,0.0414 1.34368,0.0138 0.49763,-0.0276 1.01381,-0.0552 1.54886,-0.0828 0.53505,-0.0276 1.06995,-0.0552 1.60486,-0.0828 0.53504,-0.0276 1.05124,-0.0414 1.54898,-0.0414 0.0749,0 0.16159,0.009 0.26118,0.0275 0.0989,0.0184 0.19287,0.0276 0.27989,0.0276 0.0869,0 0.15544,-0.0138 0.2053,-0.0413 0.0495,-0.0276 0.0614,-0.0966 0.0374,-0.20697 -0.6469,0 -1.38083,0.0138 -2.20204,0.0413 -0.82109,0.0276 -1.51771,0.0598 -2.09006,0.0966 l 0,0 z m -3.58304,0.30352 c 0.12431,0.0552 0.20531,0.0689 0.24273,0.0413 0.0374,-0.0276 0.0935,-0.0413 0.16776,-0.0413 0.0253,-0.0736 0.0186,-0.13337 -0.0187,-0.17935 -0.0374,-0.046 -0.0868,-0.069 -0.14917,-0.069 -0.0628,0 -0.1243,0.0185 -0.18671,0.0552 -0.0628,0.0368 -0.0815,0.10124 -0.0561,0.19317 l 0,0 z m 3.02313,0.16557 c 0.42305,0.0736 0.87093,0.12418 1.3437,0.15179 0.47275,0.0276 0.93935,0.0322 1.39956,0.0138 0.46033,-0.0184 0.9082,-0.0507 1.34368,-0.0966 0.43546,-0.046 0.81493,-0.0966 1.13824,-0.15176 -0.99524,0.0184 -1.91587,0.0275 -2.76182,0.0275 -0.84606,0 -1.66701,0.0185 -2.46336,0.0552 l 0,0 z m 4.36695,-27.345907 c 0.0494,0.16558 0.0749,0.35875 0.0749,0.57948 0,0.22078 0,0.44612 0,0.67605 0,0.22998 0,0.46454 0,0.70367 0,0.23916 0.0254,0.45072 0.0749,0.63465 -0.10025,-0.0919 -0.16801,-0.24372 -0.2053,-0.4553 -0.0374,-0.21154 -0.0614,-0.44149 -0.0749,-0.68986 -0.0134,-0.24832 0,-0.50126 0.0186,-0.75884 0.0254,-0.25751 0.0615,-0.48747 0.11227,-0.68985 l 0,0 z m 47.88537,-9.29927 c -0.0749,0.092 -0.25516,0.1288 -0.54119,0.11034 -0.28616,-0.0183 -0.45417,-0.0275 -0.5039,-0.0277 0.0495,-0.0552 0.18659,-0.069 0.41048,-0.0414 0.22401,0.0276 0.43559,0.0138 0.63461,-0.0414 l 0,0 z m -1.82888,0.0552 c -0.12429,0.092 -0.28,0.12882 -0.46661,0.11034 -0.18658,-0.0183 -0.37945,3e-5 -0.57834,0.0552 0.1243,-0.0919 0.27976,-0.14253 0.46634,-0.15175 0.18659,-0.01 0.37947,-0.0138 0.57861,-0.0138 l 0,0 z m -1.19438,0.16555 c -0.19902,0.0369 -0.37946,0.0553 -0.54119,0.0552 -0.16159,4e-5 -0.34216,4e-5 -0.54105,0 0.1493,-0.0367 0.33588,-0.069 0.55977,-0.0966 0.22389,-0.0275 0.39804,-0.0137 0.52247,0.0414 l 0,0 z m -18.43749,-0.11034 0.26115,0 c 0,0.0184 0,0.092 0,0.22076 0,0.1288 -0.0134,0.25298 -0.0374,0.37252 -0.0254,0.11963 -0.0494,0.207 -0.0749,0.26215 -0.0254,0.0553 -0.0494,0.0277 -0.0749,-0.0828 0,-0.0552 0,-0.12413 0.0187,-0.20696 0.0134,-0.0827 0.0186,-0.14253 0.0186,-0.17936 -0.0494,0.0369 -0.10559,0.0828 -0.16788,0.13798 -0.0628,0.0552 -0.10559,0.1564 -0.13099,0.30354 -0.0494,-0.14714 -0.0307,-0.28512 0.0561,-0.41392 0.0868,-0.12874 0.13099,-0.26671 0.13099,-0.41391 l 0,0 z M -514.644,70.82628 c -0.1243,0.0369 -0.29859,0.0552 -0.52247,0.0552 -0.22403,1e-5 -0.39818,1e-5 -0.52262,0 0.12431,-0.092 0.29859,-0.13796 0.52262,-0.13799 0.22388,3e-5 0.39804,0.0277 0.52247,0.0828 l 0,0 z m -2.35135,0.0275 c -0.12431,0.092 -0.28002,0.11501 -0.46661,0.069 -0.18659,-0.046 -0.34203,-0.0414 -0.4666,0.0138 0.0749,-0.0919 0.21786,-0.11956 0.42931,-0.0828 0.21159,0.0369 0.37946,0.0369 0.5039,0 l 0,0 z m 21.98328,1.57289 0.14929,0 c -0.0751,0.092 -0.12433,0.22535 -0.14929,0.40011 -0.0254,0.17478 -0.0371,0.33575 -0.0371,0.48289 -0.0497,-0.092 -0.0682,-0.23913 -0.0566,-0.44149 0.0137,-0.20234 0.0429,-0.34953 0.0936,-0.44151 l 0,0 z m -0.82115,0.55189 0.26133,0 c 0.0751,0.20235 0.11233,0.40932 0.11233,0.62087 -1.9e-4,0.21156 -1.9e-4,0.36333 0,0.45529 -0.0497,-0.0552 -0.0751,-0.12875 -0.0751,-0.22075 -2e-4,-0.0919 0,-0.18393 -0.0185,-0.27594 -0.0136,-0.0919 -0.037,-0.16554 -0.0751,-0.22076 -0.0371,-0.0552 -0.10561,-0.0736 -0.20536,-0.0552 l 0,-0.30354 z m -37.62173,-0.27595 c 0,0.0919 -0.0494,0.15178 -0.14917,0.17937 -0.10024,0.0276 -0.17414,0.0689 -0.224,0.12417 0,-0.0919 0.0494,-0.16556 0.1493,-0.22076 0.10025,-0.0552 0.17429,-0.0828 0.22387,-0.0828 l 0,0 z m -3.58289,1.18655 c 0.12431,0.092 0.16172,0.27136 0.11227,0.53809 -0.0494,0.26675 -0.0134,0.47372 0.11228,0.62085 -0.1243,0.092 -0.19915,0.1058 -0.22402,0.0413 -0.0254,-0.0644 -0.0254,-0.15173 0,-0.26214 0.0254,-0.12875 0.0628,-0.28511 0.11228,-0.4691 0,-0.0367 -0.0374,-0.10111 -0.11228,-0.19316 -0.0749,-0.0919 -0.0749,-0.18393 0,-0.27595 l 0,0 z m 41.76454,1.904 c 0.0497,0.0369 0.0683,0.10124 0.0566,0.19317 -0.0136,0.092 -0.0312,0.16557 -0.0566,0.22073 -0.0254,0.0552 -0.0439,0.0599 -0.0565,0.0138 -0.0137,-0.046 0,-0.18854 0.0565,-0.42772 l 0,0 z m 0.55981,1.4625 c 0.19902,0.0919 0.37932,0.20236 0.54119,0.33112 0.16168,0.12879 0.26748,0.32195 0.31711,0.57948 -0.19902,-0.14717 -0.36069,-0.29893 -0.48502,-0.45531 -0.12433,-0.15635 -0.24886,-0.30812 -0.37328,-0.45529 l 0,0 z m -47.84826,-0.35874 c -0.3979,-0.0551 -0.8708,-0.0551 -1.41827,0 -0.54721,0.0552 -0.98267,0.0276 -1.30626,-0.0828 0.1493,-0.12875 0.37945,-0.18396 0.69048,-0.16558 0.31103,0.0184 0.60348,0.0277 0.87721,0.0277 0.19889,2e-5 0.42905,0.0277 0.69049,0.0828 0.26118,0.0552 0.41676,0.10124 0.46635,0.13795 l 0,0 z m 0.14943,-0.0828 c 0.1243,0.0184 0.23017,0.0367 0.31718,0.0552 0.0869,0.0184 0.19287,0.009 0.3173,-0.0276 0,0.0368 0.0254,0.0644 0.0749,0.0828 0.0495,0.0184 0.0749,0.0552 0.0749,0.11033 -0.0749,-0.0551 -0.15558,-0.0828 -0.24273,-0.0828 -0.0869,1e-5 -0.16788,1e-5 -0.24245,0 -0.0749,1e-5 -0.14315,-0.005 -0.20531,-0.0138 -0.0615,-0.009 -0.0935,-0.0507 -0.0935,-0.12418 l 0,0 z m 49.30379,2.23511 c 0.12432,0.0552 0.22379,0.14719 0.29848,0.27595 0.0751,0.12879 0.13691,0.26677 0.18655,0.4139 -0.12424,-0.0919 -0.23628,-0.20694 -0.33574,-0.34491 -0.10025,-0.13797 -0.14939,-0.25293 -0.14929,-0.34494 l 0,0 z m -47.73623,2.84223 c 0,0.0185 0.0134,0.0369 0.0374,0.0552 0.0495,0.0369 0.0749,0.0828 0.0749,0.13797 l -0.2613,0 c -0.0494,-0.0551 -0.0374,-0.092 0.0374,-0.11033 0.0749,-0.0185 0.11227,-0.046 0.11227,-0.0828 l 0,0 z m 43.92924,-31.071127 c -0.10024,4e-5 -0.14948,0.0184 -0.14919,0.0552 -0.0254,0.0184 -0.0254,0.0277 0,0.0275 -0.10024,-0.16552 -0.0868,-0.35867 0.0371,-0.57948 0.12432,-0.0367 0.19258,-0.0183 0.20516,0.0552 0.0137,0.0736 0.0819,0.092 0.20527,0.0552 -0.0989,0.2392 -0.16168,0.48754 -0.18655,0.74504 -0.0254,0.25759 -0.0371,0.45996 -0.0371,0.60708 -0.0497,0.0369 -0.0751,0.14261 -0.0751,0.31733 -1.9e-4,0.17481 -0.0254,0.26218 -0.0751,0.26215 0.0254,-0.14712 0.0371,-0.2759 0.0371,-0.38632 -2e-4,-0.11034 -2e-4,-0.21152 0,-0.30354 -2e-4,-0.0919 0,-0.22072 0.0185,-0.38633 0.0137,-0.16551 0.0185,-0.32189 0.0185,-0.46909 l 0,0 z m -39.82373,7.11932 c 0.24875,0.0369 0.49146,0.0139 0.72778,-0.069 0.23645,-0.0827 0.4479,-0.19312 0.63449,-0.33113 0.18672,-0.13795 0.34831,-0.29431 0.48519,-0.46911 0.13686,-0.17474 0.24258,-0.34489 0.31731,-0.51049 0.29859,-0.18393 0.56605,-0.39548 0.80249,-0.63467 0.23631,-0.23912 0.47891,-0.47827 0.72778,-0.71744 0.24875,-0.23912 0.51621,-0.46448 0.80237,-0.67607 0.28615,-0.21152 0.6282,-0.38168 1.02637,-0.51049 -0.47275,0.42314 -0.93922,0.82786 -1.39955,1.21414 -0.46033,0.38637 -0.90208,0.79107 -1.32498,1.21415 0.32346,-0.18393 0.62206,-0.40009 0.89579,-0.64846 0.27374,-0.24832 0.54734,-0.48747 0.82095,-0.71745 0.27373,-0.22992 0.57233,-0.43228 0.89578,-0.60709 0.3236,-0.17471 0.70921,-0.28049 1.1571,-0.31732 0.0749,0.1472 0.0442,0.22538 -0.0935,0.23454 -0.13671,0.009 -0.23016,0.0598 -0.27975,0.15178 0.17403,0.0369 0.3359,-0.005 0.4852,-0.12417 0.14916,-0.11954 0.28616,-0.19772 0.41046,-0.23456 0.62206,-0.2759 1.31256,-0.51506 2.07161,-0.71744 0.75879,-0.20233 1.44927,-0.41389 2.07133,-0.63467 0.0495,3e-5 0.0869,-0.0367 0.11228,-0.11034 0.0254,-0.0735 0.0749,-0.12873 0.14929,-0.16557 0.19903,-0.0735 0.37933,-0.115 0.5412,-0.12416 0.16158,-0.01 0.31102,-0.005 0.44776,0.0138 0.13672,0.0184 0.28603,0.0276 0.44789,0.0276 0.16173,4e-5 0.34204,-0.0183 0.54118,-0.0552 -0.12429,-0.0552 -0.23016,-0.0597 -0.31717,-0.0138 -0.0868,0.0461 -0.193,0.0414 -0.3173,-0.0138 1.04509,-0.2575 2.24548,-0.34029 3.60161,-0.24834 1.3561,0.092 2.71838,0.2116 4.08693,0.35873 0.57234,0.0736 1.15081,0.10579 1.73557,0.0966 0.58464,-0.009 1.12584,0.0231 1.62345,0.0966 1.51787,0.27597 2.91737,0.57032 4.19898,0.88301 1.28132,0.31277 2.46951,0.69909 3.56417,1.15896 0.39815,-0.12873 0.72783,-0.2989 0.98917,-0.51049 0.26134,-0.21151 0.55349,-0.40929 0.87713,-0.59329 0,-0.0367 -0.0185,-0.069 -0.0566,-0.0966 -0.0371,-0.0275 -0.0439,-0.0874 -0.0185,-0.17937 0.0497,-0.0552 0.10561,-0.0966 0.16772,-0.12418 0.0624,-0.0275 0.0936,-0.0874 0.0936,-0.17936 l -0.22389,0 c -0.17425,5e-5 -0.27371,-0.0275 -0.29857,-0.0828 0.0751,-0.0736 0.14294,-0.11489 0.20516,-0.12418 0.0614,-0.01 0.13096,-0.01 0.20527,0 0.0751,0.009 0.14929,0.0138 0.22407,0.0138 0.0751,5e-5 0.16169,-0.0183 0.26115,-0.0552 0.19911,-0.0919 0.41043,-0.19772 0.63461,-0.31733 0.22389,-0.11955 0.44777,-0.22992 0.67166,-0.33114 0.22399,-0.10112 0.45412,-0.17932 0.69049,-0.23454 0.23647,-0.0552 0.4666,-0.0644 0.69049,-0.0276 -0.14929,0.23919 -0.3609,0.41856 -0.63442,0.5381 -0.27372,0.11962 -0.52257,0.28058 -0.74656,0.48289 0.0751,5e-5 0.17416,0.0184 0.29859,0.0552 0.12432,0.0369 0.24885,0.0553 0.37328,0.0552 0.12432,0.0184 0.21773,-0.0275 0.27995,-0.13797 0.0624,-0.11033 0.19269,-0.18393 0.39181,-0.22076 0.0751,-0.0552 0.12433,-0.0598 0.14939,-0.0138 0.0254,0.0461 0.0624,0.0507 0.11223,0.0138 0.12433,-0.0919 0.26114,-0.20692 0.41062,-0.34493 0.1493,-0.13793 0.36061,-0.20692 0.63432,-0.20694 -0.0254,0.0184 -0.0254,0.0369 0,0.0552 0,0.0369 0.0497,0.0553 0.14929,0.0552 0,0.20239 -0.0989,0.34036 -0.29857,0.41391 -0.19903,0.0736 -0.37318,0.18399 -0.52238,0.33113 0.12433,0.0553 0.22389,0.0736 0.29849,0.0552 0.0751,-0.0183 0.14929,4e-5 0.22389,0.0552 0.19911,-0.14714 0.35455,-0.2989 0.46659,-0.45531 0.11224,-0.15633 0.26748,-0.25291 0.4666,-0.28975 l 0.26124,0 c 0,0.092 0,0.20701 0,0.34494 0,0.138 -0.0136,0.28057 -0.0371,0.4277 0.19903,0.0184 0.37942,0.0139 0.54119,-0.0138 0.16158,-0.0275 0.21756,-0.11489 0.16802,-0.26213 -0.0751,0.092 -0.0302,0.14261 0.13096,0.15176 0.16168,0.009 0.36684,0.009 0.61578,0 0.24866,-0.01 0.49128,4e-5 0.72775,0.0277 0.23646,0.0276 0.37951,0.11501 0.42934,0.26215 -0.0497,0.092 -0.19922,0.138 -0.44788,0.13796 -0.24895,4e-5 -0.39824,0.0461 -0.44796,0.13797 0.0497,0.0369 0.19901,0.0552 0.44796,0.0552 0.24866,4e-5 0.4353,0.0184 0.55972,0.0552 -0.12432,0.092 -0.31106,0.11046 -0.55972,0.0552 -0.24895,-0.0552 -0.54753,-0.0827 -0.89584,-0.0828 -0.0497,1.15901 -0.0624,2.44675 -0.037,3.8632 0.0254,1.41654 0.0497,2.80546 0.0751,4.16674 -0.0497,0.82787 -0.0624,1.5913 -0.0371,2.29031 0.0254,0.6991 0.0868,1.41654 0.18664,2.15237 0.12423,0.0184 0.23013,0.0506 0.3173,0.0966 0.0868,0.0461 0.19289,0.115 0.31731,0.20696 -0.0751,0.0552 -0.17435,0.0828 -0.29877,0.0828 -0.12424,3e-5 -0.28601,3e-5 -0.48512,0 -0.099,0.33115 -0.099,0.63009 0,0.89681 0.0989,0.26676 0.11223,0.54731 0.0371,0.84162 -0.19903,-0.20232 -0.28621,-0.46447 -0.26124,-0.78643 0.0254,-0.32191 0.0497,-0.61165 0.0751,-0.86923 -0.39815,-0.0736 -0.66563,-0.0505 -0.80233,0.0689 -0.13701,0.11962 -0.21785,0.28518 -0.24261,0.49673 -0.0254,0.21156 -0.0185,0.43692 0.0185,0.67604 0.0371,0.23918 0.0439,0.43234 0.0185,0.57949 -0.19913,0.11045 -0.37319,0.11045 -0.52248,0 -0.0751,0.18397 -0.1056,0.40933 -0.0936,0.67606 0.0137,0.26676 0.0371,0.5381 0.0751,0.81402 0.037,0.275967 0.0624,0.547307 0.0751,0.814027 0.0137,0.26676 -0.0185,0.49214 -0.0936,0.67606 -0.22418,-0.40469 -0.30502,-0.83699 -0.24271,-1.29694 0.0614,-0.459877 0.1056,-0.901367 0.13096,-1.324487 -0.0497,-0.14716 -0.0936,-0.38632 -0.13096,-0.71746 -0.037,-0.33112 0,-0.64384 0.0936,-0.93823 -0.0751,-0.0367 -0.14315,-0.0322 -0.20535,0.0138 -0.0624,0.046 -0.13097,0.0414 -0.20537,-0.0138 0,-0.12874 0.0137,-0.22071 0.0371,-0.27593 -0.32364,-0.0184 -0.62222,-0.0138 -0.89565,0.0138 -0.27381,0.0276 -0.53525,0.0322 -0.784,0.0138 -0.0751,2e-5 -0.11759,0.0644 -0.13095,0.19317 -0.0136,0.12879 -0.11761,0.19318 -0.31721,0.19316 -0.12424,-0.20234 -0.32355,-0.33572 -0.59727,-0.40014 -0.27361,-0.0644 -0.58478,-0.0782 -0.933,-0.0414 -0.0751,0.14721 -0.0936,0.28517 -0.0566,0.41392 0.0371,0.12879 -0.0439,0.22077 -0.24271,0.27593 -0.19903,-0.20232 -0.33573,-0.40468 -0.41043,-0.60706 -0.0751,-0.20234 -0.13691,-0.4323 -0.18664,-0.68985 -0.19902,1e-5 -0.37327,0.0369 -0.52257,0.11033 -0.14929,0.0736 -0.32335,0.0276 -0.52247,-0.13799 0.0751,-0.14714 0.19912,-0.22532 0.37318,-0.23454 0.17425,-0.009 0.36089,-0.0138 0.56001,-0.0138 -0.12433,-0.62545 -0.34226,-1.20493 -0.65323,-1.73843 -0.31097,-0.53347 -0.64075,-1.05775 -0.98917,-1.57289 -0.34831,-0.51506 -0.69048,-1.03476 -1.02622,-1.55908 -0.33593,-0.52425 -0.59112,-1.08993 -0.76528,-1.69704 -0.0751,-0.0552 -0.16801,-0.11499 -0.27986,-0.17937 -0.11223,-0.0644 -0.19288,-0.14252 -0.24261,-0.23454 -0.0751,3e-5 -0.13095,-0.0275 -0.16801,-0.0828 -0.0371,-0.0552 -0.1176,-0.0552 -0.24261,0 -0.17416,-0.23911 -0.41043,-0.45987 -0.70902,-0.66226 -0.29878,-0.20234 -0.62837,-0.38629 -0.98897,-0.55189 -0.36089,-0.16553 -0.73418,-0.31268 -1.11983,-0.4415 -0.38556,-0.12874 -0.7527,-0.2575 -1.10111,-0.38631 -0.27372,-0.11034 -0.54744,-0.22993 -0.82086,-0.35874 -0.27382,-0.12873 -0.51019,-0.19313 -0.70921,-0.19316 -0.52251,-0.11034 -1.02641,-0.15632 -1.51159,-0.13797 -0.48532,0.0184 -0.98923,-0.0275 -1.51156,-0.13797 0.2736,0.0184 0.55349,0.0277 0.83965,0.0275 0.28616,5e-5 0.52875,-0.0183 0.72777,-0.0552 -0.44775,-0.12874 -0.96408,-0.21612 -1.54885,-0.26214 -0.58476,-0.046 -1.17567,-0.0552 -1.77286,-0.0275 -0.5972,0.0277 -1.1694,0.092 -1.71688,0.19316 -0.54748,0.10124 -1.0078,0.22538 -1.38097,0.37252 0.0254,0.0552 0.0682,0.0782 0.13098,0.069 0.0628,-0.01 0.12431,-0.023 0.1866,-0.0414 0.0628,-0.0183 0.11227,-0.0229 0.14929,-0.0137 0.0374,0.009 0.0561,0.0506 0.0561,0.12417 -0.4229,4e-5 -0.82723,0.0691 -1.21283,0.20696 -0.38574,0.138 -0.75264,0.30817 -1.10109,0.5105 -0.34833,0.20238 -0.67806,0.42314 -0.98909,0.66225 -0.31104,0.23917 -0.60335,0.47833 -0.87707,0.71744 0,0.25759 0,0.50593 0,0.74507 0,0.23917 0.0254,0.50591 0.0749,0.80021 0,0.33117 -0.0187,0.68069 -0.0561,1.04859 -0.0374,0.36794 -0.0495,0.71748 -0.0374,1.04858 0.0134,0.33115 0.0869,0.63469 0.22388,0.91062 0.13674,0.27596 0.37947,0.50591 0.72779,0.68985 0.12429,0.27596 0.31101,0.50132 0.55977,0.67605 0.24888,0.1748 0.52888,0.33116 0.83991,0.4691 0.31089,0.13802 0.63449,0.26678 0.97024,0.38633 0.33589,0.11959 0.65321,0.25297 0.95194,0.40012 1.34341,0.33116 2.66852,0.67148 3.97478,1.02098 1.30627,0.34957 2.64367,0.68988 4.01235,1.02098 -0.27372,-0.0919 -0.51643,-0.20693 -0.72794,-0.34492 -0.2114,-0.13793 -0.47898,-0.25293 -0.80234,-0.34493 -1.2e-4,-0.12874 0.0134,-0.22994 0.0374,-0.30354 0.89566,0.1656 1.67333,0.38176 2.3326,0.64847 0.65948,0.26676 1.27517,0.6025 1.84767,1.00719 1.49282,0.42312 2.91104,0.90144 4.25467,1.4349 1.34362,0.533497 2.62503,1.131387 3.84433,1.793637 0.12432,1e-5 0.24875,-0.009 0.37318,-0.0276 0.12422,-0.0183 0.21159,2e-5 0.26143,0.0552 0.0751,0.0369 0.0936,0.0874 0.0566,0.15177 -0.0371,0.0644 -0.0566,0.1426 -0.0566,0.23455 0.44778,0.14718 0.83948,0.34034 1.17551,0.57948 0.33593,0.23918 0.66552,0.51511 0.98907,0.82783 l 0.52267,0 c 0.42271,0.25757 0.80847,0.58869 1.15688,0.99338 0.34822,0.40474 0.70911,0.80947 1.08229,1.21416 0.12433,0.14718 0.255,0.27595 0.39191,0.38632 0.1369,0.11045 0.20516,0.26675 0.20526,0.46909 0.12433,0.0184 0.20536,0.092 0.2428,0.22076 0.0371,0.12879 0.11761,0.19319 0.24242,0.19316 -0.0751,0.11046 -0.1369,0.1196 -0.18654,0.0277 l -0.0751,-0.11034 c 0,0.0919 0.0136,0.15179 0.037,0.17936 0.0254,0.0276 0.0614,0.0414 0.11225,0.0414 0.0497,1e-5 0.0936,0.009 0.13096,0.0275 0.0371,0.0184 0.0799,0.0644 0.13105,0.13797 0,0.0184 -0.0136,0.0276 -0.037,0.0276 -0.0254,10e-6 -0.0614,-0.009 -0.11234,-0.0276 0.42301,0.93823 0.59707,1.84884 0.52267,2.73185 -0.0751,0.883 -0.29878,1.83961 -0.67196,2.86979 -0.0989,0.33114 -0.255,0.63928 -0.46649,0.92441 -0.21151,0.28515 -0.34218,0.5749 -0.39191,0.86922 -0.0254,0.20236 0,0.37715 0.0565,0.52428 0.0624,0.14719 0.0185,0.29435 -0.13095,0.44151 0.0751,0.0921 0.1056,0.19777 0.0936,0.31734 -0.0136,0.11959 -0.0254,0.24377 -0.0371,0.37254 -0.0136,0.12877 -0.0185,0.25754 -0.0185,0.38631 0,0.12878 0.0497,0.25755 0.14949,0.38631 -0.12432,0.45992 -0.19921,0.91061 -0.22408,1.35211 -0.0254,0.44152 -0.0439,0.89224 -0.0566,1.35213 -0.0136,0.45992 -0.0439,0.91981 -0.0936,1.37971 -0.0497,0.45992 -0.14929,0.92901 -0.29858,1.40731 -0.12433,-0.11044 -0.14315,-0.22995 -0.0565,-0.35873 0.0868,-0.12877 0.16801,-0.26673 0.24261,-0.4139 0.0497,-0.31274 0.0682,-0.64846 0.0566,-1.0072 -0.0137,-0.35873 -0.0302,-0.71745 -0.0566,-1.07618 -0.0254,-0.35873 -0.0254,-0.71284 0,-1.06238 0.0254,-0.34951 0.10024,-0.68064 0.22399,-0.99338 0,-0.0552 -0.0254,-0.092 -0.0751,-0.11035 -0.0497,-0.0185 -0.0751,-0.046 -0.0751,-0.0828 0,-0.0921 0.0254,-0.13797 0.0751,-0.13797 0.0497,0 0.0751,-0.0185 0.0751,-0.0551 -0.12424,-0.38632 -0.14929,-0.77264 -0.0751,-1.15896 0.0751,-0.3863 0.0868,-0.77263 0.037,-1.15896 -0.34831,0.4783 -0.67175,0.92902 -0.97024,1.35211 -0.29869,0.42313 -0.65948,0.81863 -1.08239,1.18656 0.12433,0 0.2551,-0.0828 0.3918,-0.24834 0.13701,-0.16556 0.28006,-0.29435 0.42935,-0.38633 0.0497,0.092 0.0565,0.18856 0.0185,0.28975 -0.0371,0.10112 -0.1056,0.20237 -0.20536,0.30352 -0.10025,0.10125 -0.19912,0.19778 -0.29858,0.28976 -0.0989,0.092 -0.18675,0.17477 -0.26134,0.24834 -1.02017,0.88302 -2.23304,1.66485 -3.63897,2.3455 -1.40584,0.68067 -2.91747,1.24175 -4.53471,1.68325 -0.19913,-0.0736 -0.39201,-0.092 -0.57864,-0.0552 -0.18655,0.0367 -0.3919,0.0736 -0.6156,0.11035 -0.0254,0.12877 -0.0312,0.25756 -0.0185,0.38632 0.0136,0.12877 0.0185,0.24375 0.0185,0.34492 -1.9e-4,0.10114 -0.0185,0.18857 -0.0566,0.26216 -0.0371,0.0736 -0.1176,0.11958 -0.24271,0.13796 -0.0497,-0.14717 -0.0614,-0.32194 -0.037,-0.52428 0.0253,-0.20235 0.0989,-0.36792 0.22388,-0.49669 -1.86609,0.3679 -3.75091,0.61626 -5.65426,0.74503 -1.90359,0.12877 -3.7759,0.18397 -5.6172,0.16557 -0.64705,0.0367 -1.32498,0.0275 -2.03405,-0.0276 -0.70919,-0.0552 -1.42454,-0.14717 -2.14617,-0.27595 -0.5972,-0.0552 -1.15082,-0.14257 -1.66087,-0.26215 -0.51005,-0.11957 -1.16324,-0.19774 -1.95946,-0.23455 -1.3934,-0.0736 -2.73081,-0.16556 -4.01221,-0.27594 -1.28153,-0.11033 -2.50694,-0.40471 -3.67633,-0.883 -0.72164,0.31272 -1.40583,0.68985 -2.05275,1.13135 -0.64691,0.44151 -1.3064,0.90141 -1.97804,1.37971 -0.0254,0.38632 0,0.74504 0.0561,1.07618 0.0628,0.33113 0.0561,0.64386 -0.0186,0.9382 -0.0749,-0.0368 -0.12429,-0.046 -0.14929,-0.0276 -0.0254,0.0184 -0.0628,0.0276 -0.11228,0.0276 -0.1243,-0.20235 -0.19888,-0.44609 -0.2239,-0.73125 -0.0254,-0.28513 -0.0614,-0.52889 -0.11226,-0.73124 -0.0494,-0.0552 -0.11228,-0.0552 -0.18657,0 -0.0749,0.0552 -0.13688,0.0828 -0.18674,0.0828 0,0.092 0.0254,0.21615 0.0749,0.37252 0.0495,0.15637 0.0134,0.26213 -0.11227,0.31734 -0.1243,-0.0552 -0.1866,-0.1058 -0.1866,-0.15177 0,-0.046 -0.0254,-0.0966 -0.0749,-0.15177 -0.0254,0.0367 -0.0628,0.0644 -0.11228,0.0828 -0.12429,0.0367 -0.224,0.0367 -0.29872,0 0,-0.092 0.0561,-0.17016 0.168,-0.23454 0.11229,-0.0644 0.20545,-0.14258 0.28004,-0.23456 -0.0495,-0.4415 -0.0935,-0.9014 -0.131,-1.3797 -0.0374,-0.47832 -0.0801,-0.95661 -0.13098,-1.43492 0,-0.0552 -0.0241,-0.0736 -0.0749,-0.0552 -0.0495,0.0185 -0.11228,1e-5 -0.18661,-0.0552 0,-0.092 0.0442,-0.11957 0.131,-0.0828 0.0869,0.0367 0.13099,0.0367 0.13099,0 0,-0.29432 0,-0.56107 -0.0186,-0.80023 -0.0134,-0.23915 -0.0307,-0.47829 -0.0561,-0.71745 -0.0254,-0.23915 -0.0561,-0.4829 -0.0935,-0.73122 -0.0374,-0.24837 -0.0561,-0.52891 -0.0561,-0.84164 -0.27374,-0.0736 -0.55977,-0.0782 -0.85837,-0.0138 -0.29859,0.0644 -0.58463,0.0138 -0.85836,-0.15177 0.0989,-0.14715 0.31717,-0.21154 0.65305,-0.19316 0.33591,0.0185 0.64078,0.0369 0.91438,0.0552 0,-0.0921 0.0134,-0.21615 0.0374,-0.37252 0.0254,-0.15636 0.0307,-0.30812 0.0186,-0.45531 -0.0134,-0.14717 -0.0441,-0.28053 -0.0935,-0.40011 -0.0495,-0.11958 -0.13674,-0.19776 -0.26118,-0.23456 -0.0495,-0.092 -0.0307,-0.14715 0.0561,-0.16555 0.0868,-0.0185 0.16788,-0.0552 0.24246,-0.11045 -0.12431,-0.53346 -0.17403,-0.99337 -0.14917,-1.3797 0.0241,-0.38631 -0.0254,-0.80024 -0.1493,-1.24175 0.0989,-0.14715 0.1493,-0.34953 0.1493,-0.60707 0,-0.25754 -0.0614,-0.4415 -0.18658,-0.55189 0.0495,-0.0921 0.0815,-0.23914 0.0935,-0.4415 0.0134,-0.20236 0,-0.34952 -0.0561,-0.4415 -0.0749,-0.0368 -0.18044,-0.0552 -0.31731,-0.0552 -0.13672,0 -0.20516,-0.046 -0.20516,-0.13795 -0.0495,-0.0921 -0.0374,-0.12878 0.0374,-0.11046 0.0749,0.0185 0.1493,0.0276 0.22389,0.0276 -0.0495,-0.0552 -0.0815,-0.12878 -0.0935,-0.22078 -0.0134,-0.0919 -0.0187,-0.18393 -0.0187,-0.27592 -0.0495,-0.0367 -0.14931,-0.046 -0.29873,-0.0276 -0.1493,0.0185 -0.22389,-0.046 -0.22389,-0.19315 0.0254,-0.0919 0.0935,-0.14255 0.20531,-0.15176 0.11226,-0.009 0.23015,-0.0138 0.3546,-0.0138 0.0253,-0.38632 0.0134,-0.74045 -0.0374,-1.06239 -0.0494,-0.32192 -0.137,-0.61167 -0.26144,-0.86922 -0.39804,-0.0184 -0.78366,2e-5 -1.15683,0.0552 -0.37332,0.0552 -0.73406,0.0735 -1.08238,0.0552 0.0749,-0.16555 0.21132,-0.26213 0.41046,-0.28974 0.19903,-0.0275 0.42305,-0.0414 0.67192,-0.0414 0.24874,2e-5 0.4789,-0.005 0.69049,-0.0139 0.21131,-0.009 0.37932,-0.0873 0.50376,-0.23456 0.19902,0.092 0.34832,0.14259 0.4479,0.15177 0.0989,0.009 0.24874,-0.0322 0.44776,-0.12418 -0.0494,-0.40469 -0.0869,-0.69905 -0.11227,-0.88301 -0.0253,-0.18395 0.0374,-0.4415 0.18659,-0.77266 0.0989,2e-5 0.16173,0.0276 0.18658,0.0828 0.0254,0.0552 0.0441,0.11047 0.0561,0.16557 0.0134,0.0552 0.0187,0.11045 0.0187,0.16557 0,0.0552 0.0374,0.0828 0.11227,0.0828 0.0749,-0.25753 0.087,-0.58404 0.0374,-0.97958 -0.0495,-0.39551 -0.0254,-0.71284 0.0749,-0.95201 0.14917,0.0552 0.23617,0.17019 0.26117,0.34493 0.0254,0.17479 0.0254,0.36335 0,0.56568 -0.0254,0.20238 -0.0562,0.40933 -0.0935,0.62086 -0.0374,0.21155 -0.0427,0.37255 -0.0187,0.4829 0.32346,0.1656 0.65948,0.27136 1.00781,0.31734 0.34817,0.0459 0.74635,0.0229 1.19424,-0.0689 0.0254,-0.29433 -0.0494,-0.56106 -0.22401,-0.80023 -0.17402,-0.23913 -0.24874,-0.48748 -0.22388,-0.74504 0.19915,0.0369 0.32359,0.0966 0.37319,0.17935 0.0494,0.0828 0.0815,0.17481 0.0935,0.27595 0.0134,0.10124 0.0307,0.20239 0.0561,0.30354 0.0254,0.10123 0.0989,0.17938 0.22387,0.23454 0.0749,-0.14715 0.10026,-0.34029 0.0749,-0.57946 -0.0254,-0.23914 -0.0374,-0.4323 -0.0374,-0.57948 0.0749,0.0369 0.11762,0.10124 0.13098,0.19316 0.0134,0.092 0.0254,0.19777 0.0374,0.31734 0.0134,0.11958 0.0186,0.22995 0.0186,0.33112 0,0.10124 0.0134,0.17937 0.0374,0.23453 l 0,0.27595 c 0.24874,0.0552 0.51619,0.10579 0.80237,0.15177 0.28629,0.046 0.66561,0.0506 1.13837,0.0138 -0.0749,0.20239 -0.21773,0.33576 -0.42917,0.40013 -0.21146,0.0644 -0.3919,0.14258 -0.5412,0.23455 0.1493,0.5151 0.36702,0.97961 0.6532,1.39351 0.28604,0.41393 0.59705,0.80483 0.93295,1.17275 0.33602,0.36794 0.68432,0.72667 1.04509,1.07618 0.36088,0.34953 0.67804,0.71746 0.95166,1.10377 0.1243,0.092 0.25515,0.18395 0.39203,0.27594 0.13686,0.092 0.168,0.16557 0.0935,0.22075 0.39805,0.25755 0.73406,0.52431 1.0078,0.80024 0.2736,0.27594 0.55977,0.57029 0.85836,0.88302 0.82108,0.66228 1.61101,1.33833 2.37007,2.02817 0.75879,0.68987 1.61114,1.31994 2.55653,1.89021 l 0.2613,0 c 0.44776,0.22077 0.91437,0.38172 1.3997,0.48291 0.48504,0.10123 0.97651,0.17476 1.47412,0.22073 0.49763,0.046 1.00767,0.0689 1.53029,0.0689 0.52247,0 1.04496,0.0185 1.56756,0.0552 0,0.0369 0,0.0783 -0.0187,0.12417 -0.0134,0.046 -0.0186,0.0873 -0.0186,0.1242 l 0,0.13795 c 1.04495,0.0367 1.99046,0.009 2.83653,-0.0828 0.84594,-0.092 1.70431,-0.29434 2.57521,-0.60708 -0.12423,-0.0185 -0.2116,-0.0367 -0.26114,-0.0551 -0.0495,-0.0184 -0.0495,-0.0736 0,-0.16557 0.42301,-0.0185 0.78995,-0.0783 1.10091,-0.17937 0.31107,-0.10114 0.59708,-0.22534 0.85851,-0.37253 0.26123,-0.14716 0.4977,-0.30812 0.70911,-0.48288 0.2116,-0.17476 0.44173,-0.34493 0.69049,-0.5105 0.19902,-0.20234 0.3919,-0.37251 0.57844,-0.5105 0.18663,-0.13795 0.30482,-0.30812 0.35465,-0.5105 0.0254,-0.0919 -0.0137,-0.11034 -0.11224,-0.0552 -0.10024,0.0552 -0.14939,0.0644 -0.14939,0.0276 0.099,-0.14718 0.19289,-0.30814 0.28006,-0.48292 0.0868,-0.17475 0.26728,-0.26213 0.54119,-0.26213 0.0497,-0.29432 0.11224,-0.61166 0.18655,-0.95202 0.0751,-0.3403 0.11233,-0.67603 0.11233,-1.00718 0,-0.33112 -0.0439,-0.63926 -0.13095,-0.92442 -0.0868,-0.28512 -0.2551,-0.51967 -0.50396,-0.70364 0,0.0921 0.0312,0.17477 0.0936,0.24835 0.0614,0.0736 0.0302,0.15638 -0.0936,0.24836 -0.0497,-0.0919 -0.1056,-0.19316 -0.16791,-0.30354 -0.0624,-0.11034 -0.0819,-0.26673 -0.0565,-0.46911 0.0751,10e-6 0.14929,-0.0185 0.22389,-0.0552 0.0751,-0.0367 0.17435,-0.0552 0.29878,-0.0552 0.17406,0.18398 0.31087,0.40473 0.41043,0.66228 0.099,0.25754 0.16167,0.52889 0.18663,0.81401 0.0254,0.28518 0.0254,0.57029 0,0.85544 -0.0254,0.28514 -0.0497,0.54729 -0.0751,0.78643 0.12433,-0.29433 0.18655,-0.64846 0.18655,-1.0624 0,-0.41389 0,-0.76801 0,-1.06234 0.12432,0.0551 0.18029,0.17936 0.16801,0.3725 -0.0136,0.19318 -0.0312,0.36335 -0.0566,0.51051 0.17415,-0.25754 0.24875,-0.48751 0.22408,-0.68986 -0.0254,-0.20236 -0.099,-0.39092 -0.22408,-0.56569 -0.12432,-0.17475 -0.29234,-0.34032 -0.50375,-0.4967 -0.21141,-0.15637 -0.40428,-0.32652 -0.57863,-0.5105 0,-0.0184 0,-0.0413 -0.0185,-0.0689 -0.0136,-0.0275 -0.0185,-0.0598 -0.0185,-0.0966 -0.0254,-0.0368 -0.037,-0.0736 -0.037,-0.11033 -0.0751,-0.0552 -0.16802,-0.0966 -0.27987,-0.12419 -0.11223,-0.0276 -0.19287,-0.0598 -0.24261,-0.0966 -0.19902,-0.14717 -0.36703,-0.29433 -0.50384,-0.44151 -0.13691,-0.14715 -0.30473,-0.30353 -0.50395,-0.4691 -0.39815,-0.0552 -0.74022,-0.16096 -1.02622,-0.31733 -0.2863,-0.15636 -0.62837,-0.28972 -1.02651,-0.40011 -0.0751,0.14717 -0.0302,0.27594 0.13095,0.38631 0.16178,0.11035 0.27997,0.24836 0.35466,0.4139 0.89565,0.49671 1.60486,1.14978 2.12743,1.9592 0.52237,0.80944 0.69653,1.72005 0.52237,2.73185 -0.10024,0.14716 -0.14919,0.29434 -0.14919,0.4415 0,0.14717 -0.13701,0.22076 -0.41073,0.22075 0.24886,-0.55188 0.35466,-1.07157 0.31731,-1.55908 -0.0371,-0.48748 -0.15553,-0.9428 -0.35455,-1.36593 -0.19903,-0.42311 -0.4667,-0.80482 -0.80243,-1.14517 -0.33584,-0.34031 -0.66572,-0.63925 -0.98907,-0.8968 -0.12433,10e-6 -0.23647,-0.0229 -0.33583,-0.0688 -0.099,-0.046 -0.21161,-0.0688 -0.33593,-0.0688 l 0,-0.19315 c -0.39815,-0.20233 -0.7528,-0.40932 -1.06381,-0.62088 -0.31104,-0.21154 -0.72778,-0.3725 -1.25026,-0.48289 0.0989,-0.092 0.11227,-0.13796 0.0374,-0.13799 -0.0749,2e-5 -0.11227,-0.0184 -0.11227,-0.0552 -1.04509,-0.5151 -2.23319,-0.90601 -3.56445,-1.17277 -1.33113,-0.26674 -2.64367,-0.56566 -3.93749,-0.89681 -0.19917,-0.0367 -0.40448,-0.0598 -0.61592,-0.0689 -0.21158,-0.009 -0.34204,-0.0873 -0.39189,-0.23456 0.3236,-0.11033 0.62833,-0.15635 0.91437,-0.13796 0.2863,0.0184 0.5599,0.0644 0.82121,0.13796 0.26117,0.0736 0.53491,0.14259 0.82121,0.20695 0.28603,0.0644 0.59077,0.0966 0.91437,0.0966 -0.92065,-0.27591 -1.8786,-0.52427 -2.87384,-0.74505 -0.9955,-0.22072 -1.9783,-0.44609 -2.94867,-0.67605 -0.97051,-0.22993 -1.9159,-0.48287 -2.83654,-0.75883 -0.92065,-0.27593 -1.76659,-0.59785 -2.53794,-0.96581 0.24888,0.29436 0.56605,0.54731 0.95166,0.75886 0.38575,0.21157 0.79635,0.40472 1.23168,0.57947 0.43547,0.17477 0.88335,0.34033 1.34369,0.49669 0.46033,0.15639 0.90193,0.33575 1.32497,0.53809 1.04509,0.22076 1.9906,0.46912 2.83654,0.74502 0.84593,0.27597 1.74173,0.59791 2.68724,0.96581 -0.12431,0.0369 -0.26118,0.0184 -0.41048,-0.0552 -0.14929,-0.0735 -0.22402,-0.12876 -0.22402,-0.16556 -0.24886,-0.0552 -0.49774,-0.115 -0.74648,-0.17936 -0.24887,-0.0644 -0.51005,-0.14254 -0.78365,-0.23455 -0.19915,-0.0736 -0.39817,-0.15176 -0.59719,-0.23455 -0.19916,-0.0828 -0.39818,-0.14254 -0.5972,-0.17935 -0.24887,-0.11034 -0.54119,-0.20233 -0.87721,-0.27595 -0.33588,-0.0736 -0.64063,-0.12875 -0.91438,-0.16555 -0.52247,-0.16556 -1.06993,-0.33573 -1.64215,-0.5105 -0.57231,-0.17475 -1.12594,-0.37711 -1.66085,-0.60706 -0.53505,-0.22996 -1.0201,-0.4875 -1.45569,-0.77264 -0.43548,-0.28514 -0.75252,-0.61166 -0.95166,-0.9796 -0.52262,-0.12875 -0.94565,-0.33112 -1.26898,-0.60709 0,0.1656 0.0615,0.32656 0.18659,0.48291 0.12431,0.15638 0.25503,0.31735 0.3919,0.48289 0.13686,0.16561 0.24873,0.33115 0.33588,0.49669 0.0869,0.1656 0.0935,0.33117 0.0186,0.49672 -0.19903,-0.25753 -0.38574,-0.51049 -0.5599,-0.75885 -0.17404,-0.24834 -0.3609,-0.52887 -0.55977,-0.84163 -0.12431,-0.20233 -0.24889,-0.39551 -0.37332,-0.57947 -0.1243,-0.18396 -0.27374,-0.34952 -0.4479,-0.49671 -0.49762,-0.44148 -1.01395,-0.86919 -1.54885,-1.28314 -0.53504,-0.413877 -0.98909,-0.915187 -1.36226,-1.503867 -0.0495,0.33114 -0.0749,0.71286 -0.0749,1.14516 0,0.432317 0,0.878417 0,1.338307 0,0.45995 -0.0134,0.91065 -0.0374,1.35214 -0.0254,0.44151 -0.0749,0.83703 -0.14916,1.18655 0,-0.82782 0,-1.57746 0.0187,-2.24894 0.0134,-0.67144 -0.0935,-1.37508 -0.31732,-2.110967 0.0254,-0.14716 0.0628,-0.22992 0.11227,-0.24835 0.0495,-0.0184 0.0749,-0.10111 0.0749,-0.24834 -0.0749,-0.0367 -0.1243,-0.0827 -0.1493,-0.13798 -0.0254,-0.0552 -0.0615,-0.10112 -0.11227,-0.13797 0.0254,-0.0919 0.0495,-0.15634 0.0749,-0.19316 0.0253,-0.0367 0.0134,-0.10112 -0.0374,-0.19316 -0.32346,-0.45988 -0.55363,-0.94737 -0.69051,-1.4625 -0.13685,-0.51506 -0.2923,-1.03935 -0.46659,-1.57287 -0.0749,-0.14714 -0.16787,-0.20693 -0.27976,-0.17936 -0.11227,0.0276 -0.19286,0.0138 -0.24272,-0.0414 0.0254,-0.14714 0.0935,-0.22532 0.2053,-0.23455 0.11228,-0.009 0.23017,-0.0138 0.35447,-0.0138 -0.0495,-0.34951 -0.0495,-0.65764 0,-0.92441 0.0494,-0.26671 0.11227,-0.57486 0.18685,-0.92443 l -0.0749,0 c -0.0254,4e-5 -0.0374,-0.0275 -0.0374,-0.0828 0.0749,-0.14713 0.14302,-0.32651 0.20518,-0.53809 0.0628,-0.21153 0.10558,-0.41849 0.13097,-0.62087 0,-0.0552 -0.0494,-0.0644 -0.14929,-0.0276 -0.10025,0.0369 -0.18672,0.009 -0.26144,-0.0828 0.0749,-0.0367 0.0935,-0.0644 0.0561,-0.0828 -0.0374,-0.0183 -0.0561,-0.0552 -0.0561,-0.11034 0.0749,-0.0367 0.168,-0.0598 0.28002,-0.0689 0.11227,-0.009 0.19287,-0.0138 0.24259,-0.0138 0.10024,-0.20233 0.18044,-0.35869 0.24273,-0.46911 0.0615,-0.11034 0.14301,-0.26671 0.24246,-0.4691 -0.0749,-0.0552 -0.1866,-0.0828 -0.33589,-0.0828 -0.1493,4e-5 -0.26118,-0.0459 -0.33589,-0.13796 0,-0.0919 0.0561,-0.14714 0.16788,-0.16556 0.11227,-0.0184 0.23016,-0.0184 0.3546,0 0.12429,-0.0919 0.18659,-0.25752 0.18659,-0.49671 0.12431,4e-5 0.137,0.0691 0.0374,0.20696 -0.0989,0.138 -0.0869,0.23459 0.0374,0.28975 0.1243,-0.0552 0.15545,-0.10579 0.0935,-0.15179 -0.0628,-0.046 -0.0815,-0.0966 -0.0562,-0.15175 0.0749,3e-5 0.11228,0.0184 0.11228,0.0552 l 0,0.0552 c 0.19902,-0.3495 0.42918,-0.65304 0.69036,-0.91061 0.26143,-0.25751 0.5039,-0.56105 0.72804,-0.91062 -0.1243,-0.0367 -0.25516,-0.0229 -0.39203,0.0414 -0.13686,0.0644 -0.26744,0.0506 -0.39189,-0.0414 l 0,0 z m 34.74782,-5.13255 c 0.0989,0.0369 0.21141,0.0369 0.33583,0 0.12433,-0.0367 0.24251,-0.0874 0.35466,-0.15177 0.11223,-0.0644 0.20516,-0.13332 0.27985,-0.20695 0.0751,-0.0736 0.11234,-0.13794 0.11234,-0.19315 -0.12433,0.092 -0.3174,0.1702 -0.57853,0.23455 -0.26144,0.0644 -0.42936,0.17019 -0.50386,0.31732 l 0,0 z m 0,0.38633 c 0.0751,0.0184 0.17406,0.0414 0.29858,0.0691 0.12434,0.0276 0.24876,0.0415 0.37319,0.0415 0.12432,4e-5 0.23627,-0.0138 0.33602,-0.0415 0.0989,-0.0275 0.149,-0.0782 0.1492,-0.15178 -0.27382,0.0553 -0.48522,0.0598 -0.63451,0.0137 -0.1493,-0.046 -0.32365,-0.023 -0.52248,0.069 l 0,0 z m -0.67195,0 c 0.12432,0.0369 0.23022,0.0276 0.3173,-0.0277 0.0868,-0.0552 0.15553,-0.0828 0.20536,-0.0828 -0.0497,2e-5 -0.13105,0.005 -0.24261,0.0138 -0.11224,0.01 -0.20546,0.0414 -0.28005,0.0966 l 0,0 z m 2.87388,0.0552 c 0,0.0369 0.0868,0.0553 0.26143,0.0552 0.17396,4e-5 0.26113,-0.046 0.26113,-0.13797 -0.12432,0.0553 -0.22397,0.0736 -0.29857,0.0552 -0.0751,-0.0183 -0.14929,-0.01 -0.22399,0.0275 l 0,0 z m 2.68735,1.13137 c 0.0254,-0.14712 0.0254,-0.27131 0,-0.37253 -0.0254,-0.10112 0.0254,-0.19771 0.14928,-0.28974 -10e-5,0.14721 -0.0185,0.30358 -0.0565,0.46911 -0.0371,0.1656 -0.0312,0.29438 0.0185,0.38632 0.0253,-0.20232 0.0614,-0.37708 0.11233,-0.52429 0.0497,-0.14713 0.0751,-0.2943 0.0751,-0.4415 l -0.41062,0 c 0,0.092 0,0.22078 0.0185,0.38631 0.0137,0.1656 0.0439,0.29438 0.0936,0.38632 l 0,0 z m -25.30511,-0.77264 c 1.71686,-0.11033 3.5519,-0.12874 5.5052,-0.0552 1.95332,0.0736 3.81303,0.092 5.57996,0.0552 -1.81647,-0.29431 -3.68892,-0.46905 -5.61724,-0.52428 -1.92832,-0.0552 -3.75106,0.11961 -5.46792,0.52428 l 0,0 z m 17.72858,1.15896 c 0.19893,0.0552 0.36694,0.12421 0.50395,0.20695 0.13672,0.0828 0.30453,0.15181 0.50355,0.20697 0.34852,-0.23912 0.68435,-0.45987 1.0078,-0.66227 0.32364,-0.20233 0.62213,-0.45066 0.89584,-0.74505 -0.12433,4e-5 -0.18664,-0.0321 -0.18664,-0.0966 0,-0.0644 -0.0254,-0.0966 -0.0751,-0.0966 -0.64699,0.0369 -1.15095,0.18401 -1.51164,0.44152 -0.3609,0.25757 -0.74022,0.50592 -1.13827,0.74504 l 0,0 z m -22.16984,-1.21414 c 0.32332,-0.0367 0.64692,-0.0966 0.97023,-0.17937 0.32346,-0.0828 0.62207,-0.19772 0.89581,-0.34493 -0.34833,0.092 -0.69678,0.17022 -1.04511,0.23456 -0.34831,0.0644 -0.62204,0.161 -0.82093,0.28974 l 0,0 z m 25.41681,1.02098 c 0.47274,0.0184 0.88336,0.0139 1.23169,-0.0138 0.34831,-0.0275 0.72149,-0.005 1.11973,0.0691 0.0751,-0.0919 0.0936,-0.17473 0.0566,-0.24835 -0.0371,-0.0736 -0.0439,-0.15633 -0.0185,-0.24835 -0.19902,-0.0183 -0.43549,-0.0322 -0.70912,-0.0414 -0.27381,-0.01 -0.54128,5e-5 -0.80243,0.0276 -0.26133,0.0277 -0.47898,0.0782 -0.65323,0.15175 -0.17406,0.0736 -0.24875,0.17481 -0.22389,0.30355 l 0,0 z m -8.95749,-0.55188 c -0.87078,-0.0367 -1.82875,-0.0782 -2.87379,-0.12419 -1.04511,-0.046 -2.09021,-0.0597 -3.13516,-0.0414 -0.29874,3e-5 -0.47904,0.005 -0.54119,0.0137 -0.0628,0.01 -0.0561,0.0184 0.0186,0.0277 0.0749,0.01 0.19287,0.023 0.3546,0.0414 0.16173,0.0184 0.30488,0.0277 0.42932,0.0277 0.97024,0.0369 1.99047,0.0691 3.06045,0.0966 1.0698,0.0276 2.0776,0.0782 3.02328,0.15178 0.0751,3e-5 0.13671,-0.0322 0.18653,-0.0966 0.0497,-0.0644 0.13672,-0.0874 0.26115,-0.0691 0.12432,-0.0367 0.24875,-0.0322 0.37317,0.0138 0.12433,0.0461 0.21151,0.0413 0.26134,-0.0138 -0.12433,2e-5 -0.255,-0.0183 -0.39171,-0.0552 -0.137,-0.0367 -0.27391,-0.069 -0.41081,-0.0966 -0.13672,-0.0275 -0.25501,-0.0367 -0.35457,-0.0276 -0.0989,0.009 -0.18663,0.0598 -0.26113,0.15178 l 0,0 z m 13.62298,9.76837 c 0.12422,0.0369 0.19268,0.0552 0.20516,0.0552 0.0136,4e-5 -0.0185,-0.0184 -0.0936,-0.0552 0.0254,-1.61884 0.0497,-3.20091 0.0751,-4.74623 0.0254,-1.54524 -0.0254,-3.09972 -0.14929,-4.66342 -0.27381,0.82785 -0.42291,1.6419 -0.44797,2.4421 -0.0254,0.80025 -0.0136,1.5913 0.037,2.37311 0.0497,0.78185 0.12434,1.55449 0.22389,2.31791 0.10025,0.76347 0.1492,1.5223 0.1493,2.27653 l 0,0 z m -27.61924,-9.85117 c -0.0241,0.0552 -0.0374,0.1472 -0.0374,0.27594 0.59719,0.0368 1.2131,0.0552 1.84745,0.0552 0.63463,5e-5 1.2691,5e-5 1.90359,0 0.63449,5e-5 1.25653,0.01 1.86616,0.0276 0.6095,0.0184 1.17568,0.0552 1.69816,0.11034 0.47275,-0.0367 0.93308,-0.0414 1.38098,-0.0138 0.44775,0.0277 0.90808,-0.005 1.38098,-0.0966 -1.79145,-0.0919 -3.50217,-0.18851 -5.13189,-0.28974 -1.62986,-0.10112 -3.26572,-0.12412 -4.90814,-0.069 l 0,0 z m 27.0593,1.90401 c -0.0497,-0.23913 -0.0185,-0.44607 0.0936,-0.62087 0.11223,-0.17474 0.1056,-0.3909 -0.0185,-0.64848 0,0.2024 -0.0254,0.41396 -0.0751,0.63468 -0.0497,0.22078 -0.0497,0.43234 0,0.63467 l 0,0 z m -29.5598,-1.5177 c 0.44788,0.0184 0.7652,0.0139 0.9518,-0.0138 0.18658,-0.0275 0.4789,-0.0322 0.87707,-0.0138 0,-0.0552 0,-0.12413 0,-0.20695 0,-0.0827 0.0134,-0.14253 0.0374,-0.17937 -0.39817,-0.0183 -0.74034,0.023 -1.02637,0.12419 -0.28616,0.10124 -0.56619,0.1978 -0.83979,0.28973 l 0,0 z m 2.20205,0 c 0.0749,4e-5 0.11228,-0.0644 0.11228,-0.19315 0,-0.12873 -0.0614,-0.20233 -0.1866,-0.22076 0.0495,0.11045 0.0254,0.20239 -0.0749,0.27595 -0.0989,0.0736 -0.0494,0.11961 0.1493,0.13796 l 0,0 z m 11.90593,0.19317 c 0.5723,0.0369 1.1445,0.0553 1.71699,0.0552 0.57231,3e-5 1.0823,-0.046 1.53027,-0.13797 -0.14929,0.0369 -0.37347,0.0414 -0.67186,0.0138 -0.29859,-0.0275 -0.60965,-0.0552 -0.933,-0.0828 -0.32355,-0.0275 -0.63462,-0.0367 -0.93319,-0.0277 -0.29849,0.01 -0.53496,0.0691 -0.70921,0.17936 l 0,0 z m 3.65779,0.0276 0,0.0828 c 0.32345,0.0736 0.65928,0.115 1.00778,0.12417 0.34832,0.009 0.65929,-0.0138 0.9331,-0.069 -0.099,-0.0736 -0.23646,-0.11954 -0.41081,-0.13797 -0.17397,-0.0183 -0.36061,-0.0275 -0.55973,-0.0276 -0.19902,4e-5 -0.38566,0.005 -0.55981,0.0138 -0.17416,0.01 -0.31117,0.0138 -0.41053,0.0138 l 0,0 z m 6.75537,0.66227 c 1.09486,0.0369 2.26424,0.0644 3.5084,0.0828 0,-0.0919 0,-0.16554 0,-0.22076 0,-0.0552 -0.0254,-0.11034 -0.0751,-0.16557 -0.29869,0.0184 -0.62838,0.0138 -0.98918,-0.0138 -0.36069,-0.0275 -0.70287,-0.046 -1.02622,-0.0552 -0.32354,-0.01 -0.61598,0.01 -0.87722,0.0552 -0.26133,0.0461 -0.44163,0.1518 -0.54119,0.31733 l 0,0 z m -19.07195,-0.41392 c -0.5226,-0.0183 -1.05136,-0.0415 -1.58628,-0.069 -0.53491,-0.0275 -1.01395,0.0322 -1.43698,0.17936 0.49761,0.0369 1.02651,0.0736 1.58628,0.11034 0.55977,0.0369 1.11967,0.0552 1.67944,0.0552 0.5599,5e-5 1.09495,-0.0275 1.60499,-0.0828 0.51006,-0.0552 0.9518,-0.15635 1.32499,-0.30355 -0.52249,-0.0736 -1.04509,-0.0827 -1.56758,-0.0276 -0.5226,0.0553 -1.05751,0.10124 -1.60486,0.13798 l 0,0 z m 12.91374,0.24833 c -1.04514,-0.0367 -2.13367,-0.069 -3.26569,-0.0966 -1.13231,-0.0275 -2.39497,-0.0598 -3.78837,-0.0966 0.34831,0.0553 0.67177,0.11501 0.97036,0.17938 0.29861,0.0644 0.54748,0.1426 0.74649,0.23454 0.12432,0.0184 0.23,0.0138 0.31717,-0.0138 0.0868,-0.0275 0.19289,-0.0414 0.31731,-0.0414 0.92072,0.1288 1.92216,0.21159 3.00455,0.24835 1.08239,0.0369 2.08375,0.0736 3.00456,0.11034 0.27352,0.0184 0.54723,0.0139 0.82096,-0.0138 0.27371,-0.0275 0.43548,-0.14255 0.48531,-0.34492 -0.37328,-0.14714 -0.7839,-0.22072 -1.23167,-0.22076 -0.44807,4e-5 -0.90824,0.0184 -1.38098,0.0552 l 0,0 z m -9.14412,-0.13796 c -0.19902,-0.0183 -0.43546,-0.009 -0.70919,0.0277 -0.27375,0.0369 -0.51019,0.10124 -0.70907,0.19316 0.57232,-0.0919 1.18797,-0.11953 1.84732,-0.0828 0.65947,0.0369 1.21309,0.01 1.661,-0.0828 -0.39818,-0.0736 -0.75893,-0.10112 -1.08239,-0.0828 -0.32345,0.0184 -0.65948,0.0276 -1.00767,0.0276 l 0,0 z m -7.68854,-0.0276 0.37319,0 c 0.0989,-0.0919 0.0615,-0.12873 -0.11228,-0.11034 -0.17416,0.0184 -0.26118,0.0552 -0.26118,0.11034 l 0,0 z m 0.78366,-0.0828 -0.0749,0 c -0.0989,4e-5 -0.16174,-0.01 -0.1866,-0.0276 -0.0749,0.092 -0.0374,0.14261 0.11228,0.15176 0.1493,0.01 0.19915,-0.0322 0.1493,-0.12417 l 0,0 z m -3.80691,0.0828 c 0.1243,5e-5 0.27372,0.01 0.44789,0.0276 0.17416,0.0184 0.28616,-0.0459 0.33589,-0.19316 -0.19902,0.0369 -0.37934,0.0507 -0.5412,0.0413 -0.16172,-0.01 -0.24258,0.0322 -0.24258,0.12416 l 0,0 z m 25.34235,0.60707 c 0.24876,0.0736 0.55982,0.12882 0.9331,0.16558 0.37317,0.0369 0.75894,0.0644 1.15708,0.0828 0.39804,0.0184 0.79629,0.023 1.19433,0.0138 0.39795,-0.01 0.74647,-0.023 1.04494,-0.0414 -0.27371,-0.0552 -0.59092,-0.0966 -0.95172,-0.12417 -0.36089,-0.0275 -0.73407,-0.0506 -1.11964,-0.0691 -0.38575,-0.0183 -0.77765,-0.0275 -1.1757,-0.0276 -0.39814,3e-5 -0.75904,3e-5 -1.08239,0 l 0,0 z m -29.03726,-0.13796 c 0.14929,-0.0919 0.31717,-0.18393 0.50377,-0.27595 0.18658,-0.0919 0.34217,-0.21152 0.46661,-0.35872 -0.12432,0.092 -0.31103,0.18399 -0.55977,0.27594 -0.24902,0.092 -0.38575,0.21161 -0.41061,0.35873 l 0,0 z m 2.79925,0 c 0.32332,-0.0183 0.6965,-0.023 1.11967,-0.0138 0.4229,0.01 0.84592,0.0184 1.26897,0.0276 0.4229,0.01 0.82107,3e-5 1.19426,-0.0276 0.3733,-0.0275 0.65934,-0.0874 0.85848,-0.17936 -0.72163,-0.0183 -1.48041,-0.0367 -2.27676,-0.0552 -0.79621,-0.0183 -1.51771,0.0644 -2.16462,0.24835 l 0,0 z m 4.81457,-0.0552 c 0.0749,3e-5 0.22389,0.01 0.44789,0.0277 0.22402,0.0184 0.33589,-0.0183 0.33589,-0.11034 -0.1243,0.0369 -0.26745,0.0369 -0.42917,0 -0.16174,-0.0367 -0.28004,-0.01 -0.35461,0.0828 l 0,0 z m 17.72841,0.4967 c -1.04504,2e-5 -2.0154,-0.0321 -2.91114,-0.0966 -0.89575,-0.0644 -1.87858,-0.0598 -2.94849,0.0138 0.52248,0.25759 1.0822,0.40934 1.67956,0.45531 0.59707,0.0461 1.25654,0.0506 1.97804,0.0138 0.79619,-0.0183 1.55513,-0.0138 2.27682,0.0138 0.72149,0.0277 1.48033,0.005 2.27662,-0.0691 -0.0254,-0.0919 -0.10561,-0.16093 -0.24261,-0.20696 -0.13672,-0.046 -0.2862,-0.0782 -0.44777,-0.0966 -0.16187,-0.0183 -0.33604,-0.0275 -0.52258,-0.0275 -0.18663,2e-5 -0.34217,2e-5 -0.4665,0 -0.12432,0.0369 -0.19297,0.10579 -0.20535,0.20696 -0.0136,0.10123 -0.11761,0.1242 -0.31731,0.069 -0.0751,-0.0367 -0.0868,-0.0919 -0.037,-0.16557 0.0497,-0.0736 0.0136,-0.11034 -0.11223,-0.11034 l 0,0 z m 6.15839,0.24835 c -0.34831,-0.0184 -0.69049,-0.0506 -1.02632,-0.0966 -0.33602,-0.046 -0.6035,0.005 -0.80252,0.15177 0.39804,0.0552 0.88326,0.10124 1.45566,0.13797 0.57211,0.0369 0.99512,-0.0184 1.26903,-0.16557 -0.12433,-0.11033 -0.27391,-0.14253 -0.44807,-0.0966 -0.17416,0.0461 -0.32344,0.0691 -0.44778,0.0691 l 0,0 z m -23.77478,-0.27595 c 0.0494,-0.0367 0.224,-0.0505 0.52247,-0.0414 0.2986,0.01 0.51005,-0.0322 0.63448,-0.12417 -0.27373,0.0553 -0.53491,0.0736 -0.78365,0.0552 -0.24887,-0.0184 -0.3733,0.0184 -0.3733,0.11034 l 0,0 z m -3.13515,0.0276 c 0.19902,-0.0183 0.42304,-0.023 0.67192,-0.0137 0.24873,0.009 0.49134,0.0138 0.72777,0.0137 0.23619,3e-5 0.46635,-0.005 0.69048,-0.0137 0.22389,-0.01 0.39805,-0.0505 0.52249,-0.12417 -0.34845,4e-5 -0.78993,4e-5 -1.32497,0 -0.53504,4e-5 -0.96424,0.0461 -1.28769,0.13797 l 0,0 z m -2.61266,-0.0828 c 0.27375,0.0184 0.51018,0.0277 0.7092,0.0277 0.19903,4e-5 0.39805,4e-5 0.5972,0 -0.1243,-0.0919 -0.36089,-0.13333 -0.70906,-0.12417 -0.34859,0.01 -0.54747,0.0414 -0.59734,0.0966 l 0,0 z m 7.27808,0.85543 c 0.1243,0.0184 0.24246,0.005 0.35446,-0.0414 0.11228,-0.046 0.16801,-0.023 0.16801,0.069 -0.17429,5e-5 -0.36088,0.023 -0.55977,0.069 -0.19915,0.0461 -0.37959,0.11045 -0.54118,0.19316 -0.16174,0.0828 -0.28618,0.184 -0.37332,0.30354 -0.0868,0.1196 -0.0935,0.23459 -0.0186,0.34492 0.0989,-0.0367 0.23631,-0.0966 0.41047,-0.17936 0.17429,-0.0827 0.34832,-0.17473 0.5226,-0.27595 0.17417,-0.10112 0.3359,-0.19772 0.48519,-0.28973 0.14916,-0.0919 0.26118,-0.17473 0.33589,-0.24835 0.2736,-0.0919 0.5349,-0.18392 0.78378,-0.27593 0.24875,-0.0919 0.47263,-0.21153 0.67179,-0.35873 -0.39804,0.092 -0.78993,0.19779 -1.17568,0.31733 -0.38562,0.1196 -0.74022,0.24378 -1.06367,0.37252 l 0,0 z m 22.72973,-0.0277 c -0.47293,-0.0183 -0.88336,-0.0275 -1.23167,-0.0276 -0.34842,3e-5 -0.70921,-0.01 -1.08239,-0.0277 -0.27372,0.0369 -0.58478,0.0322 -0.9331,-0.0138 -0.34831,-0.046 -0.65928,0.005 -0.93309,0.15177 1.04513,0.0369 2.0031,0.092 2.87388,0.16556 0.87079,0.0736 1.82875,0.0736 2.87379,0 -0.0497,-0.12874 -0.14305,-0.21152 -0.27977,-0.24834 -0.13699,-0.0367 -0.28629,-0.0552 -0.44796,-0.0552 -0.16178,3e-5 -0.31731,0.01 -0.46641,0.0277 -0.14939,0.0184 -0.27382,0.0276 -0.37328,0.0276 l 0,0 z m -5.48644,-0.0552 c 0.12424,3e-5 0.29225,0.0276 0.50386,0.0828 0.2113,0.0552 0.34207,0.0369 0.39189,-0.0552 -0.19912,-0.0183 -0.39189,-0.0367 -0.57854,-0.0552 -0.18683,-0.0183 -0.29243,-0.01 -0.31721,0.0276 l 0,0 z m -22.05801,-0.49668 c -0.52261,-0.0183 -1.04509,-0.0507 -1.56756,-0.0966 -0.52262,-0.046 -0.95794,-0.0413 -1.30626,0.0138 -0.19902,0.0369 -0.37331,0.11045 -0.52261,0.22076 -0.1493,0.11045 -0.28604,0.18399 -0.41047,0.22075 -0.12431,3e-5 -0.22388,-0.01 -0.29861,-0.0276 -0.0749,-0.0183 -0.11227,0.0184 -0.11227,0.11034 1.11954,0.092 2.1522,0.10124 3.09771,0.0275 0.94538,-0.0736 1.8786,-0.12874 2.79925,-0.16557 0.1243,0.0184 0.31102,0.0322 0.55989,0.0414 0.24876,0.01 0.42292,-0.0598 0.52249,-0.20695 -0.34845,-0.0367 -0.76521,-0.0644 -1.25026,-0.0828 -0.48532,-0.0184 -0.98922,-0.0367 -1.51171,-0.0552 l 0,0 z m -3.76962,-0.22076 c -0.27373,0.092 -0.53491,0.1886 -0.78379,0.28974 -0.24873,0.10125 -0.43533,0.25297 -0.55989,0.4553 0.12431,-0.0367 0.25502,-0.0598 0.39202,-0.069 0.13673,-0.01 0.30475,-0.0138 0.5039,-0.0138 0,-0.14713 0.0427,-0.27131 0.13099,-0.37252 0.0868,-0.10112 0.19287,-0.19773 0.31731,-0.28974 l 0,0 z m 7.05407,0.30353 c -0.10026,0.0553 -0.16174,0.11961 -0.18674,0.19316 0.12431,4e-5 0.29861,-0.005 0.52261,-0.0138 0.22402,-0.009 0.41062,-0.0597 0.55991,-0.15178 -0.19915,-0.0736 -0.34846,-0.0966 -0.4479,-0.0691 -0.0989,0.0276 -0.24887,0.0414 -0.44788,0.0414 l 0,0 z m -0.2986,0.19316 0,-0.0552 c 0,-0.0183 0,-0.0367 0.0186,-0.0552 0.0134,-0.0183 0.0187,-0.046 0.0187,-0.0828 l -0.14929,-0.0275 c -0.0255,0.18399 0.0134,0.25758 0.11228,0.22074 l 0,0 z m 15.26508,0.68987 c 1.11984,-0.11034 2.28287,-0.12415 3.48968,-0.0414 1.20691,0.0828 2.53172,0.0966 3.975,0.0414 0.12423,0.0736 0.18653,0.0828 0.18653,0.0277 0,-0.0552 -0.0624,-0.0644 -0.18653,-0.0277 -1.31876,-0.0367 -2.62514,-0.10579 -3.91893,-0.20696 -1.29399,-0.10113 -2.68744,-0.17015 -4.18007,-0.20697 0.0497,0.092 0.13672,0.17481 0.26115,0.24834 0.12432,0.0736 0.24875,0.12882 0.37317,0.16559 l 0,0 z m 3.28452,0.19315 c -0.34842,-0.0183 -0.70287,-0.0367 -1.06377,-0.0552 -0.36089,-0.0183 -0.71535,0.0461 -1.06366,0.19316 0,0.14719 0.12433,0.19778 0.37318,0.15176 0.24885,-0.046 0.47274,-0.0873 0.67195,-0.12418 0.39795,0.11046 0.84593,0.16099 1.34353,0.15177 0.4976,-0.009 1.0076,-0.005 1.53026,0.0138 0.92062,-0.0184 1.82875,-0.0138 2.7245,0.0138 0.89566,0.0277 1.64221,-0.0229 2.23947,-0.15178 -1.24416,-0.0919 -2.38877,-0.13793 -3.4338,-0.13796 -1.04495,3e-5 -2.1522,-0.0184 -3.32166,-0.0552 l 0,0 z m -22.91642,-0.0552 c 0.39803,-0.0183 0.75892,-0.023 1.08238,-0.0138 0.32346,0.01 0.64691,0.023 0.97037,0.0414 0.32346,0.0184 0.6532,0.0369 0.98909,0.0552 0.33588,0.0184 0.71535,0.0277 1.13837,0.0277 0,-0.0919 0,-0.15633 0,-0.19315 0,-0.0367 -0.0254,-0.10113 -0.0749,-0.19317 -0.47275,-0.0183 -1.0761,-0.01 -1.81015,0.0276 -0.73407,0.0369 -1.49914,0.11961 -2.29536,0.24836 l 0,0 z m -4.44154,-0.11032 c 0.27375,-0.0552 0.57862,-0.069 0.91465,-0.0414 0.33588,0.0276 0.64063,0.023 0.91436,-0.0138 -0.0495,-0.11034 -0.16172,-0.17471 -0.33589,-0.19316 -0.17428,-0.0183 -0.36089,-0.0183 -0.5599,0 -0.19915,0.0184 -0.38575,0.0506 -0.55977,0.0966 -0.17429,0.0461 -0.29873,0.0966 -0.37345,0.15175 l 0,0 z m 28.96282,1.37973 c 0,0.0184 0.0566,0.0229 0.16791,0.0138 0.11223,-0.009 0.24885,-0.0275 0.41063,-0.0552 0.16157,-0.0275 0.32344,-0.046 0.48512,-0.0552 0.16177,-0.009 0.29234,-0.005 0.3919,0.0138 0.27373,-0.0919 0.59708,-0.12874 0.97044,-0.11034 0.37328,0.0184 0.78371,-0.0183 1.23169,-0.11033 0.0751,0.0552 0.11759,0.11045 0.13095,0.16554 0.0136,0.0553 0.0185,0.10125 0.0185,0.13799 0.39804,3e-5 0.78379,-0.009 1.15707,-0.0277 0.37319,-0.0184 0.7215,-0.0184 1.04485,0 0.0751,-0.0919 0.10025,-0.20692 0.0751,-0.34492 -0.0254,-0.13793 -0.037,-0.25292 -0.037,-0.34494 -1.36868,0.0553 -2.787,0.0783 -4.25496,0.0691 -1.46814,-0.009 -2.83653,0.0139 -4.10546,0.069 0.12422,0.14719 0.29224,0.24837 0.50384,0.30354 0.21141,0.0553 0.4353,0.0783 0.67167,0.069 0.23647,-0.009 0.48532,-0.0414 0.74665,-0.0966 0.26114,-0.0552 0.49127,-0.11955 0.69049,-0.19315 0.12423,0.092 0.13671,0.18399 0.037,0.27592 -0.10024,0.092 -0.2116,0.16561 -0.33593,0.22077 l 0,0 z m -3.35911,-0.6071 c 0.24885,0.2392 0.4976,0.41397 0.74645,0.52431 0,-0.0552 0.0254,-0.0919 0.0751,-0.11034 0.0497,-0.0183 0.0751,-0.046 0.0751,-0.0828 -0.12423,-0.0919 -0.21784,-0.19312 -0.27996,-0.30352 -0.0614,-0.11035 -0.26747,-0.11955 -0.61578,-0.0276 l 0,0 z m -22.05796,-0.49669 c -0.42291,4e-5 -0.87081,-0.0183 -1.34356,-0.0552 -0.47288,-0.0367 -0.91438,-0.0507 -1.32498,-0.0414 -0.41059,0.01 -0.77749,0.0598 -1.10108,0.15178 -0.32333,0.092 -0.55977,0.25757 -0.70907,0.49668 1.49298,0.0369 2.93598,-0.005 4.32952,-0.12415 1.3934,-0.11955 2.87383,-0.18855 4.4414,-0.20696 -0.79621,-0.0736 -1.51156,-0.11954 -2.14619,-0.13797 -0.63434,-0.0183 -1.34983,-0.046 -2.14604,-0.0828 l 0,0 z m 24.89449,1.35213 c -0.0254,0.092 -0.0185,0.15179 0.0185,0.17936 0.0371,0.0276 0.0185,0.0691 -0.0565,0.12418 -0.12433,0.0369 -0.28621,0.0184 -0.48522,-0.0552 -0.19903,-0.0736 -0.29859,-0.0644 -0.29859,0.0276 0.37318,0.092 0.77757,0.138 1.21296,0.13796 0.43549,4e-5 0.8895,-0.0138 1.36244,-0.0414 0.47264,-0.0275 0.95162,-0.0505 1.43684,-0.0689 0.48503,-0.0183 0.93934,-0.009 1.36225,0.0277 0,0.184 -0.1369,0.30358 -0.41043,0.35874 -0.32344,-0.0367 -0.65937,-0.069 -1.00768,-0.0966 -0.34852,-0.0275 -0.62223,0.0322 -0.82126,0.17935 0.64699,0.0184 1.38098,0.0277 2.20213,0.0277 0.82105,2e-5 1.53026,-0.0736 2.12743,-0.22076 -10e-5,-0.0919 -10e-5,-0.17013 0,-0.23455 -10e-5,-0.0644 0.0136,-0.14253 0.0371,-0.23455 -0.5723,-0.0367 -1.15708,-0.0552 -1.75415,-0.0552 -0.59736,4e-5 -1.18195,0.009 -1.75415,0.0276 -0.5723,0.0184 -1.13222,0.0229 -1.67956,0.0138 -0.54734,-0.009 -1.04513,-0.0414 -1.49301,-0.0966 l 0,0 z m 7.68857,3.03537 c -0.0497,0.23918 -0.0751,0.52432 -0.0751,0.85542 0,0.33115 0,0.67609 0,1.03478 0,0.35875 0,0.71747 0.0185,1.07617 0.0136,0.35875 0,0.68528 -0.0185,0.9796 0.0497,0.0552 0.13095,0.092 0.24261,0.11034 0.11223,0.0184 0.20516,0.0552 0.27995,0.11034 -2.9e-4,0.092 -0.0302,0.16099 -0.0936,0.20696 -0.0624,0.046 -0.0312,0.0783 0.0936,0.0966 0.19893,-0.0552 0.29225,-0.16094 0.27977,-0.31733 -0.0136,-0.15635 0,-0.28053 0.0185,-0.37253 0,-0.0919 -0.0254,-0.20694 -0.0751,-0.34493 -0.0497,-0.13794 -0.0624,-0.28051 -0.0371,-0.42771 -0.14939,-0.93818 -0.2863,-1.89937 -0.41063,-2.88361 -0.12423,-0.98415 -0.19912,-1.96375 -0.22398,-2.93877 0.0254,-0.0552 -0.0137,-0.0827 -0.11225,-0.0828 -0.0497,0.58872 -0.0751,1.1084 -0.0751,1.55907 0,0.45073 0.0624,0.89684 0.18655,1.33832 l 0,0 z m -31.05278,-3.47689 c -0.92067,0.0369 -1.81633,0.0322 -2.68725,-0.0138 -0.8708,-0.046 -1.76658,-0.0505 -2.68723,-0.0138 -0.12431,-0.0183 -0.29861,-0.0183 -0.52249,0 -0.22388,0.0184 -0.4106,0.092 -0.5599,0.22076 1.44327,0.0369 2.84897,0.0828 4.21752,0.13797 1.36854,0.0553 2.7121,0.0277 4.03092,-0.0828 0.19889,4e-5 0.39805,-0.005 0.59706,-0.0138 0.19915,-0.009 0.31103,-0.0873 0.3359,-0.23455 -0.44777,-0.11033 -0.88323,-0.14713 -1.30627,-0.11033 -0.42303,0.0369 -0.89565,0.0736 -1.41826,0.11033 l 0,0 z m 22.28193,0.91061 c -10e-5,-0.0552 -0.0185,-0.0966 -0.0566,-0.12418 -0.0371,-0.0275 -0.0566,-0.0873 -0.0566,-0.17936 l -0.41053,0 c 0,0.092 0.0751,0.1518 0.22389,0.17936 0.1493,0.0277 0.24885,0.0691 0.29869,0.12418 l 0,0 z m -19.85587,-0.46911 c -0.52248,0.0369 -1.11982,0.0736 -1.79145,0.11033 -0.6719,0.0369 -1.3314,0.0736 -1.97831,0.11034 -0.72149,-0.0367 -1.45555,-0.0782 -2.20192,-0.12418 -0.74649,-0.0459 -1.40583,-0.0873 -1.97816,-0.12417 -0.19903,2e-5 -0.41677,0.009 -0.65321,0.0275 -0.23631,0.0184 -0.41675,0.10124 -0.54118,0.24835 1.26897,-0.0183 2.53179,0.0139 3.78847,0.0966 1.25641,0.0828 2.51922,0.12421 3.78819,0.12417 0.34832,-0.0552 0.69048,-0.0782 1.02625,-0.069 0.33588,0.009 0.56604,-0.0782 0.69048,-0.26214 0,-0.0736 -0.0494,-0.11954 -0.14916,-0.13798 l 0,0 z m 0.82108,2.26272 c 0,0.0184 0.0134,0.0184 0.0374,0 0.0494,4e-5 0.0749,-0.0367 0.0749,-0.11033 0.0989,-0.31271 0.14301,-0.63004 0.13098,-0.952 -0.0134,-0.32191 0.0307,-0.57486 0.13098,-0.75885 -0.0749,-0.0183 -0.0989,-0.0552 -0.0749,-0.11034 0.0254,-0.0552 0,-0.0919 -0.0749,-0.11033 -0.0749,0.29436 -0.12431,0.62089 -0.14917,0.97958 -0.0254,0.35877 -0.0494,0.71289 -0.0749,1.06238 l 0,0 z m 26.05149,-1.13135 c -0.12433,-0.0919 -0.24895,-0.12874 -0.37318,-0.11034 -0.12433,0.0184 -0.21161,0.0276 -0.26124,0.0276 -0.87098,0.0184 -1.75424,0.0184 -2.65009,0 -0.89566,-0.0183 -1.80398,-0.046 -2.7246,-0.0828 0.0497,0.22079 0.17426,0.38637 0.37347,0.4967 0.19884,0.11045 0.44145,0.1886 0.72774,0.23456 0.28601,0.0461 0.60331,0.069 0.95162,0.0689 0.34831,2e-5 0.69683,-0.009 1.04514,-0.0277 0.6469,0.0369 1.30609,0.0229 1.97804,-0.0413 0.67186,-0.0644 1.24407,-0.115 1.717,-0.15176 0.0751,-0.0919 0.0936,-0.17474 0.0565,-0.24836 -0.037,-0.0736 -0.0565,-0.18392 -0.0565,-0.33114 -0.27391,5e-5 -0.45431,0.0184 -0.54119,0.0552 -0.0868,0.0369 -0.16801,0.0736 -0.24271,0.11034 l 0,0 z m -30.94079,-0.46911 c -0.79622,-0.0183 -1.54898,-0.0506 -2.25805,-0.0966 -0.7092,-0.046 -1.34984,-0.0505 -1.92217,-0.0138 -0.27375,2e-5 -0.52863,0.009 -0.76508,0.0275 -0.23644,0.0184 -0.41674,0.10124 -0.54119,0.24835 1.24399,0.0369 2.57523,0.0828 3.99351,0.13797 1.41826,0.0553 2.78682,0.0828 4.1055,0.0828 0.19917,-0.0552 0.43561,-0.0919 0.7092,-0.11034 0.2736,-0.0183 0.47275,-0.0736 0.5972,-0.16558 -0.52247,-0.11033 -1.12595,-0.14713 -1.81016,-0.11033 -0.68434,0.0369 -1.38727,0.0369 -2.10876,0 l 0,0 z m 24.37186,1.18655 c 0.0254,-0.0552 0.0254,-0.11488 0,-0.17935 -0.0254,-0.0644 -0.0624,-0.12414 -0.11223,-0.17937 -0.0497,-0.0552 -0.10024,-0.0919 -0.1493,-0.11034 -0.0497,-0.0184 -0.0751,3e-5 -0.0751,0.0552 0.12433,0.0184 0.1803,0.0736 0.16772,0.16556 -0.0136,0.092 0.0439,0.1748 0.16801,0.24836 l 0,0 z m 0.11234,0.46911 c -0.0497,-0.0919 -0.0565,-0.14253 -0.0185,-0.15177 0.0371,-0.009 0.0566,-0.0873 0.0566,-0.23454 -0.19901,3e-5 -0.37318,-0.0736 -0.52246,-0.22076 0.19902,0.47833 0.44787,0.92903 0.74635,1.35211 0.29859,0.42315 0.60332,0.84625 0.91447,1.26935 0.31107,0.42312 0.59717,0.85084 0.85841,1.28313 0.26124,0.43232 0.46659,0.87843 0.61589,1.33831 0.0254,-0.44147 -0.0312,-0.82779 -0.16802,-1.15896 -0.13691,-0.3311 -0.3919,-0.59784 -0.76508,-0.80022 0.0497,-0.0552 0.0868,-0.10111 0.11224,-0.13797 0.0254,-0.0367 0.0751,-0.0552 0.14949,-0.0552 0.0497,1e-5 0.0868,0.0322 0.11223,0.0966 0.0254,0.0644 0.0751,0.0966 0.14929,0.0966 -0.19912,-0.47828 -0.39814,-0.96579 -0.59726,-1.46251 -0.19902,-0.49666 -0.53495,-0.90139 -1.00759,-1.21415 0.0253,-0.14715 -0.0371,-0.27591 -0.18684,-0.38631 -0.1492,-0.11034 -0.286,-0.13794 -0.41043,-0.0828 0.0497,2e-5 0.0751,0.069 0.0751,0.20696 0,0.138 -0.0371,0.22539 -0.11233,0.26214 l 0,0 z m 1.97814,-0.33113 c -0.0989,0.0184 -0.14315,0.0369 -0.13096,0.0552 0.0137,0.0184 0.0439,0.0322 0.0936,0.0414 0.0497,0.009 0.0989,0.0139 0.14929,0.0138 0.0497,3e-5 0.0614,3e-5 0.037,0 0.32325,0.0369 0.72765,0.0691 1.21296,0.0966 0.48503,0.0276 0.97649,0.0461 1.47429,0.0552 0.4976,0.009 0.96401,3e-5 1.3995,-0.0275 0.43549,-0.0275 0.76508,-0.0873 0.98907,-0.17938 -0.44787,-0.0552 -0.90813,-0.0827 -1.38078,-0.0828 -0.47293,2e-5 -0.93329,0.005 -1.38117,0.0138 -0.44787,0.009 -0.87703,0.0229 -1.28755,0.0414 -0.41072,0.0184 -0.80243,0.009 -1.1756,-0.0277 l 0,0 z m -24.14802,-0.74504 c -1.19438,0.0553 -2.42606,0.0277 -3.69503,-0.0828 -1.26898,-0.11035 -2.46336,-0.15634 -3.58302,-0.13799 -0.12432,0.0369 -0.27375,0.0553 -0.44791,0.0552 -0.17416,3e-5 -0.29846,0.0459 -0.37316,0.13797 0.67176,-0.0367 1.36225,-0.0412 2.07145,-0.0138 0.70907,0.0276 1.43057,0.0644 2.16463,0.11033 0.73405,0.0461 1.46812,0.0873 2.20206,0.12417 0.73406,0.0369 1.46183,0.0369 2.18346,0 0.0495,4e-5 0.17416,0.009 0.37332,0.0276 0.19889,0.0184 0.33589,-0.046 0.41047,-0.19316 -0.0495,-0.0184 -0.14301,-0.0322 -0.28002,-0.0414 -0.13673,-0.009 -0.2736,-0.0138 -0.41047,-0.0138 -0.13687,3e-5 -0.26745,0.005 -0.39189,0.0138 -0.1243,0.009 -0.19902,0.0139 -0.22389,0.0138 l 0,0 z m 1.41828,0.11034 c 0.1243,0.0552 0.19902,0.0644 0.22388,0.0276 0.0254,-0.0367 0.0374,-0.0736 0.0374,-0.11034 l 0,-0.0277 -0.0374,0 c -0.0254,4e-5 -0.0494,0.009 -0.0749,0.0277 l -0.0749,0 c -0.0494,3e-5 -0.0749,0.0276 -0.0749,0.0828 l 0,0 z m -8.88293,0.13796 c -0.19915,3e-5 -0.41676,0.009 -0.65319,0.0276 -0.23632,0.0184 -0.32961,0.1288 -0.2799,0.33113 1.31871,0.092 2.53795,0.138 3.65763,0.13797 1.11966,3e-5 2.20218,0.0184 3.24713,0.0552 0.39805,0.0184 0.82736,0.0184 1.28769,0 0.46019,-0.0184 0.82735,-0.11953 1.10109,-0.30353 -1.24425,-0.0367 -2.61894,-0.0873 -4.12422,-0.15177 -1.50543,-0.0644 -2.91741,-0.0966 -4.23623,-0.0966 l 0,0 z m 8.77092,0.24835 c -0.0749,0.092 -0.0749,0.138 0,0.13796 0.0749,4e-5 0.11227,0.0184 0.11227,0.0552 0.0495,-0.0736 0.0495,-0.12874 0,-0.16556 -0.0254,-0.0184 -0.0615,-0.0275 -0.11227,-0.0277 l 0,0 z m 23.21492,1.13136 c 0.34832,-0.0183 0.71535,-0.0183 1.10102,0 0.38566,0.0184 0.76518,0.0322 1.13845,0.0414 0.37318,0.009 0.73379,0.0138 1.0823,0.0138 0.34831,2e-5 0.67185,-0.0183 0.97034,-0.0552 0.12433,0.0184 0.26747,0.0322 0.42934,0.0414 0.16159,0.009 0.24243,-0.0598 0.24253,-0.20695 -0.0751,-0.0919 -0.21785,-0.15175 -0.42916,-0.17937 -0.21161,-0.0275 -0.37962,-0.0415 -0.50384,-0.0415 -0.647,-0.0552 -1.38732,-0.069 -2.22085,-0.0414 -0.83364,0.0277 -1.6111,0.005 -2.33269,-0.0691 0.0497,0.092 0.11759,0.18399 0.20526,0.27595 0.0868,0.092 0.19288,0.16559 0.3173,0.22075 l 0,0 z m -23.66268,-0.35872 c 0.1243,-0.0367 0.20517,-0.0322 0.24246,0.0138 0.0374,0.046 0.0935,0.0414 0.16801,-0.0138 0,-0.0367 0.0134,-0.0827 0.0374,-0.13798 0.0254,-0.0552 0.0134,-0.10112 -0.0374,-0.13797 -0.0749,3e-5 -0.16174,0.009 -0.2613,0.0277 -0.10024,0.0184 -0.14944,0.10124 -0.14917,0.24835 l 0,0 z m -9.51755,-0.27595 c 0,0.092 -0.0254,0.15641 -0.0749,0.19317 -0.0494,0.0369 -0.0868,0.10123 -0.11227,0.19316 1.26897,-0.0736 2.65623,-0.11035 4.16151,-0.11035 1.50541,3e-5 2.91754,-0.0184 4.23624,-0.0552 0.0749,4e-5 0.16158,0.009 0.2613,0.0277 0.0989,0.0184 0.20517,0.0276 0.3173,0.0276 0.11227,4e-5 0.21133,-0.0138 0.29847,-0.0413 0.0869,-0.0275 0.14302,-0.0873 0.16788,-0.17935 l -0.0749,0 c -0.0254,2e-5 -0.0374,-0.0275 -0.0374,-0.0828 -0.69663,0.0736 -1.42441,0.11045 -2.18333,0.11034 -0.75879,3e-5 -1.53015,-0.0138 -2.31407,-0.0414 -0.78365,-0.0275 -1.56757,-0.0552 -2.35135,-0.0828 -0.78364,-0.0275 -1.54885,-0.0138 -2.29535,0.0414 l 0,0 z m 11.57017,0.63467 c 0.0254,2e-5 0.0442,-0.0275 0.0561,-0.0828 0.0134,-0.0552 0.0187,-0.11955 0.0187,-0.19316 0,-0.0736 0,-0.13335 -0.0187,-0.17936 -0.0134,-0.046 -0.0187,-0.0597 -0.0187,-0.0414 0,0.092 -0.0186,0.17939 -0.0561,0.26215 -0.0374,0.0828 -0.0307,0.161 0.0187,0.23455 l 0,0 z m -1.04509,0.44151 c -0.0495,-0.14714 -0.10559,-0.3219 -0.16787,-0.52429 -0.0628,-0.20232 -0.11763,-0.3219 -0.16801,-0.35872 0.0254,0.0552 0.0186,0.1288 -0.0187,0.22074 -0.0374,0.092 -0.0628,0.1886 -0.0749,0.28975 -0.0134,0.10124 0,0.1886 0.0561,0.26214 0.0495,0.0736 0.17416,0.11045 0.37319,0.11033 l 0,0 z m 25.23056,-0.0828 c -0.34852,-0.0184 -0.67196,-0.0505 -0.97055,-0.0966 -0.29848,-0.046 -0.58478,0.005 -0.85849,0.15177 0.39814,0.0184 0.79005,0.046 1.1758,0.0828 0.38566,0.0369 0.77746,0.0552 1.17571,0.0552 0.39804,0.0184 0.77132,0.0369 1.11963,0.0552 0.34832,0.0184 0.58479,-0.046 0.70921,-0.19315 -0.37328,-0.11035 -0.74645,-0.14255 -1.11964,-0.0966 -0.37347,0.046 -0.784,0.0598 -1.23167,0.0413 l 0,0 z m -30.82892,-0.4691 c -0.64693,0.0369 -1.28768,0.0507 -1.92217,0.0413 -0.63462,-0.009 -1.21297,0.005 -1.73557,0.0414 -0.17404,4e-5 -0.36062,-0.005 -0.55977,-0.0138 -0.19903,-0.009 -0.38561,4e-5 -0.55991,0.0276 -0.17416,0.0277 -0.31718,0.0736 -0.42919,0.13798 -0.11226,0.0644 -0.16787,0.17019 -0.16787,0.31732 0.87079,0.0184 1.67944,0.0322 2.42594,0.0414 0.74635,0.009 1.48042,0.0139 2.20205,0.0138 0.72163,3e-5 1.48056,0.009 2.27664,0.0275 0.79621,0.0184 1.67957,0.0369 2.64995,0.0552 -0.0749,-0.0919 -0.0935,-0.18852 -0.0561,-0.28974 0.0374,-0.10112 0.0561,-0.19772 0.0561,-0.28973 -0.32333,-0.0183 -0.69051,-0.0367 -1.10098,-0.0552 -0.4106,-0.0183 -0.80864,-0.0275 -1.19439,-0.0276 -0.3856,3e-5 -0.74647,-0.005 -1.08237,-0.0138 -0.33589,-0.009 -0.60334,-0.0138 -0.80236,-0.0138 l 0,0 z m 4.4414,0.11034 c -0.0749,0.092 -0.11762,0.1748 -0.13098,0.24835 -0.0134,0.0736 -0.0186,0.15639 -0.0186,0.24836 0.1743,10e-6 0.31101,0.009 0.41061,0.0275 -0.0749,-0.0919 -0.0561,-0.17475 0.0561,-0.24836 0.11228,-0.0736 0.13099,-0.15632 0.0561,-0.24834 -0.1743,4e-5 -0.29874,-0.009 -0.37332,-0.0276 l 0,0 z m 24.55848,0.80023 c 0.27371,0.0736 0.59735,0.13341 0.97054,0.17936 0.37317,0.0459 0.75259,0.0736 1.13836,0.0828 0.38556,0.009 0.77122,4e-5 1.15699,-0.0276 0.38555,-0.0275 0.72773,-0.0689 1.0263,-0.12418 -0.72159,0.0369 -1.4184,0.009 -2.08998,-0.0828 -0.67195,-0.0919 -1.40602,-0.10112 -2.20221,-0.0276 l 0,0 z m 0.7092,1.07617 c 0.57231,0.0184 1.15708,0.0277 1.75416,0.0277 0.59706,4e-5 1.18184,-0.046 1.75425,-0.13797 0.099,-0.0367 0.11769,-0.0873 0.0566,-0.15176 -0.0614,-0.0644 -0.0682,-0.14254 -0.0185,-0.23455 -0.84602,0.0369 -1.56761,0.0229 -2.16467,-0.0414 -0.59727,-0.0644 -1.2193,-0.0873 -1.86611,-0.0689 0.12434,0.092 0.2238,0.19317 0.29849,0.30352 0.0751,0.11046 0.13691,0.21159 0.18665,0.30354 l 0,0 z m -25.45428,-0.99338 c 0.0749,0.0369 0.16802,0.0552 0.27988,0.0552 0.11229,4e-5 0.19288,-0.046 0.24274,-0.13797 -0.0494,-0.0367 -0.14943,-0.0459 -0.29872,-0.0276 -0.14931,0.0184 -0.2239,0.0553 -0.2239,0.11034 l 0,0 z m 1.56758,-0.0552 c -0.12431,-0.0367 -0.25503,-0.0506 -0.39189,-0.0414 -0.13688,0.009 -0.26746,0.0139 -0.3919,0.0138 0,0.092 0.0989,0.1196 0.2986,0.0828 0.19902,-0.0367 0.36075,-0.0552 0.48519,-0.0552 l 0,0 z m -7.94985,-0.11033 c -0.39804,-0.0183 -0.79621,-0.0322 -1.19439,-0.0413 -0.39804,-0.009 -0.8335,0.005 -1.30628,0.0413 -0.12429,4e-5 -0.29229,-0.009 -0.50375,-0.0275 -0.21159,-0.0184 -0.34231,0.0184 -0.39189,0.11033 0.97024,0.0736 2.07133,0.11501 3.30302,0.12417 1.23168,0.009 2.48193,0.005 3.75091,-0.0138 0.44788,3e-5 0.90821,0.023 1.38097,0.069 0.47275,0.046 0.88336,-0.0229 1.23168,-0.20695 -0.92065,0.0736 -1.93461,0.0736 -3.04183,0 -1.10725,-0.0736 -2.18335,-0.0919 -3.22844,-0.0552 l 0,0 z m 6.75559,0.85542 c -1.3e-4,-0.12874 0.0134,-0.22072 0.0374,-0.27594 -0.0749,-0.0183 -0.13687,-0.0322 -0.18672,-0.0413 -0.0495,-0.009 -0.0749,-0.0414 -0.0749,-0.0966 -0.0254,0.092 -0.0254,0.19318 0,0.30353 0.0254,0.11047 0.10024,0.1472 0.22416,0.11034 l 0,0 z m -1.26896,-0.33113 c -0.99551,-0.0367 -2.02803,-0.0505 -3.09799,-0.0414 -1.06982,0.009 -2.27677,0.0322 -3.62033,0.0691 -0.0494,-0.0552 -0.0935,-0.0736 -0.13098,-0.0552 -0.0374,0.0184 0,0.0369 0.13098,0.0552 0.69678,0.0184 1.35613,0.046 1.97818,0.0828 0.62206,0.0369 1.24412,0.0736 1.86604,0.11034 0.62217,0.0369 1.23796,0.0598 1.84758,0.0689 0.60962,0.009 1.23783,-0.0138 1.88474,-0.0689 -0.0495,-0.20234 -0.15544,-0.28512 -0.31704,-0.24836 -0.16187,0.0369 -0.3423,0.0461 -0.54118,0.0275 l 0,0 z m 1.64214,0.33113 c 0.0749,4e-5 0.23644,4e-5 0.48519,0 0.24887,4e-5 0.43547,-0.0184 0.5599,-0.0552 0,-0.0552 -0.0187,-0.0919 -0.0561,-0.11033 -0.0374,-0.0184 -0.0441,-0.046 -0.0187,-0.0828 -0.19902,3e-5 -0.35461,-0.0184 -0.46647,-0.0552 -0.11228,-0.0367 -0.26746,-0.0275 -0.46661,0.0275 -0.0254,0.0369 -0.0374,0.0736 -0.0374,0.11033 l 0,0.16556 z m 24.81983,0.60708 c 0.22389,0.0369 0.4976,0.069 0.82114,0.0966 0.32335,0.0276 0.6469,0.0461 0.97025,0.0552 0.32345,0.009 0.62204,0.0139 0.89576,0.0138 0.27381,4e-5 0.47284,-0.0275 0.59726,-0.0828 -0.47274,-0.0183 -0.98907,-0.046 -1.54889,-0.0828 -0.55991,-0.0367 -1.13856,-0.0367 -1.73552,0 l 0,0 z m -26.91001,-0.35873 c -0.67178,-0.0183 -1.40571,-0.0505 -2.20192,-0.0966 -0.79636,-0.0459 -1.57398,-0.0873 -2.33278,-0.12418 -0.75891,-0.0367 -1.48669,-0.069 -2.18346,-0.0966 -0.69665,-0.0275 -1.2814,-0.0414 -1.75403,-0.0414 0,0.0552 -0.0254,0.10579 -0.0749,0.15178 -0.0494,0.0461 -0.0749,0.0966 -0.0749,0.15176 1.84117,4e-5 3.59532,0.046 5.26246,0.13796 1.66702,0.092 3.27188,0.13801 4.81458,0.13798 -0.0495,-0.0919 -0.12429,-0.15635 -0.22388,-0.19315 -0.0989,-0.0367 -0.21773,-0.0552 -0.3546,-0.0552 -0.13674,3e-5 -0.28603,0.005 -0.44776,0.0138 -0.16186,0.009 -0.30488,0.0138 -0.42932,0.0138 l 0,0 z m 27.1339,0.74505 c 0,0.092 0.0254,0.1702 0.0751,0.23456 0.0497,0.0644 0.0751,0.1426 0.0751,0.23454 0.44767,0.0184 0.92685,0.0276 1.43694,0.0275 0.50998,3e-5 1.02632,-0.0459 1.54898,-0.13797 l 0,-0.38632 c -0.52266,0.0369 -1.04514,0.0552 -1.56771,0.0552 -0.52247,2e-5 -1.04504,-0.009 -1.5676,-0.0277 l 0,0 z m -24.93184,-0.41392 c 0.19914,0.0184 0.4293,0.0369 0.69048,0.0552 0.26131,0.0184 0.41677,-0.0183 0.46661,-0.11033 -0.0495,-0.14714 -0.2053,-0.21612 -0.46661,-0.20695 -0.26118,0.009 -0.52863,0.005 -0.80236,-0.0138 0,0.092 0.0254,0.15181 0.0749,0.17938 0.0494,0.0276 0.0615,0.0598 0.0374,0.0966 l 0,0 z m -3.28443,0.11035 c -1.19439,-0.0367 -2.36378,-0.0919 -3.50832,-0.16558 -1.14468,-0.0736 -2.27664,-0.046 -3.39644,0.0828 1.36854,0.092 2.69352,0.17478 3.97505,0.24835 1.28127,0.0736 2.51922,0.15638 3.71349,0.24834 0.39817,3e-5 0.79006,0.005 1.17568,0.0138 0.38574,0.009 0.77763,0.0229 1.1758,0.0413 -0.39817,-0.25752 -0.87107,-0.38169 -1.41827,-0.37252 -0.54747,0.009 -1.11981,-0.0229 -1.71699,-0.0966 l 0,0 z m 3.50844,0.57947 c 0.27374,-0.0367 0.54734,-0.0322 0.82108,0.0138 0.27373,0.0461 0.48518,0.023 0.63447,-0.0689 -0.1243,-0.14715 -0.36689,-0.23452 -0.72777,-0.26216 -0.36089,-0.0275 -0.64063,-0.0229 -0.83978,0.0138 0.1243,4e-5 0.16172,0.10125 0.11227,0.30355 l 0,0 z m 23.77482,0.74504 c -9e-5,-0.0552 0.037,-0.0828 0.11224,-0.0828 -0.0497,-0.0552 -0.0868,-0.12415 -0.11224,-0.20695 -0.0254,-0.0828 -0.0624,-0.14255 -0.11223,-0.17937 -0.0497,0.23917 -0.0136,0.39555 0.11223,0.46911 l 0,0 z m -21.94595,-0.68984 c 0.0254,-0.0919 -0.0134,-0.17476 -0.11227,-0.24835 -0.0989,-0.0736 -0.1866,-0.0919 -0.26117,-0.0552 0.0749,0.0552 0.10559,0.1288 0.0935,0.22075 -0.0134,0.092 0.0815,0.1196 0.28003,0.0828 l 0,0 z m 23.25223,0.52428 c 0.12433,0.11046 0.255,0.16099 0.3917,0.15176 0.13691,-0.009 0.30493,-0.0138 0.50396,-0.0138 0.17415,0.0369 0.36088,0.069 0.55991,0.0966 0.19902,0.0276 0.38557,0.0459 0.55992,0.0552 0.17396,0.009 0.32959,-0.009 0.4664,-0.0552 0.1369,-0.046 0.21774,-0.12415 0.24281,-0.23457 -0.57251,-0.0183 -1.08873,-0.0459 -1.54899,-0.0828 -0.46036,-0.0367 -0.85227,-0.009 -1.17571,0.0828 l 0,0 z m -36.01678,-0.99348 c -0.0254,0.14719 -0.0495,0.28517 -0.0749,0.41392 -0.0254,0.12879 0.0254,0.22078 0.1493,0.27594 0.77136,-0.0552 1.6173,-0.0736 2.53794,-0.0552 0.92066,0.0184 1.85989,0.0461 2.81782,0.0828 0.95795,0.0369 1.91589,0.0691 2.87398,0.0966 0.95794,0.0276 1.87231,0.023 2.7431,-0.0138 0.19915,-0.0367 0.40446,-0.0506 0.61592,-0.0414 0.21157,0.009 0.3173,-0.0322 0.3173,-0.12419 -2.11504,-0.11034 -4.16779,-0.21612 -6.1584,-0.31733 -1.99047,-0.10113 -3.93135,-0.20692 -5.82237,-0.31732 l 0,0 z m -0.44789,0.77264 c 0,-0.20233 0.0187,-0.3449 0.0561,-0.42771 0.0374,-0.0827 0.0307,-0.19774 -0.0187,-0.34493 -0.0495,0.092 -0.0815,0.22079 -0.0935,0.38633 -0.0134,0.16558 0,0.29437 0.0561,0.38631 l 0,0 z m 35.38229,1.15896 c -0.0751,3e-5 -0.13691,-0.009 -0.18664,-0.0276 -0.0497,-0.0184 -0.0751,-0.009 -0.0751,0.0276 0.0497,0.0552 0.14305,0.069 0.27996,0.0414 0.13681,-0.0275 0.30482,-0.0322 0.50384,-0.0138 0,-0.14714 -0.0439,-0.24373 -0.13095,-0.28975 -0.0868,-0.046 -0.11761,-0.14253 -0.0936,-0.28973 -0.1493,0.0369 -0.24262,0.0322 -0.28006,-0.0138 -0.0371,-0.0459 -0.1176,-0.0507 -0.24242,-0.0138 0.0497,0.092 0.0989,0.17479 0.14929,0.24835 0.0497,0.0736 0.0751,0.18399 0.0751,0.33113 l 0,0 z m 1.30637,-0.22075 c 0.1492,-0.0552 0.34209,-0.0782 0.57854,-0.0691 0.23618,0.009 0.46631,0.0139 0.69049,0.0138 0.22389,3e-5 0.4353,-0.009 0.63432,-0.0275 0.19913,-0.0184 0.3607,-0.0736 0.48532,-0.16559 -0.4232,0.0369 -0.82125,0.0369 -1.19443,0 -0.37327,-0.0367 -0.75893,-0.0552 -1.15688,-0.0552 -0.10025,0.0553 -0.13106,0.0966 -0.0936,0.1242 0.037,0.0277 0.0565,0.0873 0.0565,0.17935 l 0,0 z m -23.77493,-0.46911 c 0.0494,0.0369 0.168,0.0552 0.35459,0.0552 0.1866,3e-5 0.29232,-0.046 0.31731,-0.13796 -0.0749,0.092 0,0.13338 0.20531,0.12417 0.21144,-0.009 0.35446,-0.0138 0.42918,-0.0138 -0.1243,3e-5 -0.19915,-0.0322 -0.22402,-0.0966 -0.0241,-0.0644 -0.0749,-0.0966 -0.14916,-0.0966 -0.12431,0.0369 -0.29231,0.0276 -0.5039,-0.0277 -0.21145,-0.0552 -0.3546,0.009 -0.42931,0.19315 l 0,0 z m -4.96402,-0.13796 c 0.0254,-0.0919 0,-0.14715 -0.0561,-0.16557 -0.0628,-0.0184 -0.11763,-0.0275 -0.16802,-0.0276 0,0.1288 0.0749,0.1932 0.22388,0.19316 l 0,0 z m 2.12747,-0.0552 -0.41046,0 c -0.14931,0.0184 -0.19288,0.0322 -0.13099,0.0414 0.0614,0.009 0.15558,0.0139 0.28001,0.0138 0.1243,2e-5 0.24874,0.005 0.37319,0.0138 0.1243,0.009 0.19901,0.0229 0.22386,0.0413 0.12432,0.0184 0.28631,0.0139 0.48533,-0.0138 0.19889,-0.0275 0.38575,-0.0138 0.55976,0.0414 0.19917,0.0184 0.43548,0.0506 0.70921,0.0966 0.27374,0.046 0.48518,-0.005 0.63449,-0.15176 -0.44789,-0.0552 -0.91436,-0.0919 -1.39956,-0.11034 -0.48531,-0.0184 -0.92692,-0.009 -1.32511,0.0276 l 0,0 z m -6.94191,-0.0828 c 0.39791,0.0184 0.75879,0.0229 1.08238,0.0138 0.32333,-0.009 0.74636,-0.0322 1.26897,-0.0691 -0.39816,-0.0367 -0.82121,-0.046 -1.26897,-0.0277 -0.44803,0.0184 -0.80879,0.046 -1.08238,0.0828 l 0,0 z m 3.135,0.0828 c 0.1243,-0.0367 0.19915,-0.046 0.22387,-0.0277 0.0254,0.0184 0.0869,3e-5 0.18673,-0.0552 -1.2e-4,-0.0367 -0.0682,-0.0552 -0.20529,-0.0552 -0.13687,3e-5 -0.20531,0.0461 -0.20531,0.13797 l 0,0 z m 30.53025,1.04856 c 0.12432,-0.0184 0.26133,-0.0275 0.41052,-0.0277 0.1493,4e-5 0.29234,4e-5 0.42935,0 0.13671,4e-5 0.24865,-0.005 0.33583,-0.0138 0.0868,-0.009 0.13096,-0.0506 0.13096,-0.12417 -0.12424,0.0369 -0.34227,0.0369 -0.65314,0 -0.31106,-0.0367 -0.52891,0.0184 -0.65323,0.16557 l 0,0 z m -25.45424,-0.71745 c -1.91602,-0.0367 -3.7509,-0.0782 -5.50519,-0.12417 -1.75416,-0.046 -3.57689,-0.0782 -5.46778,-0.0966 0.0494,0.14719 0.0802,0.28975 0.0935,0.4277 0.0134,0.138 0.0562,0.26218 0.13098,0.37253 1.86618,-0.14715 3.69505,-0.21613 5.48649,-0.20697 1.79145,0.009 3.54575,0.0138 5.26261,0.0138 0.2736,0.0184 0.52863,0.0229 0.76506,0.0138 0.23632,-0.009 0.45404,-0.0597 0.65307,-0.15175 -0.12431,-0.14715 -0.32333,-0.22074 -0.59706,-0.22077 -0.27373,3e-5 -0.54747,-0.009 -0.82107,-0.0275 l 0,0 z m 2.35136,0.27595 c 0.1243,2e-5 0.32333,0.0139 0.59706,0.0414 0.27374,0.0276 0.51018,0.0229 0.70921,-0.0138 -0.12432,-0.0367 -0.28618,-0.0736 -0.48519,-0.11034 -0.19903,-0.0367 -0.40432,-0.0597 -0.61579,-0.0691 -0.21156,-0.009 -0.40444,3e-5 -0.57847,0.0276 -0.17429,0.0277 -0.31103,0.0873 -0.41073,0.17936 0.12429,0.0552 0.26744,0.0598 0.42931,0.0138 0.16173,-0.046 0.27988,-0.0689 0.3546,-0.0691 l 0,0 z m -13.62306,0.19315 c 0.0495,-0.31269 0.0134,-0.54265 -0.11227,-0.68984 0,0.092 0,0.20699 0.0187,0.34492 0.0134,0.13799 0.0441,0.25297 0.0935,0.34492 l 0,0 z m 40.08495,0.60708 c 0.12432,3e-5 0.25509,-0.009 0.3919,-0.0276 0.1369,-0.0184 0.26747,-0.0275 0.3919,-0.0277 -0.12423,3e-5 -0.2861,-0.0138 -0.48502,-0.0414 -0.19932,-0.0275 -0.29878,0.005 -0.29878,0.0966 l 0,0 z m -26.76048,-0.55189 c 0,0.092 -0.0749,0.1334 -0.22389,0.12417 -0.14943,-0.009 -0.24888,-0.0138 -0.29872,-0.0138 -0.0749,0.092 -0.0935,0.15638 -0.0561,0.19315 0.0374,0.0369 0.0561,0.10125 0.0561,0.19317 0.1243,0.0369 0.26745,0.0552 0.42918,0.0552 0.16186,3e-5 0.28001,0.0184 0.35458,0.0552 l 0,-0.19315 c 0.39805,0.092 0.90195,0.138 1.51171,0.13796 0.60963,4e-5 1.15069,-0.046 1.62343,-0.13796 -0.34831,-0.11034 -0.62204,-0.17934 -0.82107,-0.20697 -0.19902,-0.0275 -0.49775,-0.0782 -0.89578,-0.15176 0.0749,3e-5 0.19286,0.0184 0.3546,0.0552 0.16172,0.0369 0.18044,0.0276 0.0561,-0.0277 -0.27373,-0.0184 -0.52876,-0.0275 -0.76522,-0.0276 -0.23629,3e-5 -0.41673,0.0276 -0.54117,0.0828 l 0,-0.11033 c -0.0749,0.092 -0.22388,0.1334 -0.44777,0.12417 -0.22387,-0.009 -0.33588,-0.0597 -0.33588,-0.15177 l 0,0 z m -9.03223,0.24835 c 0.77134,0.0369 1.50527,0.0782 2.20205,0.12418 0.69664,0.046 1.37482,0.0828 2.03404,0.11034 0.65935,0.0276 1.32511,0.0369 1.99689,0.0275 0.67178,-0.009 1.38084,-0.0506 2.12732,-0.12417 l 0,-0.19315 c -1.49284,-0.0367 -2.92982,-0.0644 -4.3108,-0.0828 -1.38097,-0.0184 -2.73081,0.0276 -4.0495,0.13796 l 0,0 z m 9.36811,0.55189 c -0.0495,-0.0367 -0.17429,-0.0552 -0.37318,-0.0552 -0.19916,4e-5 -0.37331,0.0461 -0.52262,0.13798 0.39819,2e-5 0.82107,0.009 1.26898,0.0275 0.44776,0.0184 0.90809,0.0276 1.38097,0.0276 0.47276,3e-5 0.92681,-0.009 1.36227,-0.0276 0.43534,-0.0183 0.8398,-0.046 1.21296,-0.0828 -0.29858,-0.0367 -0.63435,-0.0552 -1.00752,-0.0552 -0.37345,2e-5 -0.75277,2e-5 -1.13852,0 -0.38561,2e-5 -0.77135,0.005 -1.15696,0.0138 -0.38575,0.009 -0.72779,0.0138 -1.02638,0.0138 l 0,0 z m 0.1493,0.57947 c -0.0255,0.0552 -0.0562,0.10124 -0.0935,0.13799 -0.0374,0.0369 -0.0187,0.0552 0.0561,0.0552 0.62205,2e-5 1.20054,0.005 1.73545,0.0138 0.53504,0.009 1.06366,0.0138 1.58629,0.0138 0.52246,1e-5 1.04494,1e-5 1.56755,0 0.52248,1e-5 1.08225,-0.0184 1.67945,-0.0552 -0.34831,-0.0919 -0.68421,-0.18394 -1.00767,-0.27594 -0.32346,-0.0919 -0.6842,-0.14715 -1.08225,-0.16558 -0.92077,-0.0184 -1.83514,-0.005 -2.74337,0.0413 -0.90822,0.046 -1.82259,0.0874 -2.74324,0.12417 0.1243,0.0369 0.13687,0.0507 0.0374,0.0414 -0.0989,-0.009 -0.11228,0.005 -0.0374,0.0414 0,0.0736 0.0441,0.1242 0.13098,0.15177 0.0869,0.0277 0.19275,0.0414 0.31718,0.0414 0.1243,3e-5 0.24259,-0.0138 0.35446,-0.0414 0.11227,-0.0275 0.19288,-0.0689 0.24274,-0.12417 l 0,0 z m -11.42087,0.0828 c 0.79608,-0.0184 1.64216,-0.0229 2.53793,-0.0138 0.89581,0.009 1.79775,0.0229 2.70596,0.0413 0.90823,0.0184 1.79774,0.0322 2.66853,0.0414 0.87094,0.009 1.69201,-0.0138 2.46335,-0.0689 -0.0749,-0.0552 -0.11761,-0.0919 -0.13099,-0.11034 -0.0134,-0.0183 -0.0186,-0.046 -0.0186,-0.0828 -1.49286,-0.0367 -3.11642,-0.0966 -4.87058,-0.17937 -1.7543,-0.0828 -3.47731,-0.0506 -5.16931,0.0966 -0.0989,2e-5 -0.20517,0.009 -0.31717,0.0277 -0.11228,0.0184 -0.22403,0.0322 -0.33603,0.0415 -0.11228,0.009 -0.2176,2e-5 -0.31718,-0.0276 -0.10025,-0.0275 -0.17415,-0.0966 -0.22401,-0.20696 0.0254,-0.0919 0.10559,-0.15634 0.2426,-0.19315 0.137,-0.0367 0.29859,-0.0552 0.48532,-0.0552 0.18658,2e-5 0.37946,0.005 0.57834,0.0138 0.19916,0.009 0.37345,0.0138 0.52261,0.0138 1.31882,0.0369 2.68724,0.0322 4.10551,-0.0138 1.41827,-0.046 2.71209,-0.005 3.88163,0.12416 0.0749,-0.0367 0.1803,-0.0505 0.3173,-0.0414 0.13675,0.009 0.28605,0.0184 0.44777,0.0276 0.16186,0.009 0.30488,0.009 0.42932,0 0.12431,-0.009 0.19902,-0.0506 0.22388,-0.12419 -0.64692,0.0369 -1.33113,0.0413 -2.05263,0.0138 -0.72176,-0.0275 -1.43711,-0.0598 -2.14631,-0.0966 -0.70893,-0.0367 -1.39942,-0.0782 -2.07134,-0.12417 -0.67177,-0.046 -1.30625,-0.0782 -1.90345,-0.0966 -0.59719,-0.0367 -1.25667,-0.0322 -1.97817,0.0138 -0.7215,0.046 -1.36842,0.0322 -1.94075,-0.0414 -0.0254,0.20238 -0.0187,0.37716 0.0187,0.52429 0.0374,0.1472 0.0441,0.29437 0.0187,0.44151 0.27373,3e-5 0.56605,0.005 0.87709,0.0138 0.31102,0.009 0.62833,0.0229 0.95179,0.0414 l 0,0 z m 24.81974,0.85541 c -0.32345,-0.14713 -0.68414,-0.2851 -1.08219,-0.4139 -0.39814,-0.12875 -0.72179,-0.29432 -0.97054,-0.4967 -0.19902,0.0369 -0.36704,0.0276 -0.50375,-0.0277 -0.13701,-0.0552 -0.26757,-0.0919 -0.392,-0.11033 0.72159,0.5887 1.70452,0.93823 2.94848,1.04858 l 0,0 z m -9.14407,-0.4415 c -0.72163,-0.0184 -1.43684,-0.0367 -2.14605,-0.0552 -0.70905,-0.0184 -1.38725,-0.0367 -2.03416,-0.0552 -0.19903,1e-5 -0.39189,-0.009 -0.57849,-0.0277 -0.1866,-0.0183 -0.37946,0.0461 -0.57849,0.19316 0,0.092 0.0374,0.15179 0.11229,0.17937 0.0749,0.0276 0.17428,0.0369 0.29872,0.0275 0.12431,-0.009 0.24247,-0.0229 0.35448,-0.0414 0.11226,-0.0184 0.20529,-0.0275 0.28001,-0.0276 0.59706,0.0184 1.24411,0.0369 1.94074,0.0552 0.69665,0.0184 1.40585,0.0277 2.12735,0.0277 0.72163,2e-5 1.43698,-0.0138 2.14603,-0.0414 0.70921,-0.0275 1.37471,-0.069 1.9969,-0.12419 -0.64692,-0.11034 -1.28141,-0.16094 -1.90346,-0.15176 -0.62205,0.009 -1.29397,0.0229 -2.01546,0.0414 l 0,0 z m -6.38228,-0.0552 c -1.8413,-0.0552 -3.62646,-0.0828 -5.35576,-0.0828 -1.7293,2e-5 -3.60174,0.0184 -5.61721,0.0552 0,0.092 0.0374,0.17019 0.11227,0.23455 0.0749,0.0644 0.11228,0.115 0.11228,0.15176 1.79145,-0.0367 3.49588,-0.0736 5.11317,-0.11033 1.61743,-0.0367 3.32187,-0.0367 5.11332,0 0.27373,0.0184 0.54748,0.046 0.8212,0.0828 0.27347,0.0369 0.52235,-0.0367 0.74636,-0.22076 -0.1243,-0.14714 -0.29859,-0.20233 -0.52247,-0.16557 -0.22389,0.0369 -0.39817,0.0552 -0.52262,0.0552 l 0,0 z m 13.66026,0.57947 c 0.19912,0.0369 0.41667,0.0873 0.65314,0.15177 0.23647,0.0644 0.45412,0.15179 0.65323,0.26214 -0.0254,-0.0736 -0.0936,-0.14255 -0.20526,-0.20695 -0.11234,-0.0644 -0.23646,-0.11489 -0.37338,-0.15179 -0.13681,-0.0367 -0.27362,-0.0597 -0.41042,-0.0689 -0.13691,-0.009 -0.24261,-0.005 -0.31731,0.0138 l 0,0 z m -3.47106,-0.11033 c -1.19439,0.0184 -2.40735,0.0369 -3.6389,0.0552 -1.23169,0.0184 -2.46965,0.0644 -3.71362,0.13797 -0.1243,-0.0736 -0.20531,-0.0966 -0.24272,-0.069 -0.0374,0.0277 0.0441,0.0506 0.24272,0.069 1.69173,-0.0184 3.25944,2e-5 4.70258,0.0552 1.44325,0.0552 2.92368,0.0552 4.44153,0 -0.24887,-0.11034 -0.52891,-0.17473 -0.8398,-0.19317 -0.31116,-0.0184 -0.62833,-0.0367 -0.95179,-0.0552 l 0,0 z m 5.56124,0.55186 c 0.12423,0.0369 0.26728,0.10125 0.42905,0.19317 0.16187,0.092 0.27996,0.092 0.35456,0 -0.12433,3e-5 -0.26748,-0.046 -0.42916,-0.13798 -0.16177,-0.0919 -0.28005,-0.11033 -0.35445,-0.0552 l 0,0 z m -5.74783,-0.0828 c -0.79621,-0.0367 -1.54271,-0.0507 -2.23948,-0.0414 -0.69664,0.009 -1.3747,0.0184 -2.03405,0.0277 -0.65934,0.009 -1.28754,0.0184 -1.88487,0.0276 -0.59705,0.009 -1.19425,-0.005 -1.79144,-0.0413 -0.12431,3e-5 -0.27989,-0.0229 -0.46648,-0.069 -0.18659,-0.046 -0.34217,0.005 -0.4666,0.15177 0.29859,0.0736 0.64062,0.1196 1.02649,0.13799 0.38548,0.0184 0.78994,0.0276 1.21298,0.0275 0.42291,2e-5 0.83351,2e-5 1.23168,0 0.3979,2e-5 0.75879,0.0184 1.08237,0.0552 0.0495,0.0552 0.0495,0.0966 0,0.12418 -0.0494,0.0276 -0.0134,0.0506 0.11229,0.0689 1.39327,-0.0736 2.75567,-0.0873 4.08691,-0.0414 1.33114,0.046 2.63125,0.0414 3.90018,-0.0138 -0.19902,-0.11034 -0.45402,-0.18854 -0.76498,-0.23455 -0.31106,-0.046 -0.647,-0.0828 -1.00785,-0.11033 -0.36088,-0.0275 -0.7215,-0.046 -1.08238,-0.0552 -0.36075,-0.009 -0.66549,-0.0138 -0.91437,-0.0138 l 0,0 z m -20.22895,-0.0552 c 0.77109,0.11045 1.62958,0.15179 2.57523,0.12418 0.94551,-0.0275 1.91589,-0.0598 2.91113,-0.0966 0.79621,-0.0184 1.57384,-0.0184 2.33263,0 0.75893,0.0184 1.46185,0.0644 2.10876,0.13798 0.19916,2e-5 0.41048,0.0138 0.63462,0.0414 0.22388,0.0276 0.44776,-0.005 0.67165,-0.0966 -1.91589,-0.11034 -3.85678,-0.17015 -5.82224,-0.17936 -1.96575,-0.009 -3.76964,0.0138 -5.41178,0.069 l 0,0 z m 27.65633,0.63468 c 0.19893,0.0552 0.40419,0.12878 0.61579,0.22074 0.21141,0.092 0.42906,0.17939 0.65314,0.26216 0.22389,0.0828 0.44778,0.15639 0.67166,0.22074 0.22399,0.0644 0.4355,0.0873 0.63461,0.069 -0.47274,-0.0736 -0.92061,-0.21612 -1.34362,-0.42772 -0.42291,-0.21153 -0.83373,-0.32651 -1.23158,-0.34491 l 0,0 z m -16.60891,-0.0552 c -0.0494,-0.14714 -0.18031,-0.22073 -0.39189,-0.22075 -0.21145,2e-5 -0.37945,2e-5 -0.5039,0 -0.89565,-0.0552 -1.72929,-0.0828 -2.50065,-0.0828 -0.77135,2e-5 -1.5427,0.009 -2.31393,0.0276 -0.77135,0.0184 -1.56756,0.0369 -2.38863,0.0552 -0.82121,0.0184 -1.72931,0.0276 -2.72454,0.0275 0.0495,0.1472 0.13674,0.28518 0.26118,0.41392 0.1243,0.1288 0.28603,0.22078 0.48519,0.27595 0.1243,2e-5 0.21157,-0.0322 0.26115,-0.0966 0.0495,-0.0644 0.13701,-0.0966 0.26146,-0.0966 1.79143,-0.0367 3.61403,-0.0689 5.46762,-0.0966 1.85388,-0.0275 3.70134,-0.11488 5.54263,-0.26215 -0.19915,4e-5 -0.4416,-0.0275 -0.7279,-0.0828 -0.28617,-0.0552 -0.52863,-0.009 -0.72779,0.13795 l 0,0 z m 11.64485,0.0276 c -0.52258,0.0369 -1.10092,0.069 -1.73554,0.0966 -0.63448,0.0277 -1.27526,0.0322 -1.92217,0.0138 -1.04509,0.0184 -2.08389,0.0459 -3.11642,0.0828 -1.03266,0.0369 -2.04661,0.0369 -3.04184,0 -0.32346,0.0552 -0.64078,0.0783 -0.95179,0.0691 -0.31103,-0.009 -0.56606,0.0598 -0.76508,0.20696 0.19902,0.14718 0.41676,0.20238 0.6532,0.16556 0.23631,-0.0367 0.45405,-0.0552 0.65306,-0.0552 0.27374,0.0184 0.51019,0.0276 0.7092,0.0276 0.19903,10e-6 0.43534,0.009 0.70907,0.0276 2.11504,0.0552 4.20522,0.0598 6.27028,0.0138 2.06518,-0.046 4.24254,-0.0689 6.53155,-0.0689 -0.5722,-0.25752 -1.18185,-0.40929 -1.82875,-0.4553 -0.64699,-0.046 -1.36868,-0.0873 -2.16477,-0.12419 l 0,0 z m -8.50971,-0.0276 c 0.0749,2e-5 0.18659,-0.005 0.33603,-0.0138 0.14929,-0.009 0.26115,-0.0414 0.33588,-0.0966 -0.0749,2e-5 -0.2053,0.005 -0.3919,0.0138 -0.18658,0.009 -0.28001,0.0414 -0.28001,0.0966 l 0,0 z m -1.67945,-0.0552 c 0.12431,4e-5 0.25489,0.005 0.3919,0.0138 0.13673,0.009 0.26745,0.0138 0.39189,0.0138 0,-0.0552 -0.11762,-0.0966 -0.3546,-0.12419 -0.23645,-0.0275 -0.37946,0.005 -0.42919,0.0966 l 0,0 z m -2.35148,0.41393 c -0.62206,0.0369 -1.31254,0.0691 -2.07133,0.0966 -0.75892,0.0276 -1.30011,0.0598 -1.62344,0.0966 0.44777,-0.0367 1.01381,-0.0322 1.69801,0.0138 0.68422,0.0459 1.28768,0.0782 1.81017,0.0966 0.19915,2e-5 0.4106,0.009 0.63462,0.0276 0.22389,0.0184 0.36074,-0.046 0.41047,-0.19315 -0.1243,-0.16554 -0.24887,-0.22993 -0.37319,-0.19316 -0.12429,0.0369 -0.28616,0.0552 -0.48531,0.0552 l 0,0 z m 17.20612,0.46911 c -0.12433,0.0369 -0.31107,0.0644 -0.55992,0.0828 -0.24885,0.0184 -0.52247,0.0322 -0.82105,0.0414 -0.29878,0.009 -0.60351,0.009 -0.91458,0 -0.31095,-0.009 -0.59082,-0.0138 -0.83977,-0.0138 -1.31876,-0.0367 -2.53164,-0.0367 -3.63888,0 -1.10725,0.0369 -2.29548,0.0736 -3.56432,0.11034 -0.79634,-0.0367 -1.57398,-0.0597 -2.33277,-0.0689 -0.75892,-0.009 -1.46184,-0.005 -2.10876,0.0138 -0.0989,-0.0183 -0.23644,-0.0367 -0.41047,-0.0552 -0.1743,-0.0184 -0.33589,-0.0229 -0.48519,-0.0138 -0.14943,0.009 -0.27373,0.0369 -0.37332,0.0828 -0.0989,0.046 -0.1243,0.13339 -0.0749,0.26214 0.39818,0.0552 0.80878,0.0736 1.23167,0.0552 0.42304,-0.0184 0.85222,-0.046 1.28783,-0.0828 0.43532,-0.0367 0.87708,-0.0736 1.32483,-0.11035 0.44777,-0.0367 0.88337,-0.046 1.30627,-0.0276 1.96573,0.0552 3.96877,0.0828 6.00906,0.0828 2.04035,3e-5 3.95628,-0.046 5.74767,-0.13795 -0.0751,-0.0919 -0.17396,-0.137951 -0.29849,-0.137971 -0.12422,2e-5 -0.28629,-0.0275 -0.48512,-0.0828 l 0,0 z m -26.01419,-0.138 c 0.0495,0.20237 0.19274,0.427737 0.42904,0.676057 0.23645,0.24837 0.50389,0.41855 0.80263,0.5105 0.12431,-0.0367 0.13099,-0.0873 0.0187,-0.15177 -0.11227,-0.0644 -0.10558,-0.14255 0.0186,-0.23455 1.31871,2e-5 2.71839,-0.009 4.19882,-0.0276 1.48055,-0.0184 2.9174,-0.0552 4.31079,-0.11034 0,-0.0919 0,-0.15635 0,-0.19317 0,-0.0367 0.0134,-0.10111 0.0374,-0.19315 -1.64215,-0.0919 -3.29686,-0.137957 -4.96401,-0.137967 -1.66701,1e-5 -3.2843,-0.046 -4.85187,-0.13799 l 0,0 z m 27.54435,0.965797 c -1.24416,-0.12874 -2.48822,-0.15174 -3.73238,-0.069 -1.24407,0.0828 -2.48804,0.13339 -3.73219,0.15177 0,-0.0552 0.0561,-0.0966 0.16801,-0.12418 0.11226,-0.0275 0.10559,-0.0505 -0.0186,-0.0689 -0.19903,-0.0552 -0.39817,-0.0597 -0.59708,-0.0138 -0.199,0.046 -0.39816,0.0691 -0.59718,0.0691 -0.27374,10e-6 -0.53505,-0.005 -0.78378,-0.0138 -0.24888,-0.009 -0.51005,-0.0229 -0.78379,-0.0413 -0.64692,0.0369 -1.22539,0.0966 -1.73558,0.17936 -0.51005,0.0828 -0.92679,0.0966 -1.25025,0.0414 -0.0989,0.092 -0.19902,0.11959 -0.29847,0.0828 -0.10024,-0.0367 -0.1743,-0.0367 -0.22414,0 -0.12431,-0.0184 -0.31731,-0.0138 -0.57849,0.0138 -0.26117,0.0277 -0.53491,0.0552 -0.82108,0.0828 -0.28616,0.0277 -0.55362,0.0415 -0.80236,0.0415 -0.24887,2e-5 -0.43547,-0.0367 -0.5599,-0.11035 0.39817,-0.0367 0.75264,-0.0597 1.0638,-0.069 0.3109,-0.009 0.70278,-0.0322 1.17555,-0.069 0.19915,-0.0367 0.42303,-0.0689 0.67177,-0.0966 0.24887,-0.0275 0.37332,-0.0873 0.37332,-0.17935 -0.72164,-0.0184 -1.49914,0.0138 -2.33278,0.0966 -0.83351,0.0828 -1.53642,0.115 -2.10875,0.0966 -0.0749,0.092 -0.0989,0.15638 -0.0749,0.19316 0.0254,0.0369 -0.0134,0.10123 -0.11228,0.19316 1.71686,0.0369 3.39644,0.0873 5.0386,0.15176 1.64227,0.0644 3.32171,0.069 5.03871,0.0138 1.31853,2e-5 2.71209,-0.0552 4.18013,-0.16556 1.46806,-0.11034 2.96098,-0.19313 4.47876,-0.24834 -0.12424,-0.20234 -0.29859,-0.29893 -0.52258,-0.28974 -0.22389,0.009 -0.39814,0.0599 -0.52247,0.15175 l 0,0 z m -7.20341,-0.0277 c 0.27376,-0.0367 0.51018,-0.046 0.70918,-0.0275 0.19892,0.0184 0.39805,-0.0184 0.59707,-0.11033 -0.32326,-0.0184 -0.59092,-0.0229 -0.80234,-0.0138 -0.21158,0.009 -0.37947,0.0598 -0.50391,0.15178 l 0,0 z m 8.88297,0.44151 c -0.12433,2e-5 -0.23023,0.0229 -0.3173,0.069 -0.0868,0.046 -0.16793,0.0873 -0.24252,0.12419 -0.12423,-0.0183 -0.24886,-0.0598 -0.37328,-0.12419 -0.12433,-0.0644 -0.24875,-0.0966 -0.37328,-0.0966 -0.5722,-0.0552 -1.18185,-0.0506 -1.82875,0.0138 -0.64709,0.0644 -1.26902,0.0873 -1.86619,0.069 -0.44787,0.0369 -0.87078,0.0873 -1.26902,0.15177 -0.39815,0.0644 -0.79619,0.0599 -1.19434,-0.0138 1.19434,0.18398 2.46951,0.27136 3.82561,0.26214 1.35601,-0.009 2.69349,-0.0229 4.01225,-0.0413 -0.12433,-0.0552 -0.23647,-0.10579 -0.33593,-0.15178 -0.0989,-0.046 -0.21161,-0.0689 -0.33583,-0.0689 0.19901,-0.0367 0.41666,-0.0183 0.65313,0.0552 0.23637,0.0736 0.41677,0.0644 0.5412,-0.0276 -0.19913,1e-5 -0.34832,-0.0322 -0.44798,-0.0966 -0.099,-0.0644 -0.24875,-0.10579 -0.44777,-0.12417 l 0,0 z m -27.46975,-0.16559 c 0.87078,-0.0184 1.94074,3e-5 3.20971,0.0552 1.26896,0.0552 2.46335,0.10125 3.58303,0.13799 0.19902,3e-5 0.43547,0.0138 0.7092,0.0414 0.2736,0.0276 0.47262,-0.005 0.59705,-0.0966 0.0254,-0.14715 0,-0.21154 -0.0935,-0.19316 -0.0868,0.0184 -0.0815,-0.0184 0.0187,-0.11033 -1.1944,0.0184 -2.51321,0.0229 -3.95621,0.0138 -1.44313,-0.009 -2.79924,0.0413 -4.06822,0.15177 l 0,0 z m 13.47349,0.55188 c 0.1243,0.11047 0.23016,0.16101 0.3173,0.15177 0.0869,-0.009 0.19287,-0.0138 0.31732,-0.0138 -0.0495,-0.0552 -0.0187,-0.0782 0.0935,-0.069 0.11227,0.009 0.16801,-0.0322 0.16801,-0.12416 -0.19901,2e-5 -0.36703,0.0139 -0.50375,0.0414 -0.13688,0.0276 -0.2676,0.0322 -0.39204,0.0138 l 0,0 z m -13.7348,-0.24834 c 0.32346,0.20238 0.6532,0.42315 0.98908,0.66226 0.33589,0.23917 0.72778,0.38634 1.17555,0.44152 -0.0494,-0.0367 -0.0749,-0.0966 -0.0749,-0.17936 0,-0.0828 0.0374,-0.15176 0.11227,-0.20695 1.76659,1e-5 3.52088,-0.0138 5.26246,-0.0414 1.74188,-0.0276 3.43373,-0.11501 5.07603,-0.26215 0.19902,3e-5 0.42289,-0.0138 0.67177,-0.0413 0.24874,-0.0275 0.37332,-0.0689 0.37332,-0.12418 -0.79622,-0.0183 -1.62985,-0.0183 -2.50065,0 -0.87093,0.0184 -1.72944,0.009 -2.57537,-0.0277 -0.0749,0.0369 -0.13097,0.092 -0.16788,0.16557 -0.0374,0.0736 -0.0815,0.11045 -0.13097,0.11034 0,-0.0367 0.0186,-0.0919 0.0561,-0.16556 0.0374,-0.0736 0.0307,-0.11035 -0.0187,-0.11035 -0.59719,3e-5 -1.24424,-0.0184 -1.94075,-0.0552 -0.69677,-0.0367 -1.40596,-0.0736 -2.12747,-0.11033 -0.72163,-0.0367 -1.44326,-0.0644 -2.16475,-0.0828 -0.72164,-0.0184 -1.39342,-0.009 -2.01547,0.0276 l 0,0 z m 19.4453,0.91062 c 0.34834,1e-5 0.72777,0.005 1.13839,0.0138 0.41043,0.009 0.82105,0.0184 1.23167,0.0275 0.41043,0.009 0.80234,0.0138 1.17552,0.0138 0.37338,3e-5 0.70921,-0.009 1.00779,-0.0275 -0.84602,-0.12875 -1.60485,-0.18395 -2.27662,-0.16557 -0.67186,0.0184 -1.43071,0.0644 -2.27675,0.13797 l 0,0 z m -5.63579,-0.16556 c 0.64691,0.0369 1.34984,0.0644 2.10888,0.0828 0.7588,0.0184 1.36214,-0.0367 1.81004,-0.16558 -0.52249,-0.0184 -1.1571,-0.0275 -1.90346,-0.0276 -0.74649,2e-5 -1.41827,0.0369 -2.01546,0.11034 l 0,0 z m 14.63075,0.60707 c -0.52266,0.0369 -1.11973,0.0369 -1.79159,0 -0.67176,-0.0367 -1.33115,-0.0736 -1.97804,-0.11035 -0.79639,0.0369 -1.56771,0.0369 -2.31407,0 -0.74665,-0.0367 -1.47438,-0.0689 -2.18349,-0.0966 -0.70919,-0.0275 -1.41813,-0.046 -2.12734,-0.0552 -0.7092,-0.009 -1.42455,0.0229 -2.14604,0.0966 -1.24426,-0.22072 -2.50693,-0.27592 -3.78833,-0.16555 -1.28141,0.11045 -2.59395,0.22998 -3.93764,0.35871 -0.47275,0.0369 -0.91436,0.0506 -1.32485,0.0414 -0.41073,-0.009 -0.83991,-0.0229 -1.28767,-0.0414 -0.39818,0.0369 -0.78393,0.0828 -1.1571,0.13799 -0.37318,0.0552 -0.73406,0.0277 -1.08238,-0.0828 0,-0.14715 0.12432,-0.21155 0.37332,-0.19316 0.24874,0.0184 0.47262,0.0277 0.67177,0.0277 0.59706,-0.0367 1.25655,-0.0828 1.97817,-0.13798 0.7215,-0.0552 1.34369,-0.10112 1.86603,-0.13798 -0.39817,-0.0183 -0.84593,-0.0229 -1.34355,-0.0138 -0.49763,0.009 -1.01394,0.0276 -1.549,0.0552 -0.53489,0.0277 -1.06365,0.0552 -1.58613,0.0828 -0.52261,0.0277 -1.00767,0.0598 -1.4557,0.0966 0.19916,0.0919 0.39817,0.19319 0.59733,0.30355 0.19902,0.11044 0.4229,0.21156 0.67164,0.30352 0.19915,0.0552 0.42304,0.14261 0.67191,0.26215 0.24875,0.1196 0.51018,0.20699 0.78378,0.26216 0.57233,0.0736 1.13839,0.0598 1.69816,-0.0413 0.55991,-0.10112 1.16324,-0.12416 1.81017,-0.069 -0.19902,-0.0367 -0.50391,-0.0782 -0.91437,-0.12417 -0.41048,-0.0459 -0.75265,-0.0506 -1.02639,-0.0138 -0.19903,2e-5 -0.41675,0.0138 -0.65306,0.0414 -0.23645,0.0276 -0.41675,-0.0597 -0.54119,-0.26215 0.17402,-0.092 0.38561,-0.13796 0.63435,-0.13798 0.24887,2e-5 0.5039,0.009 0.76507,0.0276 0.26145,0.0184 0.51647,0.0277 0.76534,0.0275 0.24874,2e-5 0.46019,-0.0459 0.63435,-0.13796 -0.0749,0.0919 -0.0682,0.13338 0.0187,0.12417 0.0869,-0.009 0.16787,-0.0138 0.24259,-0.0138 1.71675,-0.0919 3.53318,-0.15174 5.44908,-0.17935 1.91588,-0.0275 3.84433,-0.046 5.7852,-0.0552 1.9406,-0.009 3.85048,-0.0229 5.72905,-0.0414 1.87868,-0.0184 3.63897,-0.0828 5.28109,-0.19316 -0.19903,-0.11033 -0.3919,-0.17013 -0.57845,-0.17936 -0.18664,-0.009 -0.36694,3e-5 -0.54109,0.0276 -0.17426,0.0276 -0.35456,0.0644 -0.5412,0.11034 -0.18674,0.046 -0.37962,0.0782 -0.57845,0.0966 l 0,0 z m -20.11724,-0.35873 c 0.27373,2e-5 0.61578,-0.0138 1.02638,-0.0413 0.4106,-0.0275 0.81492,-0.0598 1.2131,-0.0966 -0.39818,-0.0184 -0.8025,-0.0229 -1.2131,-0.0138 -0.4106,0.009 -0.75265,0.0599 -1.02638,0.15177 l 0,0 z m 23.10308,0.71745 c -0.12434,-0.0367 -0.32365,-0.0414 -0.59727,-0.0138 -0.27381,0.0276 -0.47273,-0.005 -0.59716,-0.0966 -0.72159,0.11045 -1.48668,0.15639 -2.29535,0.13796 -0.80867,-0.0184 -1.61129,-0.0184 -2.40748,0 -0.92052,0.0736 -1.81013,0.1472 -2.66844,0.22077 -0.85849,0.0736 -1.72313,0.14717 -2.59402,0.22075 -0.0497,2e-5 -0.13671,-0.009 -0.26113,-0.0275 -0.12433,-0.0184 -0.24906,0.0184 -0.37338,0.11033 1.7169,2e-5 3.58924,-0.0275 5.6172,-0.0828 2.02787,-0.0552 3.99968,-0.0828 5.9157,-0.0828 0,-0.12875 -0.0624,-0.17475 -0.18665,-0.13797 -0.12422,0.0369 -0.14939,0.009 -0.0751,-0.0828 0.0497,-0.0367 0.14909,-0.0507 0.29848,-0.0413 0.1493,0.009 0.22409,-0.0322 0.22409,-0.12417 l 0,0 z m -22.39387,0.4691 c 0.84592,0.0184 1.74159,0.0229 2.68724,0.0138 0.9455,-0.009 1.87858,-0.0229 2.79924,-0.0413 0.92065,-0.0184 1.79772,-0.0229 2.6311,-0.0138 0.83377,0.009 1.57386,0.0506 2.22091,0.12417 0.0494,-0.0919 0.0561,-0.16554 0.0186,-0.22075 -0.0374,-0.0552 0,-0.0828 0.13098,-0.0828 0.27362,-0.0367 0.59706,-0.0597 0.97034,-0.069 0.37318,-0.009 0.65938,-0.0598 0.8584,-0.15177 l -0.11223,0 c -0.97045,0.0369 -1.99678,0.0644 -3.07917,0.0828 -1.08237,0.0184 -2.16476,0.0369 -3.247,0.0552 -1.08238,0.0184 -2.12747,0.046 -3.13527,0.0828 -1.00766,0.0369 -1.92204,0.11033 -2.74311,0.22073 l 0,0 z m 19.48263,0.22075 c 0.0497,3e-5 0.0751,-0.0138 0.0751,-0.0414 0,-0.0275 -0.0254,-0.0414 -0.0751,-0.0414 -0.0751,0.092 -0.28619,0.1334 -0.63451,0.12418 -0.34851,-0.009 -0.62222,0.0322 -0.82106,0.12418 -0.0497,-0.0367 -0.0751,-0.0919 -0.0751,-0.16556 -2e-4,-0.0736 -0.0624,-0.0919 -0.18673,-0.0552 0,0.092 -0.0497,0.13339 -0.1493,0.12416 -0.099,-0.009 -0.21151,-0.0275 -0.33593,-0.0552 -0.12433,-0.0275 -0.23013,-0.0367 -0.3173,-0.0276 -0.0868,0.009 -0.11761,0.0873 -0.0936,0.23456 1.31856,-0.0184 2.63108,-0.005 3.93745,0.0414 1.30627,0.046 2.51924,0.005 3.63907,-0.12418 -0.44788,-0.0736 -0.88346,-0.11499 -1.30628,-0.12417 -0.42311,-0.009 -0.83363,-0.009 -1.23168,0 -0.39814,0.009 -0.79629,0.0184 -1.19433,0.0276 -0.39824,0.009 -0.80877,-0.005 -1.23169,-0.0413 l 0,0 z m -8.88299,0.13799 c -0.5226,-0.0184 -1.04494,-0.046 -1.56742,-0.0828 -0.52261,-0.0367 -1.04509,-0.0644 -1.5677,-0.0828 -0.52247,-0.0184 -1.05124,2e-5 -1.58615,0.0552 -0.53504,0.0552 -1.10109,0.0736 -1.69829,0.0552 -1.31868,0.0552 -2.56895,0.069 -3.7509,0.0413 -1.18197,-0.0275 -2.33278,0.0229 -3.45245,0.15178 0.27374,0.092 0.57848,0.16098 0.9145,0.20696 0.3359,0.046 0.64064,0.11499 0.91438,0.20695 0.1243,-0.0919 0.27373,-0.14716 0.44789,-0.16556 0.17403,-0.0184 0.32346,-0.0552 0.44776,-0.11034 2.83668,-0.0552 5.52391,-0.0966 8.06198,-0.12418 2.53781,-0.0275 5.17533,-0.0597 7.91241,-0.0966 0.0751,-0.0184 0.16158,-0.0229 0.26124,-0.0138 0.0989,0.009 0.20516,0.0139 0.3173,0.0138 0.11223,2e-5 0.21141,-0.009 0.29859,-0.0276 0.0868,-0.0184 0.14294,-0.0644 0.16801,-0.13796 -0.0751,1e-5 -0.11234,-0.0184 -0.11234,-0.0552 l 0,-0.0552 c -1.04523,0.0369 -2.06531,0.092 -3.06052,0.16558 -0.99522,0.0736 -1.97814,0.092 -2.94858,0.0552 l 0,0 z m 14.48148,0.4139 c -1.49302,-0.0919 -2.8616,-0.12416 -4.10557,-0.0966 -1.24426,0.0277 -2.5753,0.0229 -3.99362,-0.0138 -0.12434,-0.0184 -0.18674,0.009 -0.18654,0.0828 -2e-4,0.0736 -0.0371,0.12878 -0.11234,0.16554 -2.9e-4,-0.0919 0,-0.16093 -0.0185,-0.20694 -0.0136,-0.046 -0.0819,-0.0689 -0.20526,-0.069 -1.39345,0.0552 -2.79296,0.092 -4.19869,0.11034 -1.40594,0.0184 -2.79311,0.0322 -4.16165,0.0413 -1.36856,0.009 -2.70595,0.0415 -4.01222,0.0966 -1.30625,0.0552 -2.54421,0.14718 -3.71361,0.27593 1.04509,0.092 2.10876,0.13798 3.19115,0.13796 1.08237,2e-5 2.1709,-0.0184 3.26571,-0.0552 1.09481,-0.0367 2.18347,-0.0828 3.26586,-0.13798 1.08237,-0.0552 2.14604,-0.0827 3.19098,-0.0828 0.59726,0.0184 1.16322,0.0322 1.69828,0.0414 0.53495,0.009 1.06366,0.0229 1.58633,0.0413 0.12432,0.0552 0.16782,0.0369 0.13096,-0.0552 -0.037,-0.0919 0,-0.13796 0.13096,-0.13798 -10e-5,0.0552 -0.0137,0.10124 -0.0371,0.13798 -0.0254,0.0369 0.0254,0.0644 0.14939,0.0828 1.51768,2e-5 3.02932,0.0229 4.53461,0.0689 1.5053,0.046 2.91738,0.0322 4.23624,-0.0413 -0.0751,-0.0919 -0.16801,-0.15634 -0.27987,-0.19317 -0.11223,-0.0367 -0.23013,-0.10111 -0.35464,-0.19315 l 0,0 z m -5.26265,0.60707 c -0.44788,3e-5 -0.91438,0.0139 -1.3997,0.0413 -0.48502,0.0277 -0.97649,0.0322 -1.47409,0.0138 -0.12433,-0.0736 -0.18674,-0.0828 -0.18664,-0.0275 -10e-5,0.0552 -0.037,0.0828 -0.11224,0.0828 0.0989,-0.0919 0.0868,-0.12415 -0.0371,-0.0966 -0.12432,0.0277 -0.19921,0.0598 -0.22398,0.0966 0.10025,-0.0919 0.10025,-0.11956 0,-0.0828 -0.099,0.0369 -0.17416,0.0369 -0.22389,0 -1.16956,-0.0736 -2.36399,-0.10113 -3.58319,-0.0828 -1.21911,0.0184 -2.43824,0.0552 -3.6575,0.11035 -1.21939,0.0552 -2.43221,0.0966 -3.63904,0.12416 -1.20668,0.0277 -2.38249,-0.005 -3.52702,-0.0966 0.1243,0.20238 0.37946,0.32194 0.76506,0.35873 0.38575,0.0369 0.7278,0.10124 1.02639,0.19316 0.27374,-0.14716 0.66562,-0.23913 1.17568,-0.27594 0.51004,-0.0367 0.96422,-0.046 1.36225,-0.0277 0,0.0367 -0.0441,0.0507 -0.13098,0.0413 -0.0868,-0.009 -0.13099,0.0322 -0.13099,0.12418 1.96562,-0.0919 3.97493,-0.17933 6.02754,-0.26213 2.05292,-0.0828 4.08694,-0.069 6.10252,0.0414 1.39326,0.0736 2.79295,0.11045 4.19869,0.11033 1.40584,3e-5 2.79295,-0.0275 4.16154,-0.0828 -0.0497,-0.12875 -0.18049,-0.20235 -0.39191,-0.22074 -0.21159,-0.0184 -0.44777,-0.0184 -0.70911,0 -0.26123,0.0184 -0.50404,0.0229 -0.72773,0.0138 -0.22399,-0.009 -0.38576,-0.0599 -0.48522,-0.15176 -0.29859,0.0552 -0.62213,0.0828 -0.97054,0.0828 -0.34831,10e-6 -0.70902,-0.005 -1.0822,-0.0138 -0.37327,-0.009 -0.74021,-0.0229 -1.1011,-0.0414 -0.3609,-0.0184 -0.70287,-0.009 -1.02632,0.0277 l 0,0 z m 5.44919,0.55189 c -0.7216,0.0369 -1.44328,0.0644 -2.16458,0.0828 -0.72179,0.0184 -1.48064,0.009 -2.27683,-0.0275 -2.28919,-0.0552 -4.65923,-0.10113 -7.11002,-0.13798 -2.45107,-0.0367 -4.83345,0.0736 -7.14738,0.33113 1.71675,-0.0184 3.37774,-0.0229 4.98261,-0.0138 1.60486,0.009 3.20357,0.0277 4.79595,0.0552 1.59248,0.0277 3.20358,0.0598 4.8335,0.0966 1.62972,0.0369 3.32781,0.0828 5.09444,0.13796 0.0751,1e-5 0.13096,-0.0322 0.16802,-0.0966 0.037,-0.0644 0.0799,-0.0966 0.13095,-0.0966 -0.0254,0.092 0.0185,0.12879 0.13096,0.11035 0.11233,-0.0184 0.23023,-0.0184 0.35466,0 -0.17436,-0.25754 -0.44807,-0.39552 -0.82126,-0.41393 -0.37327,-0.0184 -0.69663,-0.0275 -0.97034,-0.0275 l 0,0 z m 0.11233,0.77264 c -1.56761,-0.0367 -3.07291,-0.10113 -4.51599,-0.19315 -1.44328,-0.0919 -2.94868,-0.11035 -4.5162,-0.0552 0.19903,0.092 0.44164,0.13799 0.72783,0.13798 0.28621,1e-5 0.56606,0.009 0.83979,0.0277 1.44308,0.0369 3.01693,0.0873 4.72145,0.15176 1.70422,0.0644 3.31542,0.0966 4.8333,0.0966 -0.27382,-0.14716 -0.59112,-0.20694 -0.95172,-0.17936 -0.3609,0.0276 -0.74032,0.0322 -1.13846,0.0138 l 0,0 z m -20.37829,-0.24836 c 0.0494,0.0369 0.13098,0.069 0.24246,0.0966 0.11226,0.0277 0.20544,0.0873 0.28001,0.17935 1.71687,-0.092 3.48345,-0.13795 5.29995,-0.13796 1.81636,1e-5 3.62024,-0.046 5.41174,-0.13798 -0.82125,-0.0367 -1.72305,-0.0552 -2.70587,-0.0552 -0.98293,1e-5 -1.972,0.009 -2.96721,0.0277 -0.99525,0.0184 -1.97818,0.0322 -2.94843,0.0414 -0.97051,0.009 -1.84144,0.005 -2.61265,-0.0138 l 0,0 z m -0.52262,-0.13794 c 0.17416,1e-5 0.26131,0.0369 0.26131,0.11034 l 0,-0.19316 c -0.17417,3e-5 -0.26131,0.0277 -0.26131,0.0828 l 0,0 z m 15.52641,0.55189 c -0.5722,-0.0184 -1.20057,-0.0322 -1.88472,-0.0413 -0.68443,-0.009 -1.20067,0.0322 -1.54888,0.12418 0.0989,-0.0919 0.1056,-0.13336 0.0185,-0.12418 -0.0868,0.009 -0.16801,0.0138 -0.24261,0.0138 -0.0254,0.0552 -0.0185,0.1058 0.0185,0.15177 0.0371,0.046 0.0185,0.0966 -0.0565,0.15176 0.74665,2e-5 1.55532,0.0184 2.4261,0.0552 0.87079,0.0369 1.74782,0.069 2.63138,0.0966 0.88307,0.0277 1.76029,0.0414 2.63117,0.0414 0.87079,1e-5 1.70443,-0.0367 2.50071,-0.11034 -1.04514,-0.0919 -2.1088,-0.16555 -3.1912,-0.22075 -1.08238,-0.0552 -2.18349,-0.10114 -3.30313,-0.13798 l 0,0 z m -4.70263,-0.0552 c -0.67186,-0.0184 -1.3997,-0.0184 -2.1834,0 -0.7838,0.0184 -1.57385,0.0414 -2.37014,0.0689 -0.79618,0.0277 -1.57996,0.0506 -2.35133,0.069 -0.77134,0.0184 -1.48041,0.0184 -2.12731,0 0.0254,0.12878 0.0749,0.21616 0.14928,0.26213 0.0749,0.046 0.16789,0.0736 0.27989,0.0828 0.11227,0.009 0.23003,0.009 0.35459,0 0.12432,-0.009 0.24876,-0.0138 0.37319,-0.0138 0.49761,-0.0367 1.04495,-0.0644 1.64229,-0.0828 0.59705,-0.0184 1.21296,-0.0322 1.84742,-0.0413 0.63451,-0.009 1.25654,-0.0138 1.86618,-0.0138 0.60946,1e-5 1.17552,0.009 1.69819,0.0275 0.34831,0.0184 0.69048,0.0369 1.02632,0.0552 0.33593,0.0184 0.6034,-0.0736 0.80243,-0.27593 -0.19903,-0.16557 -0.53496,-0.21155 -1.0076,-0.13799 l 0,0 z m -13.84691,-0.19318 c 0.12431,-0.0367 0.24246,-0.0275 0.3546,0.0277 0.11229,0.0552 0.21773,0.0552 0.31718,0 -0.0749,-0.0367 -0.18659,-0.0736 -0.33589,-0.11034 -0.1493,-0.0367 -0.26117,-0.009 -0.33589,0.0828 l 0,0 z m 24.6705,0.88303 c -0.47274,-0.0184 -0.97668,-0.0138 -1.51154,0.0138 -0.53496,0.0276 -1.0388,0.0323 -1.51144,0.0138 -0.64709,-0.0368 -1.29399,-0.0598 -1.94089,-0.069 -0.6469,-0.009 -1.25664,0.005 -1.82884,0.0414 -0.47284,-0.0184 -0.92686,-0.0414 -1.36236,-0.0689 -0.43539,-0.0277 -0.85215,0.005 -1.2502,0.0966 0.29849,0.11034 0.67166,0.17478 1.11954,0.19316 0.44797,0.0184 0.9331,0.009 1.45566,-0.0276 0.54734,0.0184 1.16314,0.0369 1.84757,0.0552 0.68415,0.0184 1.38078,0.0322 2.08999,0.0413 0.70901,0.009 1.42445,0.0184 2.14605,0.0275 0.7216,0.009 1.39336,0.0139 2.01559,0.0139 0.0751,0.11033 0.0868,0.19317 0.037,0.24836 -0.0497,0.0552 -0.13105,0.092 -0.24271,0.11033 -0.11233,0.0184 -0.23637,0.0229 -0.37328,0.0138 -0.13681,-0.009 -0.255,-0.0138 -0.35455,-0.0138 -0.19902,2e-5 -0.43549,-0.005 -0.70912,-0.0137 -0.27381,-0.009 -0.50998,-0.0139 -0.70911,-0.0139 -1.51788,-0.0919 -2.9672,-0.14256 -4.34817,-0.15178 -1.38098,-0.009 -2.76809,-0.0137 -4.16145,-0.0137 1.84114,0.14718 3.76331,0.22076 5.76631,0.22075 2.0031,1e-5 3.96252,0.009 5.87844,0.0276 0,-0.14716 -0.0497,-0.32192 -0.14929,-0.5243 -0.099,-0.20234 -0.21151,-0.35871 -0.33594,-0.46911 -0.0497,0.11035 -0.12432,0.18858 -0.22388,0.23455 -0.0989,0.0459 -0.22399,0.0689 -0.37318,0.0689 -0.14939,1e-5 -0.31117,-0.009 -0.48532,-0.0275 -0.17425,-0.0184 -0.33583,-0.0276 -0.48522,-0.0276 l 0,0 z m -10.86094,-0.11035 c -0.54733,0.0184 -1.13846,0.0229 -1.77278,0.0138 -0.63461,-0.009 -1.27526,-0.009 -1.92216,0 -0.64709,0.009 -1.28769,0.0322 -1.92217,0.069 -0.6345,0.0369 -1.21311,0.11045 -1.73559,0.22076 1.11968,-0.0368 2.25177,-0.0735 3.39633,-0.11034 1.1445,-0.0368 2.37619,-0.0368 3.69504,0 0.19912,2e-5 0.41043,0.0276 0.63461,0.0828 0.22389,0.0552 0.41043,0.009 0.55972,-0.13797 -0.12423,-0.0919 -0.26123,-0.13795 -0.41043,-0.13797 -0.14929,2e-5 -0.32354,2e-5 -0.52257,0 l 0,0 z m 0.933,0.22076 c 0.12433,2e-5 0.21151,-0.009 0.26123,-0.0276 0.0497,-0.0184 0.0497,-0.0735 0,-0.16556 l -0.14928,0 c -0.0751,0.0736 -0.11234,0.13799 -0.11234,0.19316 l 0,0 z m -6.56882,0.30354 c 0.0495,0.092 0.16172,0.15178 0.33588,0.17936 0.17429,0.0276 0.32345,0.0414 0.4479,0.0414 0.57232,0.0552 1.20674,0.0644 1.90346,0.0276 0.69673,-0.0368 1.40584,-0.0735 2.12743,-0.11035 0.24875,0.0184 0.54734,0.0506 0.89584,0.0966 0.34813,0.0459 0.62194,-0.005 0.82106,-0.15177 -1.04504,-0.12876 -2.11504,-0.17936 -3.20972,-0.15176 -1.09496,0.0276 -2.20222,0.0506 -3.32185,0.0689 l 0,0 z m 8.21103,0.4415 c -0.27372,-0.0184 -0.50395,-0.0368 -0.69049,-0.0552 -0.18663,-0.0184 -0.35465,0.0459 -0.50374,0.19316 1.96555,0.0552 3.88772,0.12419 5.76649,0.20697 1.87829,0.0828 3.71347,0.0229 5.50487,-0.17938 -1.7167,-0.0552 -3.39636,-0.10113 -5.03857,-0.13798 -1.64211,-0.0368 -3.32157,-0.0459 -5.03856,-0.0276 l 0,0 z m -5.78493,0.11035 c 0.796,-0.0368 1.51768,-0.0368 2.16468,0 0.64699,0.0368 1.3685,0.009 2.16468,-0.0828 -0.5723,-0.0184 -1.2503,-0.0322 -2.03421,-0.0414 -0.7838,-0.009 -1.54878,0.0323 -2.29515,0.12419 l 0,0 z m -23.99887,-0.85543 c 0,0.12879 0.0494,0.19317 0.14943,0.19316 0,-0.0368 0.0427,-0.0552 0.13098,-0.0552 0.0868,1e-5 0.13099,-0.0459 0.13099,-0.13796 -0.1243,-0.0368 -0.20531,-0.0459 -0.2426,-0.0276 -0.0374,0.0184 -0.0935,0.0276 -0.168,0.0276 l 0,0 z m -3.39632,0 c 0.0749,0.0184 0.0682,0.0689 -0.0187,0.15175 -0.0869,0.0828 -0.0307,0.12421 0.16801,0.1242 0,-0.0368 0.0749,-0.0598 0.22388,-0.069 0.1493,-0.009 0.16172,-0.0413 0.0374,-0.0966 0,0.092 -0.0495,0.0873 -0.14915,-0.0138 -0.10025,-0.10112 -0.18673,-0.13337 -0.26131,-0.0966 l 0,0 z m 1.56757,0.24835 c 0.0749,1e-5 0.14301,0.0137 0.20531,0.0413 0.0614,0.0276 0.13098,0.0413 0.20516,0.0413 0,-0.0919 0.0441,-0.14716 0.13099,-0.16557 0.0868,-0.0184 0.13098,-0.0459 0.13098,-0.0828 -0.12429,-0.0184 -0.26758,-0.0184 -0.42931,0 -0.16173,0.0184 -0.24259,0.0736 -0.24259,0.16556 l 0,0 z m 24.78248,0.57948 c 0.0751,0.0551 0.23013,0.0828 0.4665,0.0828 0.23647,1e-5 0.39201,-0.0459 0.4666,-0.13796 -0.19902,0.0369 -0.38576,0.0459 -0.55991,0.0276 -0.17416,-0.0184 -0.29859,-0.009 -0.37319,0.0276 l 0,0 z m 17.50456,0.46909 -0.11224,0 c -0.9208,0.0551 -1.89729,0.0782 -2.92985,0.069 -1.03285,-0.009 -2.06532,-0.0275 -3.09797,-0.0552 -1.03256,-0.0276 -2.04036,-0.0598 -3.02318,-0.0966 -0.98274,-0.0368 -1.88473,-0.0552 -2.70578,-0.0552 -9e-5,0.0552 -0.0136,0.10124 -0.0371,0.13796 -0.0254,0.0369 -0.10024,0.0552 -0.22398,0.0552 0,-0.0368 0,-0.0873 0.0185,-0.15176 0.0136,-0.0644 -0.0439,-0.0782 -0.16801,-0.0414 -0.647,-0.0184 -1.28757,-0.0184 -1.92217,0 -0.63441,0.0184 -1.38712,0.0184 -2.258,0 0.27362,0.14719 0.55348,0.24838 0.83968,0.30354 0.28629,0.0552 0.56606,0.18399 0.83977,0.38634 0,-0.0368 0.0136,-0.0873 0.037,-0.15178 0.0254,-0.0644 0.099,-0.069 0.22419,-0.0139 0.22368,-0.0184 0.46629,-0.0184 0.72773,0 0.26123,0.0184 0.50989,0.0369 0.74636,0.0552 0.23637,0.0184 0.44154,0.0138 0.61579,-0.0138 0.17416,-0.0275 0.29859,-0.0873 0.37318,-0.17938 -0.0497,0.0921 -0.0185,0.13799 0.0936,0.13798 0.11233,1e-5 0.16791,0.0184 0.16801,0.0552 0.94538,-0.0184 1.92187,-0.0138 2.92966,0.0138 1.00789,0.0276 2.00934,0.0552 3.00455,0.0828 0.99532,0.0276 1.98438,0.0368 2.9673,0.0276 0.98264,-0.009 1.93446,-0.0689 2.85527,-0.17937 0.0254,-0.0919 0.0254,-0.15634 0,-0.19317 -0.0254,-0.0368 -0.0136,-0.10111 0.0371,-0.19316 l 0,0 z m -43.8919,-0.82733 c 0.19902,0.0184 0.44162,0.0276 0.72778,0.0276 0.28604,1e-5 0.52877,-0.0184 0.72779,-0.0552 -0.0495,-0.0552 -0.14931,-0.10113 -0.29861,-0.13796 -0.14916,-0.0368 -0.29859,-0.0552 -0.44789,-0.0552 -0.1493,2e-5 -0.29231,0.0138 -0.42918,0.0414 -0.13688,0.0276 -0.23031,0.0873 -0.27989,0.17936 l 0,0 z m 25.60356,0.91062 c -0.27373,-0.0184 -0.52875,-0.0873 -0.76506,-0.20697 -0.23659,-0.11956 -0.41689,-0.15174 -0.54119,-0.0966 0.52246,0.14718 0.97023,0.34495 1.34369,0.59329 0.37316,0.24837 0.77111,0.45531 1.19422,0.62087 -0.12423,-0.20235 -0.31116,-0.35412 -0.55991,-0.4553 -0.24885,-0.10113 -0.47273,-0.25294 -0.67175,-0.45531 l 0,0 z m 0.74654,0.33113 c 0,-0.092 -0.10025,-0.17934 -0.29859,-0.26216 -0.19922,-0.0828 -0.29865,-0.10578 -0.29865,-0.069 0.1243,0.0552 0.22386,0.10578 0.29865,0.15178 0.0751,0.0459 0.17396,0.10579 0.29859,0.17935 l 0,0 z m 16.86984,0.35871 c -1.56751,10e-6 -3.09768,-0.005 -4.59069,-0.0138 -1.49291,-0.009 -2.79919,-0.0506 -3.91882,-0.12418 -0.27363,0.0369 -0.5101,0.0552 -0.70921,0.0552 -0.19903,10e-6 -0.4355,10e-6 -0.70911,0 -0.10025,10e-6 -0.22399,-0.009 -0.37329,-0.0276 -0.14929,-0.0184 -0.29234,-0.0229 -0.42924,-0.0138 -0.13672,0.009 -0.255,0.0369 -0.35446,0.0828 -0.10024,0.0459 -0.14939,0.115 -0.1493,0.20695 0.67177,0.0184 1.46172,0.0369 2.36995,0.0552 0.90822,0.0184 1.85361,0.0323 2.83654,0.0413 0.98283,0.009 1.95951,0.0229 2.92995,0.0414 0.97026,0.0184 1.85362,0.0369 2.65001,0.0552 0.0751,1e-5 0.16772,0.005 0.27985,0.0138 0.11224,0.009 0.22379,0.009 0.33593,0 0.11224,-0.009 0.21765,-0.0322 0.3173,-0.069 0.0989,-0.0368 0.1491,-0.10113 0.1493,-0.19317 -2e-4,-0.0919 -0.0936,-0.11032 -0.28005,-0.0552 -0.18655,0.0552 -0.30473,0.0369 -0.35466,-0.0552 l 0,0 z m -41.95096,-0.85541 c 0.19901,1e-5 0.3296,-0.0184 0.39189,-0.0552 0.0614,-0.0368 0.19287,-0.0552 0.39175,-0.0552 -0.0494,-0.0368 -0.0307,-0.0598 0.0561,-0.069 0.0868,-0.009 0.131,-0.0415 0.131,-0.0966 -0.44791,-0.0368 -0.77137,0.0552 -0.97039,0.27595 l 0,0 z m 42.73477,1.15896 c 0.0751,10e-6 0.11234,-0.0644 0.11234,-0.19317 -0.0751,1e-5 -0.11234,-0.0184 -0.11234,-0.0552 l 0,-0.0552 0,0.30355 z m -14.77986,-0.38632 c -0.0254,0.14718 0.0371,0.23916 0.18673,0.27593 0.149,0.0369 0.24875,0.10124 0.29849,0.19316 0.0989,-0.0919 0.24261,-0.14715 0.42924,-0.16555 0.18664,-0.0184 0.38547,-0.0276 0.59708,-0.0276 0.2115,2e-5 0.41052,-0.005 0.59726,-0.0139 0.18644,-0.009 0.35446,-0.0506 0.50374,-0.12418 -0.14928,-0.0919 -0.32959,-0.14714 -0.54118,-0.16556 -0.21151,-0.0184 -0.42916,-0.0184 -0.65305,0 -0.22408,0.0184 -0.46035,0.0369 -0.7091,0.0551 -0.24886,0.0184 -0.48533,0.009 -0.70921,-0.0276 l 0,0 z m -0.29859,0.35872 c -0.12433,1e-5 -0.21775,-0.0322 -0.28006,-0.0966 -0.0614,-0.0644 -0.13095,-0.0966 -0.20516,-0.0966 -0.0254,0.0368 0.0185,0.0873 0.13105,0.15179 0.11224,0.0644 0.23013,0.0782 0.35456,0.0413 l 0,0 z m -27.24585,-0.85543 c -0.19903,1e-5 -0.46033,-0.0275 -0.78365,-0.0828 -0.3236,-0.0552 -0.54748,-0.0368 -0.67191,0.0552 0.19915,-0.0368 0.47275,-0.0276 0.8212,0.0275 0.34832,0.0552 0.55977,0.0552 0.63436,0 l 0,0 z m 31.94858,1.07618 c 1.7914,0.0184 3.50831,0.0783 5.15061,0.17938 1.64211,0.10124 3.28442,0.10577 4.92671,0.0138 -1.5677,-0.0919 -3.19128,-0.15635 -4.87094,-0.19317 -1.67935,-0.0367 -3.41498,-0.0367 -5.20638,0 l 0,0 z m -0.11233,0 c -0.12423,1e-5 -0.26767,-0.0138 -0.42925,-0.0413 -0.16178,-0.0275 -0.24261,-0.0229 -0.24261,0.0138 0.0751,10e-6 0.18654,0.0184 0.33583,0.0552 0.14929,0.0369 0.26124,0.0276 0.33603,-0.0276 l 0,0 z m -33.3295,-0.52428 c 0.27373,0.0919 0.66562,0.12417 1.17553,0.0966 0.51018,-0.0275 0.98922,-0.005 1.43712,0.0689 0,-0.0919 -0.0187,-0.15175 -0.0561,-0.17936 -0.0374,-0.0275 -0.0561,-0.069 -0.0561,-0.12417 -0.44789,-0.0552 -0.84608,-0.0828 -1.19439,-0.0828 -0.34833,1e-5 -0.77136,-0.0552 -1.26897,-0.16556 0.0494,0.0919 0.0749,0.15636 0.0749,0.19315 0,0.0369 -0.0134,0.0598 -0.0374,0.069 -0.0241,0.009 -0.0494,0.0184 -0.0749,0.0275 -0.0254,0.009 -0.0254,0.0413 0,0.0966 l 0,0 z m -1.30627,-0.24835 c 0.0749,0.11045 0.0989,0.23916 0.0749,0.38631 -0.0255,0.1472 -0.0375,0.28977 -0.0375,0.42772 0,0.13799 0.0254,0.26216 0.0749,0.37251 0.0495,0.11035 0.17415,0.17478 0.37318,0.19316 0.0749,-0.14714 0.0749,-0.22534 0,-0.23454 -0.0749,-0.009 -0.11227,-0.0598 -0.11227,-0.15177 0.19901,-0.0919 0.22388,-0.20235 0.0749,-0.33114 -0.14931,-0.12874 -0.24875,-0.24832 -0.2986,-0.35871 0.19915,0.0184 0.29232,2e-5 0.28002,-0.0552 -0.0133,-0.0552 0,-0.15636 0.0186,-0.30355 -0.0749,2e-5 -0.16174,2e-5 -0.26117,0 -0.10025,2e-5 -0.16187,0.0184 -0.18659,0.0552 l 0,0 z m 43.6306,1.32452 c -0.79638,-0.0368 -1.61743,-0.0828 -2.46335,-0.13798 -0.84611,-0.0552 -1.62982,-0.0919 -2.35132,-0.11033 -0.72169,-0.0185 -1.51788,-0.0185 -2.38866,0 -0.87079,0.0185 -1.60486,0.009 -2.20223,-0.0276 -0.19902,1e-5 -0.41043,-0.009 -0.63432,-0.0275 -0.22407,-0.0185 -0.41072,0.046 -0.55991,0.19316 1.8662,-0.0367 3.74477,-0.0229 5.63573,0.0413 1.89097,0.0644 3.93142,0.1242 6.12115,0.17935 -0.12433,-0.14714 -0.29868,-0.20232 -0.52257,-0.16555 -0.22408,0.0369 -0.43549,0.0552 -0.63452,0.0552 l 0,0 z m -12.42864,0.11034 c -0.12432,-0.0919 -0.24895,-0.18395 -0.37317,-0.27593 -0.12433,-0.092 -0.24895,-0.15636 -0.37338,-0.19316 0.0497,0.092 0.15563,0.19316 0.31731,0.30354 0.16177,0.11033 0.30472,0.16556 0.42924,0.16555 l 0,0 z m 0.41054,-0.35871 c 0.0497,0.0921 0.18663,0.17476 0.41062,0.24833 0.22389,0.0736 0.47264,0.0644 0.74636,-0.0276 -0.12433,-0.0367 -0.23013,-0.0367 -0.31721,0 -0.0868,0.0369 -0.15553,0.009 -0.20526,-0.0828 0.0497,1e-5 0.12432,0.009 0.22398,0.0275 0.099,0.0184 0.14919,0.009 0.14919,-0.0275 -0.0497,-0.0919 -0.0185,-0.11955 0.0936,-0.0828 0.11225,0.0369 0.14306,0.0276 0.0936,-0.0276 -0.12433,-0.0367 -0.32344,-0.0597 -0.59707,-0.069 -0.27371,-0.009 -0.47274,0.005 -0.59716,0.0413 l 0,0 z m -22.54311,3.91838 c 0.0494,0.0185 0.13098,0.0367 0.24272,0.0552 0.11227,0.0185 0.20516,0.0736 0.27974,0.16558 0.0495,10e-6 0.0561,0.0369 0.0187,0.11035 -0.0374,0.0736 -0.0561,0.12877 -0.0561,0.16556 0.0495,0.0552 0.1493,0.15637 0.29873,0.30354 0.14929,0.14717 0.24874,0.24836 0.29846,0.30352 0.22402,0.14719 0.41675,0.31276 0.57861,0.4967 0.1616,0.18396 0.31704,0.36334 0.46648,0.53809 0.1493,0.17477 0.30488,0.33114 0.46647,0.46911 0.16173,0.13798 0.37947,0.23456 0.6532,0.28974 -0.19901,-0.25755 -0.42304,-0.47368 -0.67177,-0.64847 -0.24888,-0.17476 -0.39818,-0.38172 -0.4479,-0.62086 0.4479,0.34951 0.90195,0.74504 1.36226,1.18654 0.46033,0.44153 1.01395,0.74506 1.66087,0.91062 -1.64214,-1.32453 -3.17858,-2.67663 -4.60941,-4.05636 -1.4307,-1.37969 -2.8054,-2.8146 -4.12421,-4.30472 0.224,0.44152 0.47903,0.85085 0.76519,1.22796 0.28617,0.37713 0.59092,0.74965 0.91437,1.11757 0.32346,0.36793 0.65307,0.73586 0.98909,1.10378 0.33589,0.36792 0.64076,0.76344 0.91438,1.18655 l 0,0 z m 23.96142,-3.58725 c 0.92052,1e-5 1.88472,0.0276 2.89252,0.0828 1.00778,0.0552 2.02162,0.11034 3.0419,0.16559 1.02007,0.0551 2.02152,0.0966 3.00455,0.12416 0.98273,0.0276 1.92217,0.0138 2.81791,-0.0414 -1.96585,-0.11034 -3.97509,-0.20234 -6.02783,-0.27595 -2.05273,-0.0736 -3.96251,-0.0919 -5.72905,-0.0552 l 0,0 z m -31.72454,-0.85544 c 0,0.0921 0,0.16558 -0.0187,0.22077 -0.0134,0.0552 -0.0187,0.11044 -0.0187,0.16556 0.64691,0.0184 1.20681,0.0598 1.67943,0.12417 0.47276,0.0644 1.0078,0.0783 1.60486,0.0413 -0.17415,-0.0919 -0.24873,-0.22074 -0.22388,-0.38632 -0.59719,-0.0367 -1.08853,-0.0688 -1.47413,-0.0966 -0.38575,-0.0275 -0.90208,-0.0505 -1.549,-0.0689 l 0,0 z m 42.1377,1.54529 c -0.5724,-0.0184 -1.19453,-0.0552 -1.86609,-0.11035 -0.67197,-0.0552 -1.34996,-0.10112 -2.03421,-0.13795 -0.68424,-0.0367 -1.37473,-0.0688 -2.07136,-0.0966 -0.69673,-0.0275 -1.35611,-0.0229 -1.97824,0.0138 -0.39805,-0.0185 -0.82729,-0.0506 -1.28755,-0.0966 -0.46036,-0.046 -0.85226,0.0229 -1.17571,0.20693 -0.0254,0.14719 0.0819,0.23917 0.31721,0.27594 0.23637,0.0369 0.41667,0.0552 0.54119,0.0552 1.56752,0.092 3.17238,0.14719 4.81478,0.16557 1.6422,0.0185 3.2222,0.0185 4.73998,0 0.27362,1e-5 0.55348,0.009 0.83978,0.0275 0.2861,0.0185 0.52871,-0.046 0.72783,-0.19317 -0.24885,-0.0919 -0.50395,-0.12416 -0.76508,-0.0966 -0.26143,0.0276 -0.52891,0.0229 -0.80253,-0.0138 l 0,0 z m -10.71174,-0.11031 c 0.0253,-0.0736 0.037,-0.13795 0.037,-0.19315 l -0.0751,-0.0552 c -0.0497,-0.0367 -0.11233,-0.0552 -0.18664,-0.0552 0,0.092 0.0254,0.15179 0.0751,0.17938 0.0497,0.0276 0.099,0.069 0.14929,0.12416 l 0,0 z m -31.46326,-0.77264 0,0.19316 c 0.59706,0.0185 1.23168,0.046 1.90332,0.0828 0.67192,0.0369 1.21938,0.0369 1.64242,0 -0.47289,-0.0552 -1.05137,-0.11031 -1.73558,-0.16556 -0.6842,-0.0552 -1.28769,-0.0919 -1.81016,-0.11033 l 0,0 z m 38.5174,1.43491 c 0.57221,0.0185 1.21286,0.0505 1.92207,0.0966 0.70901,0.046 1.37464,0.0506 1.99686,0.0138 0.0497,1e-5 0.19259,1e-5 0.42916,0 0.23637,1e-5 0.35455,-0.0184 0.35455,-0.0551 -0.79629,-0.0367 -1.5676,-0.0736 -2.31397,-0.11033 -0.74645,-0.0367 -1.54284,-0.0185 -2.38867,0.0552 l 0,0 z m -6.53157,-0.16557 c 0.0254,0.0552 0.0936,0.092 0.20517,0.11034 0.11233,0.0185 0.22389,0.0229 0.33602,0.0138 0.11233,-0.009 0.20517,-0.0322 0.27987,-0.069 0.0751,-0.0368 0.099,-0.0828 0.0751,-0.13798 -0.12422,0.0369 -0.25499,0.0506 -0.3917,0.0413 -0.137,-0.009 -0.30502,0.005 -0.50395,0.0413 l 0,0 z m -31.87395,-0.4967 c 0.34844,-0.0185 0.67805,-0.0185 0.98908,0 0.31103,0.0185 0.60962,0.0323 0.89579,0.0414 0.28603,0.009 0.58476,0.0138 0.89579,0.0138 0.31103,1e-5 0.64063,-0.0185 0.98895,-0.0552 -0.22387,-0.12875 -0.48506,-0.20235 -0.78378,-0.22075 -0.29859,-0.0185 -0.61577,-0.0229 -0.95166,-0.0138 -0.33589,0.009 -0.67806,0.0185 -1.02637,0.0276 -0.34833,0.009 -0.68422,-0.0138 -1.0078,-0.0688 0,0.0367 0.0134,0.0828 0.0374,0.13799 0.0254,0.0552 0.0134,0.10123 -0.0374,0.13796 l 0,0 z m -1.08238,0.27594 c 0.19915,-0.14715 0.29859,-0.3403 0.29859,-0.57949 -0.17417,3e-5 -0.31104,-0.009 -0.41048,-0.0275 0,0.092 -0.0134,0.19774 -0.0374,0.31732 -0.0241,0.11959 0.0254,0.21617 0.1493,0.28973 l 0,0 z m 36.57658,0.99339 c 0.32354,-0.0184 0.67809,-0.0276 1.06376,-0.0276 0.38556,0 0.76518,0.005 1.13836,0.0138 0.37318,0.009 0.72149,0.009 1.04494,0 0.32345,-0.009 0.58469,-0.0322 0.784,-0.0689 0.0751,0 0.13671,-0.0185 0.18655,-0.0552 l 0.0751,-0.0552 c -10e-5,-0.0919 -0.10561,-0.12875 -0.31721,-0.11033 -0.2115,0.0185 -0.45411,0.0185 -0.72794,0 -0.39794,0 -0.93299,-0.0275 -1.60485,-0.0828 -0.67176,-0.0552 -1.26903,-0.0919 -1.7915,-0.11035 -0.64699,0.0369 -1.20681,0.10123 -1.67945,0.19316 -0.47274,0.092 -0.99522,0.12879 -1.56762,0.11035 0.0497,0.0551 0.0868,0.12418 0.11233,0.20695 0.0254,0.0828 0.0614,0.14257 0.11225,0.17936 1.71689,0.0367 3.47729,0.0919 5.28137,0.16557 1.80369,0.0736 3.56427,0.092 5.28117,0.0552 0.0244,-0.14718 0.0868,-0.22994 0.18655,-0.24835 0.0989,-0.0185 0.18663,-0.10112 0.26133,-0.24836 -0.52266,-0.11034 -1.08259,-0.16095 -1.67956,-0.15174 -0.59736,0.009 -1.13231,0.0322 -1.60485,0.0689 0.12422,0.0552 0.29839,0.0828 0.52246,0.0828 0.22389,0 0.46026,0 0.70921,0 0.24866,0 0.47255,0.009 0.67157,0.0276 0.19922,0.0184 0.34851,0.0644 0.44807,0.13797 -0.37327,0.11034 -0.75903,0.16558 -1.15708,0.16556 -1.04494,-0.0736 -2.11495,-0.092 -3.20991,-0.0552 -1.09468,0.0367 -2.16469,0.0367 -3.20973,0 -0.32345,-0.0185 -0.72773,-0.0323 -1.21295,-0.0413 -0.48513,-0.009 -0.81491,-0.0873 -0.98907,-0.23455 0.52247,0.0185 0.97054,0.0322 1.34372,0.0413 0.37318,0.009 0.88317,0.0229 1.53017,0.0413 l 0,0 z m -36.83776,-1.02097 c 0.0254,-0.0921 0.0307,-0.17936 0.0187,-0.26216 -0.0134,-0.0828 -0.0561,-0.12415 -0.13097,-0.12416 -0.0494,0.0369 -0.0561,0.0966 -0.0187,0.17936 0.0374,0.0828 0.0801,0.15177 0.13098,0.20696 l 0,0 z m 4.55327,0.13796 c -0.27359,-0.0184 -0.57221,-0.0506 -0.89567,-0.0966 -0.32344,-0.046 -0.58475,-0.005 -0.78376,0.12418 0.19901,-0.0367 0.54745,-0.046 1.04507,-0.0275 0.49763,0.0184 0.97039,0.0552 1.41828,0.11035 -0.0495,-0.14716 -0.16186,-0.20235 -0.33588,-0.16556 -0.1743,0.0369 -0.32361,0.0551 -0.44804,0.0551 l 0,0 z m -4.06823,0.85543 c 0,-0.0921 0.0134,-0.22995 0.0374,-0.41392 0.0254,-0.18393 -0.0254,-0.27593 -0.1493,-0.27594 -0.0494,0.0552 -0.0935,0.17936 -0.13099,0.37252 -0.0374,0.19317 0.0441,0.29897 0.24245,0.31734 l 0,0 z m 0.67193,-0.55189 c 0.0254,1e-5 0.0628,0.0184 0.11226,0.0552 0,0.0185 0.0134,0.0276 0.0374,0.0276 0.42303,-0.0184 0.80249,-0.0184 1.13824,0 0.33603,0.0185 0.65949,0.0369 0.97051,0.0552 0.31103,0.0184 0.62206,0.0369 0.93309,0.0552 0.31102,0.0184 0.64063,0.0184 0.98908,0 -0.27373,-0.0736 -0.57862,-0.12417 -0.91437,-0.15178 -0.33588,-0.0275 -0.69049,-0.0413 -1.06368,-0.0413 -0.37343,1e-5 -0.75276,1e-5 -1.13851,0 -0.38561,1e-5 -0.7402,1e-5 -1.06366,0 l 0,0 z m 37.21115,1.21414 c -0.72179,-0.0919 -1.44952,-0.12876 -2.18351,-0.11033 -0.73407,0.0184 -1.5365,0.009 -2.40729,-0.0276 0,0.0369 0.0254,0.0643 0.0751,0.0828 0.0497,0.0185 0.0751,0.0552 0.0751,0.11035 0.32345,-0.0185 0.69664,-0.0138 1.11964,0.0138 0.42301,0.0276 0.84612,0.0506 1.26903,0.0689 0.42301,0.0185 0.82105,0.0229 1.19433,0.0138 0.37319,-0.009 0.65938,-0.0598 0.8585,-0.15179 l 0,0 z m 0.37318,0 c 0,0.14719 0.1056,0.22076 0.31731,0.22075 0.21149,1e-5 0.41676,1e-5 0.61578,0 0.34822,1e-5 0.72764,0.005 1.13837,0.0139 0.41052,0.009 0.82095,0.0138 1.23157,0.0138 0.41063,0 0.80253,-0.005 1.17562,-0.0138 0.37317,-0.009 0.70921,-0.0322 1.00788,-0.069 -1.11983,-0.0921 -2.09652,-0.15177 -2.93005,-0.17937 -0.83344,-0.0276 -1.6857,-0.0229 -2.55648,0.0138 l 0,0 z m -32.65761,-0.71744 c -0.72177,0.0369 -1.44956,0 -2.18349,-0.11034 -0.73392,-0.11033 -1.42441,-0.14715 -2.07146,-0.11033 -0.0749,1e-5 -0.16788,0.009 -0.27988,0.0276 -0.11228,0.0184 -0.2053,0.0736 -0.27988,0.16557 0.92065,0.11032 1.76657,0.18857 2.53794,0.23454 0.77135,0.046 1.61741,0.115 2.53794,0.20697 0.0749,-0.14716 0.0494,-0.22996 -0.0749,-0.24835 -0.12431,-0.0184 -0.18658,-0.0736 -0.18658,-0.16556 l 0,0 z m 29.63453,1.40732 c 1.24396,0.0367 2.48188,0.0966 3.71356,0.17934 1.23168,0.0828 2.34508,0.0873 3.34029,0.0138 0.10024,1e-5 0.22408,0.009 0.37338,0.0276 0.14909,0.0185 0.29224,0.0276 0.42914,0.0276 0.13672,1e-5 0.255,-0.0229 0.35457,-0.0688 0.099,-0.046 0.14939,-0.13335 0.14939,-0.26214 -0.82126,-0.0367 -1.59258,-0.0783 -2.31407,-0.12419 -0.7217,-0.046 -1.41832,-0.0736 -2.09009,-0.0828 -0.67195,-0.009 -1.33123,0.005 -1.97814,0.0414 -0.64699,0.0369 -1.30627,0.11959 -1.97803,0.24836 l 0,0 z M -539.31422,82.609 c 1.04509,0.12879 1.9842,0.20696 2.81782,0.23456 0.83352,0.0276 1.81017,0.0599 2.92984,0.0966 -0.24873,-0.20235 -0.57233,-0.29435 -0.97037,-0.27594 -0.39804,0.0185 -0.84594,0 -1.34355,-0.0552 -0.52262,-0.0185 -1.02024,-0.0644 -1.49299,-0.13797 -0.47276,-0.0736 -1.06995,-0.0919 -1.79145,-0.0551 l 0,-0.0276 c 0,-0.0367 -0.0374,-0.0552 -0.11228,-0.0552 0.0494,0.0921 0.0614,0.15179 0.0374,0.17937 -0.0254,0.0276 -0.0494,0.0598 -0.0749,0.0966 l 0,0 z m -0.78392,0.66226 c 0.0495,-0.092 0.0628,-0.22535 0.0374,-0.40011 -0.0241,-0.17477 -0.0241,-0.33572 0,-0.4829 l -0.14918,0 c -0.0253,0.14718 -0.0442,0.29435 -0.0561,0.4415 -0.0134,0.14719 0.0441,0.29434 0.16788,0.44151 l 0,0 z m 33.6654,0.55188 c 0,0.092 -0.0371,0.15178 -0.11224,0.17937 -0.0751,0.0276 -0.0868,0.11501 -0.0371,0.26216 1.26893,-0.0552 2.61265,-0.0413 4.03087,0.0414 1.41832,0.0828 2.82416,0.12417 4.21751,0.12417 0.27362,0 0.5722,-0.009 0.89565,-0.0276 0.32364,-0.0185 0.54753,-0.12877 0.67196,-0.33114 -1.81646,-0.14717 -3.50216,-0.23912 -5.05729,-0.27594 -1.55512,-0.0367 -3.09153,-0.0275 -4.60941,0.0276 l 0,0 z m -32.88148,-0.71744 c 0,0.11035 0.0442,0.18857 0.13099,0.23455 0.0869,0.046 0.2053,0.0736 0.35447,0.0828 0.1493,0.009 0.30488,0.009 0.46661,0 0.16173,-0.009 0.30473,-0.0138 0.42917,-0.0138 0.37319,0.0369 0.77136,0.0736 1.19439,0.11034 0.42303,0.0368 0.85222,0.0599 1.28755,0.0689 0.43548,0.009 0.85851,0.005 1.26897,-0.0138 0.41074,-0.0185 0.77764,-0.0552 1.10123,-0.11034 -0.9705,-0.12877 -1.99074,-0.23915 -3.06068,-0.33113 -1.06982,-0.0919 -2.12721,-0.10123 -3.1723,-0.0276 l 0,0 z m 31.94858,0.96581 c 0.12423,0.0552 0.2114,0.0367 0.26114,-0.0552 0.0497,-0.0921 0.0137,-0.13798 -0.11224,-0.13798 -0.10025,0.0735 -0.14948,0.11958 -0.14929,0.13798 -0.0254,0.0185 -0.0254,0.0367 0,0.0552 l 0,0 z m 1.26893,0.52428 -0.37328,0 c 0.89575,1e-5 1.74167,0.0276 2.53796,0.0828 0.79619,0.0552 1.56751,0.1058 2.31407,0.15178 0.74635,0.046 1.48667,0.0644 2.22055,0.0551 0.73407,-0.009 1.47448,-0.0873 2.22085,-0.23455 -1.3685,-0.0368 -2.78057,-0.0688 -4.23615,-0.0966 -1.45566,-0.0276 -3.01693,-0.0138 -4.684,0.0413 l 0,0 z m -34.07601,-0.35871 c 0.12431,10e-6 0.16801,-0.0736 0.13099,-0.22076 -0.0374,-0.14716 -0.0307,-0.26675 0.0187,-0.35873 l -0.11228,0 c -0.0749,0.0369 -0.0935,0.11958 -0.0562,0.24835 0.0374,0.12877 0.0442,0.23915 0.0187,0.33114 l 0,0 z m 6.41957,-0.41393 c -0.92066,0.0185 -1.84758,-0.009 -2.78054,-0.0828 -0.93308,-0.0736 -1.83515,-0.0644 -2.70594,0.0276 1.04509,0.12879 2.13976,0.19778 3.28456,0.20696 1.14453,0.009 2.27649,0.0323 3.3963,0.0689 -0.1243,-0.18396 -0.32345,-0.26673 -0.59719,-0.24835 -0.27373,0.0185 -0.47276,0.0276 -0.59719,0.0276 l 0,0 z m 29.63448,1.10379 c -0.22389,0 -0.49137,-0.0184 -0.80253,-0.0552 -0.31096,-0.0367 -0.60341,-0.0552 -0.87693,-0.0552 -0.27372,1e-5 -0.51642,0.0276 -0.72793,0.0828 -0.2114,0.0552 -0.32969,0.1656 -0.35455,0.33116 0.9954,-0.0184 2.07779,-0.0323 3.24726,-0.0413 1.16936,-0.009 2.35122,0.005 3.54565,0.0413 0.47274,-0.0367 0.94538,-0.0413 1.41812,-0.0138 0.47284,0.0276 0.87089,-0.005 1.19433,-0.0966 -0.4976,0.0368 -1.02632,0.046 -1.58613,0.0276 -0.55992,-0.0185 -1.13836,-0.046 -1.73544,-0.0828 -0.59725,-0.0367 -1.18204,-0.0688 -1.75424,-0.0966 -0.5724,-0.0275 -1.09488,-0.0413 -1.56761,-0.0413 l 0,0 z m -30.30626,-0.63468 c -0.79635,-0.0736 -1.636,-0.11035 -2.51936,-0.11035 -0.88336,0 -1.61115,-0.009 -2.18334,-0.0276 l -0.14929,0 c 0.1243,0.092 0.32345,0.13799 0.59706,0.13798 0.27372,1e-5 0.51016,1e-5 0.70919,0 1.04509,0.0369 2.01534,0.0783 2.91112,0.12417 0.89592,0.046 1.80402,0.0873 2.72467,0.12419 -0.24875,-0.20238 -0.55977,-0.28055 -0.93295,-0.23457 -0.37345,0.046 -0.75906,0.0413 -1.1571,-0.0138 l 0,0 z m 28.5521,1.07617 c -0.19902,0.0367 -0.41062,0.0689 -0.6345,0.0966 -0.22399,0.0276 -0.39815,0.115 -0.52248,0.26214 0.59707,-0.0368 1.23168,-0.0368 1.90335,0 0.67195,0.0368 1.36858,0.0828 2.09017,0.13797 0.7215,0.0552 1.46181,0.10579 2.22066,0.15176 0.75893,0.046 1.51173,0.0507 2.25799,0.0138 0.12433,-0.0367 0.2862,-0.0689 0.48542,-0.0966 0.19883,-0.0276 0.29839,-0.14257 0.29839,-0.34493 -1.31866,-0.0368 -2.69964,-0.0921 -4.14282,-0.16556 -1.44318,-0.0736 -2.76194,-0.0919 -3.95618,-0.0552 l 0,0 z m -27.24583,-0.55189 c -0.49762,-0.0185 -1.02023,-0.046 -1.56744,-0.0828 -0.54748,-0.0369 -1.09495,-0.0689 -1.64243,-0.0966 -0.54733,-0.0276 -1.06365,-0.0552 -1.5487,-0.0828 -0.48533,-0.0276 -0.90208,-0.0322 -1.2504,-0.0138 -0.1243,0.0552 -0.16186,0.12419 -0.11227,0.20696 0.0494,0.0828 0.0749,0.14256 0.0749,0.17935 1.19425,0.092 2.43221,0.14717 3.71348,0.16555 1.28153,0.0185 2.48207,-0.0367 3.60186,-0.16555 -0.12429,-0.14716 -0.31729,-0.20236 -0.5786,-0.16557 -0.2613,0.0369 -0.49147,0.0552 -0.6905,0.0552 l 0,0 z m 25.82762,1.10377 c -0.10025,0.0921 -0.16801,0.16558 -0.20537,0.22075 -0.037,0.0552 -0.0312,0.13798 0.0185,0.24836 1.51778,0 2.96711,0.0413 4.34798,0.12417 1.38097,0.0828 2.76829,0.0506 4.16164,-0.0966 0.0497,-0.0367 0.1176,-0.0138 0.20536,0.069 0.0868,0.0828 0.19268,0.10579 0.31731,0.0689 -2e-4,-0.092 0.0185,-0.15176 0.0566,-0.17937 0.037,-0.0275 0.0565,-0.0688 0.0565,-0.12418 -1.36859,-0.0367 -2.79315,-0.0919 -4.27358,-0.16555 -1.48053,-0.0736 -3.04181,-0.12877 -4.68401,-0.16558 l 0,0 z m -25.23043,-0.63467 c -0.39818,0.0552 -0.85223,0.0644 -1.36227,0.0276 -0.51004,-0.0367 -1.05123,-0.0736 -1.62357,-0.11033 -0.64691,0.0369 -1.28769,0.0644 -1.92217,0.0828 -0.63448,0.0185 -1.21309,0 -1.73544,-0.0552 0,0.092 0.0187,0.15176 0.0561,0.17935 0.0374,0.0276 0.0561,0.0598 0.0561,0.0966 1.24412,0.0921 2.54423,0.13798 3.90034,0.13796 1.35599,2e-5 2.66852,2e-5 3.9375,0 -0.0495,-0.20235 -0.19287,-0.30813 -0.42917,-0.31733 -0.23646,-0.009 -0.52877,-0.0229 -0.87709,-0.0414 l 0,0 z m 23.8868,1.04858 c 0.19892,0.0185 0.31711,-0.0138 0.35446,-0.0966 0.037,-0.0828 0.10561,-0.17016 0.20536,-0.26214 l -0.26133,0 c -0.0254,0.0552 -0.0683,0.10578 -0.13096,0.15176 -0.0614,0.046 -0.11761,0.11499 -0.16792,0.20695 l 0,0 z m -26.79806,-0.41391 c -0.0495,-0.0185 -0.11226,-0.046 -0.18659,-0.0828 -0.0749,-0.0368 -0.13687,-0.0552 -0.18657,-0.0552 -0.34833,0.0552 -0.65307,0.0966 -0.91453,0.12417 -0.26115,0.0276 -0.52861,0.0322 -0.80235,0.0138 -0.19915,10e-6 -0.46033,-0.0185 -0.78379,-0.0552 -0.32346,-0.0368 -0.58476,0.0369 -0.78378,0.22077 1.04509,0.0367 2.11491,0.0644 3.20986,0.0828 1.09468,0.0185 2.16462,0.0185 3.2097,0 0.39819,0.0185 0.7278,0.0367 0.98896,0.0552 0.2613,0.0185 0.49147,-0.046 0.69048,-0.19316 -0.84591,-0.0919 -1.59857,-0.14257 -2.25791,-0.15178 -0.65948,-0.009 -1.38726,0.005 -2.18348,0.0413 l 0,0 z m 30.82893,0.82784 c -0.29867,0 -0.64085,-0.0138 -1.02651,-0.0413 -0.38566,-0.0275 -0.74636,-0.0367 -1.08229,-0.0275 -0.33603,0.009 -0.59092,0.0413 -0.76509,0.0966 -0.17425,0.0552 -0.18673,0.15636 -0.0371,0.30354 1.11954,-0.0367 2.24552,-0.046 3.37773,-0.0276 1.13192,0.0184 2.18331,0.0184 3.15385,0 0.17406,-0.0185 0.35436,-0.0229 0.5411,-0.0138 0.18654,0.009 0.37317,0.0138 0.55982,0.0138 0.18663,0 0.35445,-0.0185 0.50394,-0.0552 0.1492,-0.0367 0.28601,-0.10112 0.41043,-0.19317 -0.22389,2e-5 -0.5412,2e-5 -0.95172,0 -0.41063,2e-5 -0.87099,2e-5 -1.38087,0 -0.5102,2e-5 -1.05138,-0.005 -1.62358,-0.0138 -0.57231,-0.009 -1.13223,-0.0229 -1.67957,-0.0413 l 0,0 z m -3.80698,0.30353 0.7837,0 c -0.0751,-0.0552 -0.0936,-0.13336 -0.0565,-0.23456 0.037,-0.10123 0.0185,-0.15176 -0.0566,-0.15176 -0.3485,0.0921 -0.57239,0.22076 -0.67176,0.38632 l 0,0 z m 2.20212,0.24834 c -0.19921,-0.0185 -0.43549,-0.0322 -0.70921,-0.0413 -0.27381,-0.009 -0.48532,0.0873 -0.63451,0.28973 1.04505,-0.0184 2.15843,0 3.34038,0.0552 1.18195,0.0552 2.20827,0.092 3.07916,0.11034 0.32345,-0.0369 0.67176,-0.0598 1.04514,-0.069 0.37318,-0.009 0.59707,-0.12416 0.67176,-0.34493 -1.04514,0.0184 -2.18974,0.0138 -3.43371,-0.0138 -1.24416,-0.0275 -2.36399,-0.0229 -3.35901,0.0138 l 0,0 z m -24.14805,-0.85542 c -0.82121,0.0184 -1.58,0.0276 -2.27677,0.0276 -0.69663,0 -1.38098,-0.009 -2.05262,-0.0276 -0.67192,-0.0185 -1.34996,-0.0323 -2.03432,-0.0413 -0.68419,-0.009 -1.43684,-0.0138 -2.25791,-0.0138 0.0494,0.092 0.15544,0.15178 0.31717,0.17936 0.16187,0.0276 0.26746,0.0413 0.31732,0.0413 1.19439,0.0369 2.54409,0.0552 4.04951,0.0552 1.50541,0 2.9424,0.0185 4.3108,0.0552 0,-0.092 -0.0307,-0.15176 -0.0935,-0.17937 -0.0628,-0.0275 -0.15545,-0.0598 -0.27989,-0.0966 l 0,0 z m 21.23672,1.04858 c 0.39825,-0.0184 0.65324,-0.009 0.76508,0.0276 0.11234,0.0367 0.30492,0.009 0.57855,-0.0828 -0.12433,-0.0552 -0.34208,-0.0966 -0.65315,-0.12417 -0.31096,-0.0276 -0.54118,0.0322 -0.69048,0.17936 l 0,0 z m -18.139,0.0828 c -0.19902,-0.14715 -0.41048,-0.29893 -0.63436,-0.45531 -0.22415,-0.15635 -0.43546,-0.24372 -0.63462,-0.26212 0.19916,0.11032 0.36089,0.25293 0.48532,0.42769 0.1243,0.17478 0.38561,0.27136 0.78366,0.28974 l 0,0 z m -7.46468,-0.0276 c -0.57219,-0.0185 -1.14453,-0.0275 -1.71672,-0.0275 -0.57233,0 -1.08238,0.0185 -1.53028,0.0552 -0.1243,0 -0.27988,0.0138 -0.46647,0.0413 -0.18659,0.0276 -0.34217,-0.0322 -0.46661,-0.17936 0.0749,-0.14717 0.19287,-0.21155 0.3546,-0.19316 0.16173,0.0184 0.30475,0.0276 0.42919,0.0276 0.99535,-0.0736 2.04031,-0.0598 3.13514,0.0414 1.0948,0.10112 2.1026,0.115 3.02325,0.0413 -0.17429,0 -0.26143,-0.0367 -0.26143,-0.11033 0.19914,0.11033 0.4356,0.18397 0.7092,0.22076 0.27373,0.0369 0.57232,0.0599 0.89578,0.0689 0.32347,0.009 0.64693,0.009 0.97038,0 0.32346,-0.009 0.63448,-0.0138 0.93308,-0.0138 -0.1243,-0.29435 -0.37946,-0.4507 -0.76507,-0.46911 -0.38574,-0.0185 -0.81492,-0.0369 -1.28755,-0.0552 -1.36868,-0.0367 -2.74967,-0.0828 -4.14306,-0.13797 -1.39329,-0.0552 -2.7494,-0.0552 -4.06809,0 0.0494,0.20237 0.0628,0.36332 0.0374,0.4829 -0.0254,0.11959 -0.0134,0.25294 0.0374,0.40012 0.89579,0 1.81016,0.0229 2.74323,0.0689 0.93322,0.046 1.87232,0.0966 2.81798,0.15178 0.94551,0.0552 1.89087,0.0966 2.83652,0.12416 0.94551,0.0275 1.87861,0.0138 2.79925,-0.0413 -0.29858,-0.20235 -0.74034,-0.29435 -1.3251,-0.27596 -0.58464,0.0185 -1.17554,0.0185 -1.77273,0 0.1243,0.0367 0.24874,0.0689 0.37316,0.0966 0.12431,0.0276 0.24875,0.069 0.37332,0.12418 -0.69677,-0.20236 -1.41826,-0.31734 -2.16488,-0.34493 -0.74638,-0.0276 -1.58001,-0.0598 -2.50067,-0.0966 l 0,0 z m 27.17129,0.27595 c 0.0751,0.0552 0.10025,0.11032 0.0751,0.16556 -0.0254,0.0552 -0.0136,0.13798 0.0371,0.24835 1.19424,0.0367 2.30149,0.0644 3.32177,0.0828 1.02007,0.0184 2.08998,0.046 3.20981,0.0828 0.0497,-0.0552 0.16158,-0.11959 0.33593,-0.19319 0.17396,-0.0736 0.19883,-0.12876 0.0751,-0.16556 -1.04513,-0.0921 -2.22084,-0.16556 -3.52711,-0.22075 -1.30639,-0.0552 -2.48189,-0.0552 -3.52704,0 l 0,0 z m -2.46326,0.33112 c 0.27362,0.0185 0.55348,0.0276 0.83978,0.0276 0.2861,0 0.55348,0.009 0.80243,0.0276 0.0989,-0.0552 0.1176,-0.10111 0.0565,-0.13798 -0.0614,-0.0367 -0.0682,-0.0552 -0.0185,-0.0552 0.12432,0.0368 0.20516,0.0873 0.24271,0.15177 0.0371,0.0644 0.11759,0.0783 0.24241,0.0413 0.099,-0.0552 0.14939,-0.13797 0.14939,-0.24834 0,-0.11036 -0.037,-0.19316 -0.11234,-0.24834 -0.19901,0.0185 -0.41676,0.0275 -0.65303,0.0275 -0.23647,0 -0.4666,0.005 -0.69049,0.0138 -0.22409,0.009 -0.41677,0.0414 -0.57864,0.0966 -0.16177,0.0552 -0.25489,0.15638 -0.27977,0.30354 l 0,0 z m 10.00253,0.85543 c 0.0751,-0.0921 0.17416,-0.16557 0.29869,-0.22075 0.12432,-0.0552 0.16157,-0.11034 0.11223,-0.16557 -0.0751,0.0369 -0.17416,0.0873 -0.29859,0.15178 -0.12422,0.0644 -0.16187,0.14257 -0.11223,0.23454 l 0,0 z m -10.30121,-0.57948 c 0.32355,0 0.74031,0.046 1.2504,0.13796 0.50999,0.0921 0.96411,0.0644 1.36225,-0.0828 -0.099,-0.0552 -0.26748,-0.092 -0.50395,-0.11032 -0.23646,-0.0185 -0.49126,-0.0276 -0.76507,-0.0276 -0.27373,0 -0.53506,0.009 -0.78371,0.0276 -0.24895,0.0184 -0.4355,0.0367 -0.55992,0.0551 l 0,0 z m 2.7245,0.16556 c 0.87108,0.12878 1.77911,0.22536 2.72479,0.28974 0.94538,0.0644 1.77891,0.0873 2.50051,0.0688 0.0751,0 0.16178,0.0138 0.26133,0.0413 0.0989,0.0276 0.17416,0.0413 0.22399,0.0413 0.099,-0.0367 0.1803,-0.0966 0.24261,-0.17936 0.0614,-0.0828 0.13096,-0.14257 0.20516,-0.17936 -0.9952,-0.0736 -1.96574,-0.12417 -2.91113,-0.15177 -0.94558,-0.0276 -1.97814,-0.0598 -3.09777,-0.0966 -2e-4,0.0552 -0.0497,0.11034 -0.14949,0.16556 l 0,0 z m -1.56742,0.16555 c -0.27371,-0.0185 -0.53504,-0.0138 -0.78381,0.0138 -0.24885,0.0276 -0.51008,0.0322 -0.78379,0.0138 -0.0254,0.0552 -0.0819,0.10577 -0.16803,0.15176 -0.0868,0.046 -0.13095,0.0966 -0.13095,0.15176 0.6469,0.0184 1.22544,0.046 1.73563,0.0828 0.50989,0.0367 1.02631,0.0644 1.54878,0.0828 0,-0.11033 -0.0439,-0.20236 -0.13096,-0.27594 -0.0868,-0.0736 -0.20526,-0.12417 -0.35455,-0.15179 -0.14939,-0.0276 -0.31107,-0.046 -0.48522,-0.0552 -0.17416,-0.009 -0.32345,-0.0138 -0.44788,-0.0138 l 0,0 z m -2.91123,0.30357 c 0.12423,-0.0552 0.23637,-0.0552 0.33583,0 0.099,0.0552 0.21161,0.0644 0.33603,0.0275 0.0497,-0.0552 0.1056,-0.10578 0.16791,-0.15175 0.0614,-0.046 0.10562,-0.0966 0.13097,-0.15178 -0.37329,0 -0.69673,0.092 -0.97054,0.27595 l 0,0 z m 5.63573,-0.0276 c -0.0989,0 -0.21774,-0.0185 -0.35446,-0.0552 -0.13681,-0.0367 -0.26143,-0.0598 -0.37328,-0.0689 -0.11233,-0.009 -0.19921,0.005 -0.26133,0.0414 -0.0624,0.0369 -0.0819,0.1196 -0.0565,0.24836 0.29859,0.0369 0.6468,0.0643 1.04494,0.0828 0.39824,0.0184 0.79629,0.0276 1.19443,0.0276 0.39815,1e-5 0.77133,-0.009 1.11965,-0.0276 0.34831,-0.0185 0.62202,-0.046 0.82125,-0.0828 -0.34852,-0.0552 -0.8275,-0.0828 -1.43714,-0.0828 -0.60946,1e-5 -1.17571,-0.0276 -1.69819,-0.0828 l 0,0 z m -32.5083,-1.021 c 0.0494,0.25757 0.0868,0.47831 0.11228,0.66228 0.0254,0.18395 0.0628,0.34951 0.11226,0.49668 0.52262,-0.0367 1.0761,-0.046 1.66087,-0.0276 0.58476,0.0184 1.07623,0.0276 1.47442,0.0276 0.0749,-0.16556 0.0815,-0.28514 0.0186,-0.35871 -0.0615,-0.0736 -0.16186,-0.11959 -0.2986,-0.13797 -0.13674,-0.0184 -0.28603,-0.0276 -0.44776,-0.0276 -0.16186,0 -0.30487,0 -0.42932,0 -0.19901,0 -0.39816,-0.0138 -0.59718,-0.0413 -0.19903,-0.0276 -0.39805,-0.0507 -0.5972,-0.0689 -0.0989,1e-5 -0.20531,1e-5 -0.31718,0 -0.11227,1e-5 -0.21773,-0.009 -0.31717,-0.0276 -0.10024,-0.0185 -0.17429,-0.0507 -0.22402,-0.0966 -0.0494,-0.046 -0.0494,-0.11501 0,-0.20697 0.72163,0.0367 1.31255,0.0828 1.77287,0.13798 0.4602,0.0552 0.95166,0.046 1.47427,-0.0276 0.17403,0.0367 0.39189,0.0736 0.65307,0.11033 0.26131,0.0369 0.53504,0.0644 0.82108,0.0828 0.28616,0.0185 0.55362,0.0138 0.80263,-0.0138 0.24874,-0.0275 0.44775,-0.0966 0.59706,-0.20693 -0.97051,-0.0921 -1.92845,-0.15177 -2.87384,-0.17938 -0.94564,-0.0275 -2.07775,-0.0599 -3.39644,-0.0966 l 0,0 z m 9.2934,0.35872 c -0.47262,-0.0184 -0.94552,-0.0644 -1.41828,-0.13796 -0.47262,-0.0736 -0.87079,-0.0185 -1.19438,0.16557 0.32359,0.092 0.83364,0.13798 1.53041,0.13795 0.6965,3e-5 1.40571,-0.046 2.12734,-0.13795 -0.19915,-0.0551 -0.39204,-0.0689 -0.57861,-0.0413 -0.18659,0.0276 -0.34204,0.0323 -0.46648,0.0138 l 0,0 z m 1.82888,0.0552 c 0.0494,0 0.13098,0.005 0.24272,0.0138 0.11227,0.009 0.20517,0.0138 0.27975,0.0138 0,-0.0919 -0.0868,-0.11956 -0.26117,-0.0828 -0.0989,0.0184 -0.18659,0.0367 -0.2613,0.0552 l 0,0 z m 26.9845,0.93821 c 0.12433,0.0185 0.20516,0 0.24261,-0.0551 0.037,-0.0552 0.0936,-0.12876 0.16802,-0.22075 -0.0751,0.0552 -0.16187,0.0921 -0.26133,0.11034 -0.10025,0.0185 -0.14939,0.0737 -0.1493,0.16556 l 0,0 z m -2.50061,0.71746 c 0.0751,-0.0735 0.17416,-0.14258 0.29858,-0.20697 0.12434,-0.0644 0.255,-0.12418 0.39191,-0.17936 0.13691,-0.0552 0.25499,-0.11034 0.35455,-0.16556 0.099,-0.0552 0.14919,-0.11958 0.14929,-0.19316 -0.19892,0.14718 -0.44796,0.27133 -0.74645,0.37252 -0.29859,0.10113 -0.44798,0.22535 -0.44788,0.37253 l 0,0 z m -23.99872,-1.35213 c -0.39817,-0.0185 -0.83977,-0.0138 -1.32497,0.0138 -0.48518,0.0275 -0.96409,0.0322 -1.43698,0.0138 -0.39817,0.0369 -0.80236,0.0322 -1.21283,-0.0138 -0.41074,-0.046 -0.82749,0.005 -1.2504,0.15175 1.04497,0.0736 2.18334,0.15638 3.41503,0.24836 1.23168,0.092 2.44465,0.13796 3.63903,0.13796 -0.34831,-0.0736 -0.65935,-0.17015 -0.93308,-0.28973 -0.27374,-0.11958 -0.57234,-0.20695 -0.8958,-0.26215 l 0,0 z m -7.05404,0.11033 c 0.0989,0 0.19914,0 0.29858,0 0.0989,0 0.19903,-0.009 0.29861,-0.0276 0.0989,-0.0185 0.19902,-0.0367 0.29847,-0.0552 -0.39805,-0.0367 -0.69652,-0.009 -0.89566,0.0828 l 0,0 z m 26.90994,0.63466 c 0.0497,0.14719 0.0371,0.26675 -0.0371,0.35874 -0.0751,0.0921 -0.0751,0.16556 0,0.22075 0.29849,0 0.65918,0.0138 1.08229,0.0413 0.42301,0.0275 0.83978,0.0322 1.25031,0.0138 0.41052,-0.0185 0.78994,-0.0736 1.13826,-0.16557 0.34851,-0.092 0.59726,-0.23915 0.74665,-0.4415 -0.37347,0.0369 -0.70306,0.0598 -0.98917,0.0689 -0.28609,0.009 -0.57854,0.009 -0.87712,0 -0.29858,-0.009 -0.62836,-0.0229 -0.98897,-0.0413 -0.3609,-0.0185 -0.80243,-0.0367 -1.325,-0.0552 l 0,0 z m -7.09147,0.30354 c -0.19902,0.0921 -0.41047,0.12878 -0.63436,0.11036 -0.224,-0.0185 -0.36087,-0.009 -0.41073,0.0276 0.19916,0.0185 0.39203,0.0413 0.57861,0.069 0.1866,0.0276 0.37947,0.0506 0.5785,0.0689 0.27372,-0.0367 0.59705,-0.0599 0.97035,-0.0689 0.37338,-0.009 0.62223,-0.0414 0.74655,-0.0966 0.19893,0.0184 0.39815,-0.0552 0.59717,-0.22076 0.19902,-0.16555 0.27372,-0.27594 0.22389,-0.33112 -0.32344,-0.0736 -0.59727,-0.0736 -0.82106,0 -0.22408,0.0736 -0.42934,0.16095 -0.61598,0.26213 -0.18654,0.10122 -0.37315,0.18396 -0.55974,0.24834 -0.18658,0.0644 -0.40446,0.0414 -0.6532,-0.0688 l 0,0 z m 3.28459,-0.41391 c -0.12433,0.0921 -0.27372,0.17016 -0.44807,0.23455 -0.17396,0.0644 -0.29849,0.17018 -0.37318,0.31733 0.47264,0.0185 1.11359,0.0367 1.92216,0.0552 0.80868,0.0185 1.61121,0.0369 2.4073,0.0552 0.0497,-0.092 0.0819,-0.17018 0.0936,-0.23457 0.0136,-0.0644 0.0302,-0.14255 0.0566,-0.23455 -0.5722,-0.0736 -1.16332,-0.11957 -1.77277,-0.13796 -0.60964,-0.0185 -1.23782,-0.0367 -1.88472,-0.0552 l 0,0 z m -20.41583,0.30353 c 0.1243,0.0552 0.27988,0.0736 0.46661,0.0552 0.18658,-0.0184 0.37947,-0.0276 0.57848,-0.0276 0.62192,0.0369 1.29384,0.0689 2.01533,0.0966 0.72163,0.0276 1.43712,0.0552 2.14606,0.0828 0.70933,0.0276 1.39353,0.0598 2.05288,0.0966 0.65935,0.0369 1.25026,0.0828 1.77287,0.13796 -0.59719,-0.25754 -1.21939,-0.41391 -1.8663,-0.46909 -0.64678,-0.0552 -1.33112,-0.092 -2.05262,-0.11033 -0.99523,-0.0367 -2.01546,-0.10113 -3.06055,-0.19316 -1.04496,-0.092 -2.06518,-0.15637 -3.06042,-0.19317 0.19902,0.0184 0.36689,0.0966 0.5039,0.23456 0.13674,0.13799 0.30475,0.23456 0.50376,0.28973 l 0,0 z m 15.3025,0.4415 c 0.0494,0.0369 0.11228,0.0323 0.1866,-0.0138 0.0749,-0.046 0.13686,-0.0413 0.18658,0.0138 0,-0.092 -0.0628,-0.13794 -0.18658,-0.13796 -0.12431,2e-5 -0.18674,0.046 -0.1866,0.13796 l 0,0 z m 4.44137,0.19317 c 0.4231,0.0736 0.83354,0.10123 1.23169,0.0828 0.39804,-0.0184 0.85839,-0.0184 1.38096,0 0.0497,0.0552 0.16178,0.1058 0.33593,0.15178 0.17416,0.046 0.35456,0.0737 0.5412,0.0828 0.18654,0.009 0.35455,0 0.50374,-0.0276 0.1493,-0.0276 0.23647,-0.0873 0.26134,-0.17936 -0.69682,-0.11035 -1.44943,-0.17937 -2.2581,-0.20697 -0.80867,-0.0276 -1.47428,0.005 -1.99676,0.0966 l 0,0 z m 4.40415,0.33113 c 0.19903,-0.0185 0.41677,-0.0185 0.65305,0 0.23646,0.0185 0.46659,0.0323 0.69067,0.0413 0.2237,0.009 0.41658,-0.005 0.57835,-0.0413 0.16178,-0.0367 0.26757,-0.11033 0.31731,-0.22074 -0.32356,-0.0185 -0.67196,-0.0323 -1.04515,-0.0413 -0.37317,-0.009 -0.75874,-0.0138 -1.15678,-0.0138 -0.10024,0.0369 -0.13106,0.0828 -0.0936,0.13798 0.037,0.0552 0.0565,0.10123 0.0565,0.13796 l 0,0 z m -31.05277,-0.88301 c 0.44789,-0.0368 0.90822,-0.009 1.38097,0.0828 0.47276,0.0919 0.88336,0.0919 1.23155,0 -0.34819,-0.0552 -0.77122,-0.10579 -1.26884,-0.15178 -0.49775,-0.046 -0.94551,-0.0229 -1.34368,0.0689 l 0,0 z m 7.65112,0.5243 c 0.1243,0 0.11227,-0.0322 -0.0374,-0.0966 -0.14931,-0.0644 -0.16173,-0.0966 -0.0374,-0.0966 0.27373,0.0185 0.55375,0.0598 0.83978,0.12417 0.28617,0.0644 0.60348,0.10579 0.9518,0.12418 0.97036,-0.0367 1.99674,-0.0367 3.07913,0 1.08224,0.0368 2.02161,-0.009 2.81781,-0.13798 -1.24396,-0.0367 -2.63737,-0.0782 -4.18008,-0.12417 -1.54271,-0.046 -3.06042,-0.11501 -4.5534,-0.20696 0.19902,0.0919 0.36702,0.17017 0.50377,0.23455 0.13701,0.0644 0.34217,0.12418 0.61577,0.17936 l 0,0 z m 15.93712,0.13797 c -0.27376,0 -0.63462,0 -1.08239,0 -0.44803,0 -0.91449,0.005 -1.39968,0.0138 -0.48521,0.009 -0.95795,0.0276 -1.41828,0.0552 -0.46033,0.0275 -0.81492,0.0599 -1.06368,0.0966 0.0749,0.0369 0.18032,0.0599 0.31732,0.0688 0.13673,0.009 0.20517,0.0598 0.20517,0.15178 -0.64692,-0.14717 -1.37469,-0.22996 -2.18334,-0.24835 -0.80865,-0.0184 -1.62357,-0.009 -2.44464,0.0276 -0.82122,0.0369 -1.62359,0.0783 -2.40749,0.12418 -0.78365,0.046 -1.48657,0.0598 -2.10863,0.0413 1.06982,0.0736 2.13977,0.11957 3.20985,0.13798 1.06981,0.0184 2.15219,0.0276 3.24701,0.0276 1.09481,0 2.20206,0 3.32186,0 1.11953,0 2.2642,0.0276 3.4336,0.0828 0.19902,-0.0921 0.4106,-0.15175 0.63449,-0.17936 0.22401,-0.0276 0.39804,-0.11501 0.52247,-0.26215 -0.0494,0.0369 -0.16172,0.0229 -0.33589,-0.0413 -0.17416,-0.0644 -0.32346,-0.0966 -0.44775,-0.0966 l 0,0 z m 7.31524,0.57947 0,-0.0828 c -0.92071,-0.16554 -1.92217,-0.24833 -3.00445,-0.24833 -1.08249,0 -2.08384,-0.0369 -3.00454,-0.11034 -0.0495,0.0921 -0.15545,0.15638 -0.31731,0.19317 -0.16173,0.0369 -0.26745,0.10112 -0.31718,0.19315 0.59707,0.0184 1.20053,0.0367 1.81018,0.0552 0.60946,0.0184 1.20681,0.0367 1.79159,0.0551 0.58459,0.0185 1.13827,0.0229 1.66074,0.0138 0.52247,-0.009 0.98283,-0.0322 1.38097,-0.0688 l 0,0 z m -26.38738,-0.9106 c 0.12432,0 0.21146,0.0185 0.26119,0.0552 0.0494,0.0367 0.13699,0.0643 0.2613,0.0828 0.0254,-0.0921 -0.0495,-0.16097 -0.22388,-0.20696 -0.17416,-0.046 -0.27373,-0.0229 -0.29861,0.0689 l 0,0 z m 27.84295,0.77264 c -0.19903,-0.0184 -0.39805,-0.0276 -0.59707,-0.0276 -0.19922,0 -0.39824,0 -0.59716,0 0.0254,0.12879 0.0799,0.20698 0.16781,0.23459 0.0868,0.0275 0.19288,0.0367 0.31731,0.0275 0.12432,-0.009 0.24875,-0.0413 0.37318,-0.0966 0.12433,-0.0552 0.23647,-0.10124 0.33593,-0.13797 l 0,0 z m -32.39647,-0.80024 0,0.27595 c 0.19915,-0.0185 0.41688,-0.0185 0.65319,0 0.23644,0.0185 0.46661,0.0367 0.69049,0.0551 0.22402,0.0184 0.43546,0.0184 0.63462,0 0.19902,-0.0185 0.36074,-0.0736 0.48506,-0.16556 -0.44778,-0.0185 -0.86452,-0.0598 -1.25027,-0.12417 -0.38561,-0.0644 -0.79006,-0.0783 -1.21309,-0.0413 l 0,0 z m 3.65775,0.57947 c 0,0.0552 0.0494,0.0873 0.14929,0.0966 0.10024,0.009 0.17416,0.0138 0.22402,0.0138 0.0749,-0.0369 0.14301,-0.0644 0.20516,-0.0828 0.0628,-0.0184 0.13099,-0.046 0.20531,-0.0828 -0.12431,0 -0.19274,-0.0505 -0.20531,-0.15176 -0.0134,-0.10124 -0.0815,-0.15178 -0.20516,-0.15178 -0.0494,0.0368 -0.12431,0.0689 -0.22402,0.0966 -0.0989,0.0276 -0.14929,0.11501 -0.14929,0.26215 l 0,0 z m 1.67956,-0.13796 c -0.12429,0.092 -0.11226,0.14257 0.0374,0.15176 0.14917,0.009 0.22387,0.0599 0.22387,0.15178 -0.19914,-0.0552 -0.41073,-0.0783 -0.63462,-0.0689 -0.22386,0.009 -0.41047,0.0873 -0.55977,0.23455 2.56282,0.73585 5.25005,1.09455 8.06174,1.07617 -0.64692,-0.0552 -1.30627,-0.17936 -1.97805,-0.37252 -0.6719,-0.19317 -1.2691,-0.39092 -1.79159,-0.59327 -0.27372,0 -0.49133,-0.005 -0.65305,-0.0138 -0.16187,-0.009 -0.37947,-0.0138 -0.65319,-0.0138 -0.17417,-0.14719 -0.4729,-0.27594 -0.8958,-0.38633 -0.42305,-0.11033 -0.80864,-0.16555 -1.15697,-0.16555 l 0,0 z m -5.22517,0.16556 c 0.0254,0.0552 0.11761,0.0966 0.27988,0.12418 0.16173,0.0276 0.33575,0.0413 0.52261,0.0413 0.1866,0 0.37932,-0.009 0.57849,-0.0275 0.19887,-0.0185 0.34831,-0.0552 0.44775,-0.11033 -0.47274,0.0368 -0.80865,0.0413 -1.00766,0.0138 -0.19916,-0.0275 -0.47288,-0.0413 -0.82107,-0.0413 l 0,0 z m 2.2019,0.71745 c 0.12432,0.0552 0.20545,0.10112 0.24274,0.13798 0.0374,0.0368 0.11763,0.0552 0.24259,0.0552 0.14929,-0.12878 0.3109,-0.24834 0.48518,-0.35876 0.17404,-0.11032 0.32346,-0.23912 0.44778,-0.38631 -0.12432,-0.0736 -0.24875,-0.0966 -0.3732,-0.0688 -0.12429,0.0276 -0.24886,0.0736 -0.37316,0.13797 -0.1243,0.0644 -0.24259,0.14257 -0.35461,0.23455 -0.11227,0.0921 -0.2176,0.17477 -0.31732,0.24835 l 0,0 z m 24.55864,0.0828 c 0,0.0551 0,0.13796 0,0.24836 0,0.11034 0.0253,0.19316 0.0751,0.24835 l 0.14929,0.0275 c 0.6469,-0.18396 1.35611,-0.35871 2.12744,-0.5243 -0.47274,-0.0185 -0.85217,-0.0185 -1.13826,0 -0.28611,0.0185 -0.69059,0.0185 -1.21307,0 l 0,0 z m -11.90607,-0.13795 c 1.56756,0.11033 3.17242,0.19775 4.8147,0.26213 1.64229,0.0644 3.22228,0.0689 4.74,0.0138 0.1243,0 0.29846,-0.005 0.52263,-0.0138 0.22388,-0.009 0.39804,-0.0599 0.52246,-0.15175 -0.8212,-0.0185 -1.6733,-0.046 -2.55665,-0.0828 -0.88323,-0.0367 -1.77902,-0.0689 -2.68725,-0.0966 -0.90821,-0.0276 -1.8163,-0.0413 -2.72453,-0.0413 -0.90822,0 -1.78529,0.0367 -2.63136,0.11035 l 0,0 z m -14.89177,-0.27593 c -0.0494,0.0919 -0.0441,0.15174 0.0186,0.17934 0.0615,0.0276 0.0561,0.0598 -0.0186,0.0966 0.24874,2e-5 0.5162,0.009 0.80237,0.0276 0.28617,0.0185 0.45417,-0.0736 0.50389,-0.27594 -0.27373,0.0367 -0.52875,0.0276 -0.76519,-0.0276 -0.23632,-0.0552 -0.41676,-0.0552 -0.54107,0 l 0,0 z m 26.64855,0.71743 c -0.79628,0.0921 -1.55513,0.11957 -2.27679,0.0828 -0.7215,-0.0368 -1.45556,-0.0368 -2.20193,0 0.14929,-0.0552 0.22388,-0.0276 0.22388,0.0828 0,0.11033 0.0615,0.14717 0.1866,0.11033 0.64691,0.0552 1.20067,0.0599 1.66099,0.0138 0.46032,-0.046 0.95168,-0.0873 1.47415,-0.12418 0.0497,0 0.0751,0.0322 0.0751,0.0966 0,0.0643 0.0624,0.1058 0.18673,0.12418 0.0497,0 0.16168,-0.005 0.33583,-0.0138 0.17417,-0.009 0.32345,-0.0413 0.44798,-0.0966 0,-0.0368 -0.0254,-0.0689 -0.0751,-0.0966 -0.0497,-0.0276 -0.0614,-0.0873 -0.0371,-0.17937 l 0,0 z m -9.96534,0.19317 c 0.44804,0.0184 0.85849,0.0413 1.23168,0.0689 0.37319,0.0275 0.73406,0.0413 1.08238,0.0413 0.34845,0 0.6905,-0.0138 1.02638,-0.0413 0.33602,-0.0276 0.70292,-0.0966 1.10109,-0.20696 -0.84593,-0.0185 -1.62985,-0.0413 -2.35134,-0.0689 -0.72151,-0.0276 -1.43698,-0.0552 -2.14606,-0.0828 -0.7092,-0.0275 -1.44326,-0.0599 -2.20205,-0.0966 -0.75892,-0.0367 -1.59871,-0.0828 -2.51923,-0.13797 0.6965,0.18395 1.45556,0.31275 2.2765,0.38632 0.82121,0.0736 1.65472,0.11959 2.50065,0.13797 l 0,0 z m -16.5712,-0.44151 c 0,0.0552 -0.0187,0.12417 -0.0561,0.20694 -0.0374,0.0828 -0.0187,0.14256 0.0561,0.17938 0.0495,-0.092 0.13673,-0.16557 0.26118,-0.22076 0.12429,-0.0552 0.24873,-0.11035 0.37316,-0.16556 -0.1243,-0.0369 -0.23015,-0.046 -0.3173,-0.0276 -0.0869,0.0185 -0.19287,0.0276 -0.31704,0.0276 l 0,0 z m 1.94062,0.0552 c -0.14917,0.16557 -0.32961,0.31734 -0.5412,0.45531 -0.21132,0.13798 -0.41675,0.26676 -0.61576,0.38633 -0.19917,0.11958 -0.38575,0.24834 -0.55978,0.38631 -0.1743,0.13797 -0.27374,0.28974 -0.29859,0.45532 0.9455,-0.44151 1.75415,-0.96581 2.42592,-1.57289 -0.0749,0 -0.14301,-0.0184 -0.20517,-0.0551 -0.0628,-0.0369 -0.13098,-0.0552 -0.20542,-0.0552 l 0,0 z m 17.13124,0.85543 c 0.89578,0.092 1.75428,0.13335 2.57535,0.12418 0.82109,-0.009 1.56758,-0.0966 2.23935,-0.26215 -0.44775,0.0367 -0.8708,0.0552 -1.26897,0.0552 -0.39817,0 -0.78378,-0.005 -1.15696,-0.0138 -0.37319,-0.009 -0.75265,-0.009 -1.13839,0 -0.3856,0.009 -0.80236,0.0413 -1.25038,0.0966 l 0,0 z m -1.97805,-0.13797 c -0.27374,-0.11045 -0.5349,-0.14718 -0.78378,-0.11045 -0.24874,0.0369 -0.51018,0.0185 -0.78366,-0.0552 0.27348,0.11034 0.53492,0.17477 0.78366,0.19316 0.24888,0.0185 0.51004,0.009 0.78378,-0.0276 l 0,0 z m -18.21363,0.93819 c 0.0989,-0.0185 0.1616,-0.0689 0.18661,-0.15175 0.0254,-0.0828 0.0307,-0.17938 0.0187,-0.28974 -0.0134,-0.11034 -0.0307,-0.22077 -0.0561,-0.33114 -0.0254,-0.11034 -0.0495,-0.20237 -0.0749,-0.27595 -0.0254,0.20237 -0.0254,0.37713 0,0.52431 0.0241,0.14716 0,0.32192 -0.0749,0.52427 l 0,0 z m 0.22389,0.77265 c 0.12432,-0.0919 0.16801,-0.18396 0.131,-0.27595 -0.0374,-0.0921 -0.11764,-0.15638 -0.2426,-0.19315 -0.0494,0.23916 -0.0134,0.39551 0.11227,0.4691 l 0,0 z m 36.61395,-26.048987 0,0.30354 c -0.0751,4e-5 -0.11224,-0.0505 -0.11224,-0.15176 0,-0.10112 0.0371,-0.15176 0.11224,-0.15178 l 0,0 z m 7.27794,6.181127 c 0.0497,1e-5 0.0614,0.0322 0.0371,0.0966 -0.0254,0.0644 -0.0136,0.0966 0.037,0.0966 0,0.0369 0,0.10123 0,0.19315 0,0.092 0,0.17937 0,0.26215 0,0.0828 0,0.12879 0,0.13797 0,0.009 0,-0.0597 0,-0.20697 l 0,-0.0828 c -0.0497,-0.0919 -0.0799,-0.17473 -0.0936,-0.24835 -0.0136,-0.0736 0,-0.15634 0.0185,-0.24833 l 0,0 z m -21.68462,4.55305 c -0.10024,0.0184 -0.2116,1e-5 -0.33589,-0.0552 -0.12432,-0.0552 -0.2426,-0.11035 -0.35461,-0.16556 -0.11228,-0.0552 -0.2176,-0.10114 -0.31731,-0.13798 -0.0989,-0.0368 -0.18659,-0.0368 -0.26117,0 -0.0749,10e-6 -0.0868,-0.0139 -0.0374,-0.0414 0.0494,-0.0275 0.0989,-0.0415 0.14914,-0.0415 -0.39803,-0.20234 -0.84592,-0.35871 -1.34353,-0.46909 -0.49763,-0.11034 -0.9081,-0.29432 -1.2317,-0.55189 0.64692,0.1472 1.26898,0.36333 1.86632,0.64846 0.59705,0.28517 1.2191,0.49211 1.86601,0.62088 -0.1243,-0.0184 -0.17428,-0.005 -0.14929,0.0414 0.0254,0.0459 0.0749,0.0966 0.14929,0.15178 l 0,0 z m -24.11072,-1.62807 c 0.0749,-0.0552 0.14943,-0.0873 0.22401,-0.0966 0.0749,-0.009 0.17415,-0.0138 0.2986,-0.0138 -0.0494,0.092 -0.0561,0.115 -0.0186,0.0689 0.0374,-0.0459 0.0935,-0.0689 0.168,-0.0689 -0.0749,0.092 -0.15558,0.1196 -0.24272,0.0828 -0.0869,-0.0368 -0.23017,-0.0275 -0.42919,0.0276 l 0,0 z"
+       id="text6103-2-3-8" />
+    <path
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       style="font-size:27.28304291px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#916f6f;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:JaneAusten;-inkscape-font-specification:JaneAusten"
+       d="m -583.67757,51.580376 c 0.27768,0.152195 0.62518,0.243255 1.04267,0.272946 0.41737,0.02992 0.46546,-0.07537 0.14504,-0.315268 -0.32097,-0.240123 -0.6538,-0.425818 -0.99835,-0.556911 -0.34478,-0.130823 -0.53176,-0.102125 -0.56138,0.08717 -0.0297,0.189201 0.0945,0.359998 0.37259,0.512205 l 0,0 -5.7e-4,-1.41e-4 z m -4.59049,2.586682 c -0.74244,-0.381533 -0.82298,-0.807433 -0.24155,-1.278215 0.58133,-0.470805 0.88612,-1.067607 0.91427,-1.790454 0.0273,-0.72287 0.32164,-1.133019 0.88213,-1.230261 0.56002,-0.09733 0.94788,-0.969571 1.163,-2.6167 0.21547,-1.647159 0.3392,-2.760519 0.37111,-3.339942 0.0319,-0.579422 0.0844,-1.16054 0.15723,-1.743155 0.0729,-0.582514 0.19006,-0.967736 0.35095,-1.155574 0.16112,-0.18774 0.32405,-0.316616 0.48983,-0.386242 0.21934,-0.08512 0.46944,-0.124576 0.74962,-0.118602 0.2803,0.0055 0.54078,0.07182 0.78108,0.197027 0.39469,0.216335 0.69105,0.452598 0.88942,0.709042 0.19838,0.256356 0.28679,0.693159 0.26549,1.310608 -0.0216,0.617393 -0.22139,1.601987 -0.60116,2.95357 -0.37953,1.351893 -0.78733,2.315781 -1.22361,2.891772 -0.4364,0.575934 -0.51161,0.948937 -0.22527,1.118718 0.28645,0.169768 0.6325,0.349832 1.03858,0.540201 0.40552,0.190334 0.74051,0.396303 1.00427,0.618022 0.26379,0.221755 0.64901,0.169594 1.15528,-0.156273 0.50589,-0.32596 0.91665,-0.745994 1.23135,-1.260279 0.31413,-0.514494 0.94822,-0.568209 1.90055,-0.161718 -0.2035,0.453349 -0.40097,0.823243 -0.59375,1.109136 -0.19233,0.286091 -0.42843,0.551407 -0.70781,0.796262 -0.27973,0.244833 -0.55445,0.5017 -0.82437,0.770942 -0.27027,0.26916 -0.63111,0.494934 -1.08255,0.677591 -0.4511,0.182646 -0.93489,0.251271 -1.45048,0.206086 -0.5157,-0.04511 -0.96531,-0.121476 -1.34896,-0.229093 -0.38387,-0.107734 -0.57574,-0.0236 -0.57586,0.252369 -2.3e-4,0.275972 0.0523,0.911778 0.1594,1.907244 0.10599,0.995407 0.20099,1.875414 0.2844,2.640011 0.0832,0.764503 0.29192,1.745374 0.62566,2.94252 0.33339,1.197063 0.56082,2.124021 0.68182,2.780813 0.12079,0.656699 0.27187,1.09911 0.4536,1.327116 0.18163,0.227889 0.33227,0.249436 0.45178,0.06485 0.11987,-0.184726 0.16659,-0.752772 0.14072,-1.704022 -0.0262,-0.95146 -0.0273,-1.966311 0,-3.044633 0.024,-1.078299 0.0376,-2.074921 0.0433,-2.990018 0,-0.914969 -0.0844,-1.669949 -0.26753,-2.264836 -0.18379,-0.594968 -0.29808,-0.943339 -0.34275,-1.044833 -0.0456,-0.101658 0.0935,-0.134808 0.41476,-0.0999 0.32142,0.03482 0.67043,0.210116 1.04712,0.525805 0.37715,0.315712 0.66359,0.902956 0.8598,1.761476 0.19632,0.858577 0.28006,1.79986 0.25101,2.82386 -0.0285,1.024047 -0.12509,2.309588 -0.28804,3.857068 -0.16328,1.547375 -0.33226,2.587733 -0.50693,3.120959 -0.17443,0.533412 -0.44231,1.066953 -0.80373,1.600727 -0.30742,0.100841 -0.65369,0.161532 -1.03859,0.181606 -0.30422,-0.141071 -0.60104,-0.278087 -0.89045,-0.411014 -0.17433,-0.223998 -0.33761,-0.576588 -0.48927,-1.057558 -0.15165,-0.481181 -0.34422,-1.337749 -0.57767,-2.569809 -0.23371,-1.232189 -0.47936,-2.448462 -0.73744,-3.64909 -0.25797,-1.200487 -0.49154,-2.188603 -0.70028,-2.964125 -0.20874,-0.775568 -0.3294,-1.361679 -0.362,-1.758251 -0.0319,-0.396665 -0.13159,-0.903471 -0.29693,-1.520441 -0.16533,-0.616889 -0.37976,-0.795585 -0.64422,-0.53596 -0.26413,0.259579 -0.90835,0.724775 -1.93269,1.395776 l 0,0 1.2e-4,-1.28e-4 z m 11.43496,-5.632344 c 0.56287,0.103294 1.00758,0.09336 1.33369,-0.02956 0.32609,-0.122855 0.52617,-0.298968 0.59989,-0.528003 0.0741,-0.229256 0.20863,-0.473025 0.40358,-0.732054 0.1953,-0.258855 0.3366,-0.537622 0.42399,-0.83625 0.0878,-0.298661 -0.0729,-0.560071 -0.48221,-0.78443 -0.40951,-0.224337 -0.86641,-0.339879 -1.37151,-0.347283 -0.50488,-0.0067 -0.90949,-0.116626 -1.21394,-0.328408 -0.30433,-0.211802 -0.39948,-0.40517 -0.28576,-0.58032 0.11392,-0.175149 0.44836,-0.386507 1.00371,-0.634086 0.72832,-0.17854 1.42165,-0.151441 2.08035,0.08124 0.65858,0.232826 1.13804,0.505331 1.43873,0.817558 0.3007,0.312526 0.89877,0.457319 1.79458,0.434796 0.89569,-0.0225 1.49002,-0.15553 1.78353,-0.399141 0.29363,-0.243423 0.67134,-0.264302 1.13338,-0.06229 0.37224,0.268236 0.52573,0.458348 0.46124,0.570567 -0.065,0.112198 -0.29295,0.285537 -0.68376,0.520603 -0.39083,0.235053 -1.1049,0.382815 -2.14176,0.443519 -1.03686,0.06062 -1.57776,0.213463 -1.62197,0.45866 -0.0444,0.245261 -0.15951,0.586814 -0.34386,1.024973 -0.18448,0.438122 -0.43516,0.830207 -0.75283,1.175984 -0.31767,0.345731 -0.82117,0.663429 -1.51064,0.953096 -0.87028,0.139132 -1.6828,0.130321 -2.43731,-0.02676 -0.75499,-0.156974 -1.42462,-0.395648 -2.00903,-0.716315 -0.34296,-0.25224 -0.51706,-0.614143 -0.52287,-1.085801 -0.0117,-0.471763 0.049,-0.890983 0.16442,-1.257795 0.11591,-0.366658 0.32438,-0.688527 0.62895,-0.964667 0.30389,-0.276261 0.65061,-0.400781 1.03995,-0.373461 0.38967,0.02738 0.75668,0.106624 1.10158,0.237846 0.34467,0.130771 0.54817,0.268559 0.61084,0.411944 0.0626,0.143372 0.0137,0.277203 -0.15154,0.399352 -0.15997,0.123977 -0.38524,0.292753 -0.67453,0.506361 -0.28976,0.213609 -0.47013,0.515853 -0.54169,0.906641 -0.0717,0.390764 0.17423,0.637898 0.7371,0.741016 l 0,0 0.0117,0.0024 z m 7.20874,-3.134776 c 0.33441,-0.664045 0.41714,-1.494868 0.24839,-2.492386 -0.16874,-0.997538 -0.10026,-1.663044 0.20452,-1.996463 0.30526,-0.333396 0.76935,-0.630957 1.39272,-0.892744 0.25294,-0.09233 0.51707,-0.146567 0.79177,-0.162859 0.2746,-0.01651 0.55228,0.03324 0.83315,0.148561 0.28109,0.115657 0.54111,0.264624 0.78026,0.446988 0.23929,0.182641 0.43447,0.443652 0.5859,0.783342 0.15153,0.339802 0.18732,0.664287 0.10715,0.973778 -0.0798,0.309367 -0.0717,0.557388 0.0228,0.744108 0.0945,0.186619 0.3147,0.317015 0.66074,0.391106 0.34571,0.07393 0.82813,-0.107617 1.44763,-0.544731 0.61949,-0.437092 1.04473,-0.778479 1.27568,-1.024139 0.23108,-0.24566 0.45577,-0.520538 0.67398,-0.824519 l 1.22521,0.440529 c -0.47092,0.678993 -0.90891,1.273322 -1.31398,1.783121 -0.40472,0.509828 -0.96668,0.972179 -1.68462,1.387248 -0.55695,0.233911 -1.00679,0.398157 -1.34975,0.492585 -0.34274,0.09455 -0.74644,0.133166 -1.21086,0.116181 -0.46454,-0.01717 -0.88737,-0.101307 -1.26841,-0.252388 -0.38113,-0.15133 -0.64558,-0.344434 -0.79371,-0.579522 -0.14756,-0.23501 -0.20121,-0.495489 -0.16077,-0.781414 0.041,-0.28586 0.1553,-0.550197 0.34559,-0.792598 0.19039,-0.242447 0.26092,-0.502162 0.21296,-0.778988 -0.049,-0.276926 -0.21957,-0.431538 -0.51285,-0.463947 -0.29329,-0.03235 -0.53303,0.02239 -0.7192,0.16422 -0.18607,0.141978 -0.23085,0.695056 -0.1348,1.659168 0.0969,0.964377 -0.10715,1.764435 -0.60982,2.400225 l -1.04974,-0.344246 -3.4e-4,-2.1e-4 z"
+       id="path6065-6"
+       inkscape:transform-center-y="18.163463"
+       inkscape:transform-center-x="8.6727208" />
+    <text
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       xml:space="preserve"
+       style="font-size:11.43628502px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#666666;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Arial"
+       x="-627.21265"
+       y="274.00897"
+       id="text2852-7-4"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Gill Sans MT;-inkscape-font-specification:Gill Sans MT"
+         sodipodi:role="line"
+         id="tspan2854-33-1"
+         x="-627.21265"
+         y="274.00897">(c) 2009-2010 Obeo - All rights reserved</tspan></text>
+    <g
+       inkscape:export-ydpi="112"
+       inkscape:export-xdpi="112"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       transform="matrix(1.0493829,0,0,1.0493829,218.97161,1202.6086)"
+       id="g4878"
+       style="display:inline;enable-background:new">
+      <path
+         style="fill:#4d7a91;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+         d="m -977.37123,-1094.1509 c 6.9675,-0.4039 14.0429,1.0075 20.3031,4.1001 7.8158,3.832 14.3396,10.2487 18.2587,18.0254 4.6008,8.9498 5.6521,19.6436 2.8825,29.3184 -2.2611,8.1208 -7.1631,15.4741 -13.765,20.7119 -7.0807,5.6591 -16.1187,8.9201 -25.2053,8.7705 -10.4167,0.1906 -20.7657,-4.087 -28.20727,-11.3394 -7.8268,-7.5097 -12.5081,-18.2996 -12.2967,-29.1762 -0.1423,-7.851 2.3085,-15.6649 6.6021,-22.2114 4.5857,-6.9812 11.38087,-12.4838 19.17017,-15.5022 3.9127,-1.5357 8.0693,-2.4012 12.2577,-2.6971 z"
+         id="path4880-1" />
+      <path
+         id="path4882-52"
+         d="m -976.92283,-1091.766 c 5.6991,-0.2779 11.4864,0.693 16.6069,2.8204 6.393,2.6362 11.7291,7.0503 14.9348,12.4 3.7632,6.1566 4.6231,13.513 2.3578,20.1684 -1.8495,5.5864 -5.8592,10.6449 -11.2592,14.2481 -5.7916,3.8929 -13.1843,6.1362 -20.6167,6.0333 -8.5203,0.1311 -16.9853,-2.8115 -23.0722,-7.8006 -6.40187,-5.166 -10.23087,-12.5885 -10.05797,-20.0706 -0.1165,-5.4008 1.8882,-10.7761 5.4002,-15.2795 3.75077,-4.8025 9.30897,-8.5878 15.68017,-10.6642 3.2005,-1.0564 6.6004,-1.6518 10.0262,-1.8553 z"
+         style="fill:url(#linearGradient4946);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline" />
+      <path
+         style="fill:none;stroke:#ffffff;stroke-width:2.34782672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m -997.06743,-1043.8694 -7.15257,0 0,-12.1642 14.30517,0 0,6.4343"
+         id="path4884-7"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;stroke:#ffffff;stroke-width:3.52174067;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m -971.66433,-1038.4789 0,10.6107 -21.3028,0 0,-17.4648 10.6514,0"
+         id="path4886-6"
+         sodipodi:nodetypes="ccccc" />
+      <g
+         id="g4888"
+         transform="matrix(6.0546137,0,0,5.6461601,1927.4994,551.1239)"
+         style="fill:#ffffff;display:inline">
+        <path
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:'karabinE.';-inkscape-font-specification:'karabinE. Bold'"
+           d="m -480.34375,-287.96875 c 0.38662,1.96967 -0.84356,4.23211 0.46785,5.9884 1.80858,0.69378 0.16874,-3.60203 0.64696,-4.9532 -0.282,-0.42995 -1.25156,-0.36251 -1.11481,-1.0352 z M -480,-287.4375 c -0.24713,0.19171 0.26515,0.0689 0,0 z m 0.15625,0.21875 c 0.30663,-0.008 0.0562,0.34955 0,0 z m 0.21875,0 c 0,0 0,0 0,0 z m 0.0625,0.0312 c 0.19441,-0.13451 -0.0302,0.20678 0,0 z m -0.25,0.125 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m -0.375,0.0937 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.15625,0 c 0.82674,-0.19273 0.2728,0.37056 0,0 z m 0.9375,0.25 c -0.2658,0.18994 0.24878,0.10677 0,0 z m -0.28125,0.0312 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.90625,0.0312 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0.21875,0 c 0.19374,-0.18117 3.5e-4,0.2505 0,0 z m 0.125,0 c 0.81449,0.0315 0.0766,0.51134 0,0 z m 0.3125,0 c 0.20428,-0.24129 0.0659,0.27149 0,0 z m 0.25,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.78125,0.0625 c 0,0 0,0 0,0 z m 0.875,0 c 0,0 0,0 0,0 z m -1.03125,0.0625 c 0.17928,-0.21301 0.13001,0.18326 0,0 z m 0.21875,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.0937,0 c 0.22501,0.17567 0.28945,0.22598 0,0 z m -0.25,0.0625 c 0.10943,0.11976 -0.17763,0.0142 0,0 z m -0.0625,0.0937 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m 0.3125,0 c 0.41966,-0.1695 0.0962,0.38479 0,0 z m -0.21875,0.0312 c 0.11976,-0.10943 0.0142,0.17763 0,0 z m 0.9375,0.0937 c 0.23277,0.0183 -0.19032,0.19973 0,0 z m -0.9375,0.0312 c 0.21338,-0.005 -0.1156,0.20911 0,0 z m 0.5,0.0625 c 0.15892,0.008 -0.12205,0.13365 0,0 z m -0.5625,0.0937 c 0,0 0,0 0,0 z m 0,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.0937,0 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0.0937,0 c 0.19803,-0.0453 -0.0803,0.17261 0,0 z m 0.15625,0 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.1875,0 c 0.15575,-0.25431 0.12198,0.20428 0,0 z m 0.15625,0 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.21875,0 c 0.17763,0.0142 -0.10943,0.11976 0,0 z m -0.5625,0.0625 c 0.38235,0.69481 -0.61087,0.14165 0,0 z m 0.0625,0 c 0.40532,-0.21731 0.24471,0.25416 0,0 z m 0.78125,0 c -0.12205,0.13365 0.15892,0.008 0,0 z m -0.21875,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.625,0.0937 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.25,0 c 0.29722,0.1997 -0.64168,0.29387 0,0 z m 0.3125,0 c 0.20774,-0.23681 0.0537,0.28589 0,0 z m 0.21875,0 c 0.17763,0.0142 -0.10943,0.11976 0,0 z m -0.4375,0.0625 c 0,0 0,0 0,0 z m 0.28125,0.0312 c 0.19105,-0.18089 0.0111,0.24359 0,0 z m -0.28125,0.0312 c 0.18932,-0.0804 -0.0778,0.18741 0,0 z m -0.65625,0.0312 c 0.14276,0.0213 -0.1175,0.1465 0,0 z m 0.15625,0.0937 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.15625,0 c 0.23632,-0.19311 0.087,0.25741 0,0 z m -0.3125,0.0625 c 0.91709,-0.004 0.60845,0.34595 0,0 z m 0.65625,0 c 0.10184,-0.10253 0.033,0.1331 0,0 z m 0.21875,0.0937 c 0.26005,-0.0182 -0.1595,0.23212 0,0 z m -0.625,0.125 c 0.27681,0.0928 0.33346,0.11176 0,0 z m -0.15625,0.0312 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.46875,0 c 0.56676,-0.51183 0.0538,0.32672 0,0 z m 0.3125,0 c 0.18748,-0.0951 -0.0452,0.20371 0,0 z m -0.90625,0.0625 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0.1875,0.0312 0.0811,0.052 -0.0811,-0.052 z m 0.375,0 c 1.20158,-0.16829 -0.64097,0.18775 0,0 z m 0.34375,0.0312 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m 0.0937,0.0312 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m -0.96875,0.0625 c 0.12648,0.0585 -0.17689,0.0972 0,0 z m 0.96875,0 c 0.15794,0.0739 -0.14603,0.12046 0,0 z m -0.71875,0.0312 c 0.898,-0.2226 0.27982,0.47068 0,0 z m 0.0937,0.125 c 0.20538,-0.21045 0.0671,0.23261 0,0 z m -0.25,0.0937 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.125,0 c 0.20721,-0.21266 0.009,0.23749 0,0 z m 0.25,0 c 0.19412,0.17497 -0.24948,0.0223 0,0 z m 0.0625,0 c 0.20825,0.0581 0.14381,0.0401 0,0 z m 0.3125,0.0312 c 0.25747,-0.13883 -0.0384,0.29639 0,0 z m -0.71875,0.0312 c 0.19936,0.0144 -0.0724,0.22142 0,0 z m 0.125,0.0312 c 0.70639,-0.43406 0.27688,0.45876 0,0 z m 0.0937,0.0625 c 0.008,0.15892 0.13365,-0.12205 0,0 z m 0.25,0.0625 c 0.14934,0.14378 0.0779,0.075 0,0 z m 0.28125,0 c 0,0 0,0 0,0 z m -0.6875,0.0625 c 0,0 0,0 0,0 z m 0.34375,0 c 0.11496,-0.0712 -0.008,0.12332 0,0 z m -0.0625,0.0312 c 0,0 0,0 0,0 z m -0.3125,0.0625 c 0.78945,-0.13571 0.36509,0.15807 0,0 z m 0.6875,0.0625 c 0.12046,-0.14603 0.0739,0.15794 0,0 z m -0.4375,0.0625 c -0.0213,0.14276 -0.1465,-0.1175 0,0 z m -0.25,0.0937 c 0.25292,0.033 0.55833,0.0729 0,0 z m 0.375,0.0312 c 0.2051,0.0301 0.10704,0.0157 0,0 z m 0.1875,0 c 0,0 0,0 0,0 z m -0.53125,0.0937 c 0.30113,-0.14159 -0.085,0.24582 0,0 z m 0.15625,0 c 0.32532,-0.28393 0.0306,0.29229 0,0 z m 0.53125,0 c 0.19552,-0.0383 -0.13123,0.20085 0,0 z m -0.78125,0.0625 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0.0625,0.0312 c 0.14381,-0.15863 0.0988,0.16783 0,0 z m 0.15625,0 c 0.62162,-0.38976 0.33846,0.27135 0,0 z m 0.5625,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.71875,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.8125,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.40625,0.0312 c 0.28857,0.01 -0.16725,0.26709 0,0 z m 0.125,0.0312 c 0.17032,0.0465 -0.14647,0.13134 0,0 z m -0.28125,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.5625,0.0312 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m -0.75,0.0937 c 0,0 0,0 0,0 z m 0.0937,0 c 0,0 0,0 0,0 z m 0.0937,0 c 0.47094,-0.39269 0.0814,0.35806 0,0 z m -0.1875,0.0625 c -0.0213,0.14276 -0.1465,-0.1175 0,0 z m 0.59375,0.0312 c 0,0 0,0 0,0 z m 0.0625,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -0.875,0.0312 c 0.038,0.20856 0.024,0.13162 0,0 z m 0.34375,0 c 0,0 0,0 0,0 z m 0.625,0 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0,0.125 c 0,0 0,0 0,0 z m -0.8125,0.0312 c 0.257,-0.12747 -0.0944,0.3092 0,0 z m 0.15625,0 c 0.69216,-0.26825 -0.0559,0.42105 0,0 z m -0.21875,0.0312 c 0.12648,0.0585 -0.17689,0.0972 0,0 z m 0.625,0 c 0.0821,0.26379 -0.2721,-0.11199 0,0 z m 0.25,0.0312 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0,0.0625 c 0.11976,-0.10943 0.0142,0.17763 0,0 z m -0.28125,0.125 c 0,0 0,0 0,0 z m 0.1875,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.0937,0 c 0.1465,-0.1175 0.0213,0.14276 0,0 z M -480,-283 c 0.1465,-0.1175 0.0213,0.14276 0,0 z m 0.3125,0 c 0.12311,0.12251 0.10705,0.10653 0,0 z m 0.125,0.0625 c 0,0 0,0 0,0 z m -0.28125,0.0625 c -0.0105,0.21298 -0.19613,-0.15289 0,0 z m 0.125,0.0312 c 0.13091,-0.16103 0.0817,0.16368 0,0 z m 0,0.0625 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.15625,0 c 0,0 0,0 0,0 z M -480,-282.75 c 0.71188,-0.2072 0.16062,0.51095 0,0 z m 0.625,0.0625 c 0.16898,-0.006 -0.0935,0.15802 0,0 z m -0.21875,0.0312 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.21875,0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z M -480,-282.5 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.375,0 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m -0.6875,0.0937 c 0.15442,-0.21205 0.0645,0.20519 0,0 z m 0.3125,0 c 0.51983,-0.18866 0.36988,0.22572 0,0 z m 0.625,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.0937,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m -1.0625,0.0625 c 0.22831,-0.22832 0.15246,0.21027 0,0 z m 0.3125,0 c 0.63879,-0.32685 0.29073,0.3451 0,0 z m 0.21875,0.0625 c -0.0713,-0.16431 -0.12721,0.15287 0,0 z m 0.53125,-0.0625 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.5625,0.25 c 0,0 0,0 0,0 z m 0.0625,0 c 0.0498,0.23698 0.22397,-0.16993 0,0 z m -1.28125,0.0312 c 0,0 0,0 0,0 z m -0.375,0.0312 c 0.25304,-0.18891 0.0486,0.27922 0,0 z m 0.4375,0.0312 c 0.42756,0.0145 -0.26527,0.1015 0,0 z m 0.40625,0 c 0.0815,0.20287 0.0586,0.14595 0,0 z m -0.21875,0.0312 c 0.35672,-0.1329 -0.0246,0.30594 0,0 z m -0.3125,0.0625 c 0.223,-0.20033 0.0699,0.22683 0,0 z m -0.0937,0.0312 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.3125,0 c 0.13365,-0.12205 0.008,0.15892 0,0 z m 0.53125,0.0625 c 0.15892,0.008 -0.12205,0.13365 0,0 z m 0.125,0.5625 c -0.29729,-0.005 0.13101,0.18605 0,0 z"
+           id="path4890" />
+        <path
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE. Bold'"
+           d="m -476.23438,-287.85654 c 0.38662,1.96967 -0.84355,4.23211 0.46785,5.9884 1.80855,0.69378 0.16877,-3.60202 0.64697,-4.95319 -0.282,-0.42995 -1.25158,-0.36253 -1.11482,-1.03521 z m 0.34376,0.53125 c -0.24712,0.19175 0.26518,0.0689 0,0 z m 0.15624,0.21875 c 0.30664,-0.008 0.0562,0.34949 0,0 z m 0.21876,0 c 0,0 0,0 0,0 z m 0.0625,0.0312 c 0.19442,-0.13448 -0.0303,0.20676 0,0 z m -0.25,0.125 c 0.14651,-0.11749 0.0213,0.14274 0,0 z m -0.375,0.0937 c 0.13366,-0.122 0.008,0.15891 0,0 z m 0.15624,0 c 0.82685,-0.19269 0.27274,0.37051 0,0 z m 0.9375,0.25 c -0.26578,0.18998 0.24875,0.10672 0,0 z m -0.28124,0.0312 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.90626,0.0312 c 0.15894,0.008 -0.12209,0.13362 0,0 z m 0.21876,0 c 0.19374,-0.18117 3.5e-4,0.2505 0,0 z m 0.125,0 c 0.81448,0.0316 0.0766,0.5113 0,0 z m 0.3125,0 c 0.2043,-0.24127 0.0658,0.27149 0,0 z m 0.25,0.0625 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.78126,0.0625 c 0,0 0,0 0,0 z m 0.875,0 c 0,0 0,0 0,0 z m -1.03124,0.0625 c 0.17927,-0.21299 0.12999,0.18324 0,0 z m 0.21874,0 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.0938,0 c 0.225,0.17565 0.2895,0.22599 0,0 z m -0.25,0.0625 c 0.10942,0.11979 -0.17762,0.0142 0,0 z m 0.0625,0.0312 c 0,0 0,0 0,0 z m -0.125,0.0625 c 0.14651,-0.11749 0.0213,0.14274 0,0 z m 0.3125,0 c 0.41965,-0.16946 0.0962,0.38477 0,0 z m -0.21876,0.0312 c 0.11982,-0.1094 0.0141,0.17764 0,0 z m 0.71876,0.0312 c 0,0 0,0 0,0 z m 0.1875,0 c 0,0 0,0 0,0 z m 0.0312,0.0625 c 0.2328,0.0183 -0.19036,0.19971 0,0 z m -0.9375,0.0312 c 0.2134,-0.005 -0.11564,0.20907 0,0 z m 0.5,0.0625 c 0.15894,0.008 -0.12209,0.13362 0,0 z m -0.5625,0.0937 c 0,0 0,0 0,0 z m 0,0.0625 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.0938,0 c 0.15893,0.008 -0.12205,0.13363 0,0 z m 0.0937,0 c 0.19806,-0.0453 -0.0803,0.17259 0,0 z m 0.15626,0 c 0.15443,-0.21203 0.0645,0.20518 0,0 z m 0.1875,0 c 0.15576,-0.25427 0.12195,0.20428 0,0 z m 0.15624,0 c 0.15448,-0.21201 0.0645,0.20519 0,0 z m 0.21876,0 c 0.17762,0.0143 -0.10944,0.11972 0,0 z m -0.5625,0.0625 c 0.38231,0.69485 -0.61084,0.14162 0,0 z m 0.0625,0 c 0.49686,-0.25794 0.2333,0.25258 0,0 z m 0.78124,0 c -0.122,0.13369 0.15891,0.008 0,0 z m -1.15624,0.0312 c 0,0 0,0 0,0 z m 0.125,0 c 0,0 0,0 0,0 z m 0.75,0 c 0,0 0,0 0,0 z m 0.0625,0.0312 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.625,0.0937 c 0.13366,-0.122 0.008,0.15891 0,0 z m 0.25,0 c 0.29721,0.19972 -0.64171,0.29388 0,0 z m 0.3125,0 c 0.20776,-0.2368 0.0537,0.28589 0,0 z m 0.21874,0 c 0.17764,0.0143 -0.10946,0.11973 0,0 z m -0.4375,0.0625 c 0,0 0,0 0,0 z m -0.65624,0.0312 c 0,0 0,0 0,0 z m 0.9375,0 c 0.19107,-0.1809 0.0111,0.24359 0,0 z m -0.28126,0.0312 c 0.18936,-0.0803 -0.0778,0.18739 0,0 z m -0.65624,0.0312 c 0.14278,0.0213 -0.11753,0.1465 0,0 z m 0.15624,0.0937 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.15626,0 c 0.23633,-0.19309 0.087,0.25741 0,0 z m -0.3125,0.0625 c 0.91707,-0.004 0.60847,0.34592 0,0 z m 0.65624,0 c 0.10187,-0.10251 0.0329,0.13306 0,0 z m 0.21876,0.0937 c 0.26006,-0.0182 -0.15952,0.2321 0,0 z m -0.625,0.125 c 0.27681,0.0928 0.33345,0.11176 0,0 z m -0.15626,0.0312 c 0.15448,-0.21201 0.0645,0.20519 0,0 z m 0.46876,0 c 0.61806,-0.52128 0.0226,0.32809 0,0 z m 0.3125,0 c 0.18748,-0.095 -0.0452,0.2037 0,0 z m -0.90626,0.0625 c 0.15894,0.008 -0.12209,0.13362 0,0 z m 0.1875,0.0312 0.0811,0.052 -0.0811,-0.052 z m 0.375,0 c 1.20156,-0.16825 -0.64097,0.18772 0,0 z m 0.34376,0.0312 c 0.14651,-0.11749 0.0213,0.14274 0,0 z m 0.0937,0.0312 c 0.14655,-0.11747 0.0212,0.14274 0,0 z m -0.96874,0.0625 c 0.12645,0.0585 -0.17695,0.0971 0,0 z m 0.96874,0 c 0.15797,0.0739 -0.14607,0.12043 0,0 z m -0.71874,0.0312 c 0.89806,-0.22263 0.27983,0.47067 0,0 z m 0.0937,0.125 c 0.20542,-0.21044 0.0671,0.23258 0,0 z m -0.25,0.0937 c 0.15448,-0.21201 0.0645,0.20519 0,0 z m 0.125,0 c 0.20725,-0.21262 0.009,0.23746 0,0 z m 0.25,0 c 0.19411,0.175 -0.24949,0.0223 0,0 z m 0.0625,0 c 0.20825,0.0581 0.14382,0.0401 0,0 z m 0.3125,0.0312 c 0.25751,-0.13879 -0.0384,0.29638 0,0 z m -0.71874,0.0312 c 0.19936,0.0144 -0.0724,0.2214 0,0 z m 0.125,0.0312 c 0.70636,-0.434 0.27688,0.45872 0,0 z m 0.0937,0.0625 c 0.008,0.15893 0.1336,-0.12206 0,0 z m -0.15624,0.0312 c 0,0 0,0 0,0 z m 0.40624,0.0312 c 0.14929,0.14383 0.0779,0.0751 0,0 z m 0.28126,0 c 0,0 0,0 0,0 z m -0.6875,0.0625 c 0,0 0,0 0,0 z m 0.34374,0 c 0.11501,-0.0712 -0.008,0.1233 0,0 z m -0.0625,0.0312 c 0,0 0,0 0,0 z m 0.40626,0.0312 c 0,0 0,0 0,0 z m -0.71876,0.0312 c 0.78954,-0.13564 0.36506,0.15801 0,0 z m 0.6875,0.0625 c 0.12051,-0.14603 0.0739,0.15795 0,0 z m -0.84374,0.0625 c 0,0 0,0 0,0 z m 0.40624,0 c -0.0213,0.14279 -0.14651,-0.11754 0,0 z m -0.25,0.0937 c 0.25293,0.033 0.55833,0.0728 0,0 z m 0.375,0.0312 c 0.2051,0.0301 0.10704,0.0157 0,0 z m 0.1875,0 c 0,0 0,0 0,0 z m -0.53124,0.0937 c 0.30114,-0.14163 -0.085,0.24582 0,0 z m 0.15624,0 c 0.32539,-0.28393 0.0306,0.29229 0,0 z m 0.53126,0 c 0.19554,-0.0383 -0.13127,0.20086 0,0 z m -0.78126,0.0625 c 0.15894,0.008 -0.12209,0.13362 0,0 z m -0.0937,0.0312 c 0,0 0,0 0,0 z m 0.15624,0 c 0.14385,-0.15863 0.0987,0.1678 0,0 z m 0.15626,0 c 0.62162,-0.38974 0.33845,0.27134 0,0 z m 0.5625,0 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.71876,0.0625 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.8125,0 c 0.1337,-0.12201 0.008,0.15891 0,0 z m -0.40624,0.0312 c 0.28859,0.01 -0.16732,0.26708 0,0 z m 0.125,0.0312 c 0.17031,0.0465 -0.14649,0.1313 0,0 z m -0.28126,0.0625 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.5625,0.0312 c 0.14655,-0.11747 0.0212,0.14274 0,0 z m -0.75,0.0937 c 0,0 0,0 0,0 z m 0.0938,0 c 0,0 0,0 0,0 z m 0.0937,0 c 0.44534,-0.36139 0.0965,0.35361 0,0 z m -0.1875,0.0625 c -0.0213,0.14279 -0.14651,-0.11754 0,0 z m 0.59376,0.0312 c 0,0 0,0 0,0 z m 0.0625,0 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.875,0.0312 c 0.038,0.20857 0.024,0.13163 0,0 z m 0.34374,0 c 0,0 0,0 0,0 z m 0.625,0 c 0.15894,0.008 -0.12209,0.13362 0,0 z m -0.53124,0.0937 c 0,0 0,0 0,0 z m 0.53124,0.0312 c 0,0 0,0 0,0 z m -0.8125,0.0312 c 0.25706,-0.12741 -0.0944,0.30921 0,0 z m 0.15626,0 c 0.69216,-0.2682 -0.0559,0.42103 0,0 z m -0.21876,0.0312 c 0.12646,0.0585 -0.17695,0.0971 0,0 z m 0.625,0 c 0.082,0.26381 -0.2721,-0.11204 0,0 z m 0.25,0.0312 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0,0.0625 c 0.11982,-0.1094 0.0141,0.17764 0,0 z m -0.28124,0.125 c 0,0 0,0 0,0 z m 0.1875,0 c 0.13366,-0.122 0.008,0.15891 0,0 z m 0.0937,0 c 0.14655,-0.11747 0.0212,0.14274 0,0 z m -0.71874,0.0312 c 0.14651,-0.11749 0.0213,0.14274 0,0 z m 0.3125,0 c 0.1231,0.12252 0.10704,0.10653 0,0 z m 0.125,0.0625 c 0,0 0,0 0,0 z m -0.28126,0.0625 c -0.0105,0.213 -0.19614,-0.15293 0,0 z m 0.125,0.0312 c 0.13097,-0.16104 0.0817,0.16368 0,0 z m 0,0.0625 c 0.15448,-0.21201 0.0645,0.20519 0,0 z m 0.15626,0 c 0,0 0,0 0,0 z m -0.4375,0.0312 c 0.86346,-0.20351 0.088,0.5641 0,0 z m 0.625,0.0625 c 0.16899,-0.006 -0.0935,0.158 0,0 z m -0.21876,0.0312 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.21876,0.0625 c 0.13366,-0.122 0.008,0.15891 0,0 z m -0.96876,0.0937 c 0,0 0,0 0,0 z m 0.1875,0 c 0,0 0,0 0,0 z m 0.15626,0 c 0.13366,-0.122 0.008,0.15891 0,0 z m 0.375,0 c 0.15443,-0.21203 0.0645,0.20518 0,0 z m -0.6875,0.0937 c 0.15443,-0.21203 0.0645,0.20518 0,0 z m 0.3125,0 c 0.51987,-0.18861 0.36987,0.22568 0,0 z m 0.625,0 c 0.13366,-0.122 0.008,0.15891 0,0 z m 0.0937,0 c 0.1337,-0.12201 0.008,0.15891 0,0 z m -1.0625,0.0625 c 0.22837,-0.22831 0.15241,0.21026 0,0 z m 0.3125,0 c 0.63883,-0.32679 0.29067,0.34508 0,0 z m 0.21876,0.0625 c -0.0713,-0.16431 -0.12716,0.15289 0,0 z m 0.53124,-0.0625 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.5625,0.25 c 0,0 0,0 0,0 z m 0.0625,0 c 0.0498,0.23699 0.22393,-0.16997 0,0 z m -1.28124,0.0312 c 0,0 0,0 0,0 z m 0.28124,0 c 0,0 0,0 0,0 z m -0.65624,0.0312 c 0.25305,-0.18892 0.0486,0.2792 0,0 z m 0.4375,0.0312 c 0.42853,0.0129 -0.26965,0.10274 0,0 z m 0.40624,0 c 0.0815,0.20287 0.0586,0.14596 0,0 z m -0.21874,0.0312 c 0.35672,-0.13287 -0.0246,0.30592 0,0 z m -0.3125,0.0625 c 0.22301,-0.20031 0.0699,0.22682 0,0 z m -0.0938,0.0312 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.3125,0 c 0.1337,-0.12201 0.008,0.15891 0,0 z m 0.53126,0.0625 c 0.15893,0.008 -0.12205,0.13363 0,0 z m 0.125,0.5625 c -0.2973,-0.005 0.13106,0.186 0,0 z"
+           id="path4892" />
+        <path
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE. Bold'"
+           d="m -474.06247,-287.52841 c -1.96967,0.3866 -4.23211,-0.84357 -5.9884,0.46784 -0.69379,1.8086 3.60201,0.16877 4.95318,0.64698 0.42997,-0.28199 0.36253,-1.25155 1.03522,-1.11482 z m -0.53125,0.34375 c -0.19172,-0.24713 -0.0689,0.26519 0,0 z m -0.21875,0.15625 c 0.008,0.30665 -0.34958,0.0561 0,0 z m 0,0.21875 c 0,0 0,0 0,0 z m -0.0312,0.0625 c 0.13446,0.19449 -0.20682,-0.0304 0,0 z m -0.125,-0.25 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m -0.0937,-0.375 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.15625 c 0.19283,0.82661 -0.37064,0.27288 0,0 z m -0.25,0.9375 c -0.18994,-0.2658 -0.10676,0.24878 0,0 z m -0.0312,-0.28125 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0312,-0.90625 c -0.008,0.15892 -0.13365,-0.12205 0,0 z m 0,0.21875 c 0.18118,0.19375 -0.2505,3.4e-4 0,0 z m 0,0.125 c -0.0315,0.81448 -0.51134,0.0766 0,0 z m 0,0.3125 c 0.24127,0.20428 -0.27149,0.0659 0,0 z m -0.0625,0.25 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0625,-0.78125 c 0,0 0,0 0,0 z m 0,0.875 c 0,0 0,0 0,0 z m -0.0625,-1.03125 c 0.213,0.17927 -0.18326,0.13 0,0 z m 0,0.21875 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.0937 c -0.17567,0.225 -0.22598,0.28945 0,0 z m -0.0625,-0.25 c -0.11977,0.10942 -0.0142,-0.17763 0,0 z m -0.0313,0.0625 c 0,0 0,0 0,0 z m -0.0625,-0.125 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m 0,0.3125 c 0.16951,0.41965 -0.3848,0.0962 0,0 z m -0.0312,-0.21875 c 0.10943,0.11977 -0.17764,0.0142 0,0 z m -0.0312,0.71875 c 0,0 0,0 0,0 z m 0,0.1875 c 0,0 0,0 0,0 z m -0.0625,0.0312 c -0.0184,0.23272 -0.19969,-0.19031 0,0 z m -0.0312,-0.9375 c 0.005,0.21335 -0.20907,-0.11561 0,0 z m -0.0625,0.5 c -0.008,0.15892 -0.13365,-0.12205 0,0 z m -0.0937,-0.5625 c 0,0 0,0 0,0 z m -0.0625,0 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.0937 c -0.008,0.15898 -0.13367,-0.12212 0,0 z m 0,0.0937 c 0.0453,0.19808 -0.17264,-0.0804 0,0 z m 0,0.15625 c 0.21205,0.15442 -0.20519,0.0645 0,0 z m 0,0.1875 c 0.25429,0.15575 -0.20429,0.12197 0,0 z m 0,0.15625 c 0.21205,0.15442 -0.20519,0.0645 0,0 z m 0,0.21875 c -0.0143,0.17768 -0.11978,-0.10951 0,0 z m -0.0625,-0.5625 c -0.69485,0.38242 -0.14155,-0.61093 0,0 z m 0,0.0625 c 0.258,0.49734 -0.25244,0.23326 0,0 z m 0,0.78125 c -0.13364,-0.12195 -0.008,0.15888 0,0 z m -0.0312,-1.15625 c 0,0 0,0 0,0 z m 0,0.125 c 0,0 0,0 0,0 z m 0,0.75 c 0,0 0,0 0,0 z m -0.0312,0.0625 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0937,-0.625 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.25 c -0.19966,0.29722 -0.29381,-0.64154 0,0 z m 0,0.3125 c 0.23681,0.20774 -0.28589,0.0537 0,0 z m 0,0.21875 c -0.0142,0.17763 -0.11976,-0.10943 0,0 z m -0.0625,-0.4375 c 0,0 0,0 0,0 z m -0.0313,-0.65625 c 0,0 0,0 0,0 z m 0,0.9375 c 0.18095,0.19097 -0.24354,0.0112 0,0 z m -0.0312,-0.28125 c 0.0804,0.18932 -0.18741,-0.0778 0,0 z m -0.0312,-0.65625 c -0.0213,0.14276 -0.1465,-0.11752 0,0 z m -0.0937,0.15625 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.15625 c 0.19309,0.23632 -0.25742,0.087 0,0 z m -0.0625,-0.3125 c 0.004,0.91706 -0.34594,0.6085 0,0 z m 0,0.65625 c 0.10252,0.1019 -0.13318,0.0329 0,0 z m -0.0937,0.21875 c 0.0182,0.26006 -0.23213,-0.1595 0,0 z m -0.125,-0.625 c -0.0928,0.27681 -0.1118,0.3334 0,0 z m -0.0312,-0.15625 c 0.21199,0.15451 -0.20526,0.0644 0,0 z m 0,0.46875 c 0.52129,0.61795 -0.32815,0.0226 0,0 z m 0,0.3125 c 0.0951,0.18751 -0.20373,-0.0452 0,0 z m -0.0625,-0.90625 c -0.008,0.15892 -0.13365,-0.12205 0,0 z m -0.0312,0.1875 -0.052,0.0811 0.052,-0.0811 z m 0,0.375 c 0.16829,1.20158 -0.18775,-0.64096 0,0 z m -0.0312,0.34375 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m -0.0312,0.0937 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m -0.0625,-0.96875 c -0.0586,0.12648 -0.0972,-0.177 0,0 z m 0,0.96875 c -0.0739,0.15797 -0.12046,-0.14606 0,0 z m -0.0312,-0.71875 c 0.22267,0.89808 -0.4707,0.27985 0,0 z m -0.125,0.0937 c 0.21045,0.20539 -0.23262,0.0671 0,0 z m -0.0937,-0.25 c 0.21205,0.15442 -0.20519,0.0645 0,0 z m 0,0.125 c 0.21262,0.20728 -0.23753,0.009 0,0 z m 0,0.25 c -0.175,0.19407 -0.0223,-0.24951 0,0 z m 0,0.0625 c -0.0581,0.20824 -0.0401,0.14381 0,0 z m -0.0312,0.3125 c 0.13882,0.25744 -0.29639,-0.0384 0,0 z m -0.0313,-0.71875 c -0.0143,0.19934 -0.22143,-0.0724 0,0 z m -0.0312,0.125 c 0.43406,0.70639 -0.45877,0.27688 0,0 z m -0.0625,0.0937 c -0.15893,0.008 0.12204,0.13367 0,0 z m -0.0312,-0.15625 c 0,0 0,0 0,0 z m -0.0312,0.40625 c -0.14383,0.14928 -0.0751,0.0779 0,0 z m 0,0.28125 c 0,0 0,0 0,0 z m -0.0625,-0.6875 c 0,0 0,0 0,0 z m 0,0.34375 c 0.0712,0.11503 -0.12335,-0.008 0,0 z m -0.0313,-0.0625 c 0,0 0,0 0,0 z m -0.0312,0.40625 c 0,0 0,0 0,0 z m -0.0312,-0.71875 c 0.13567,0.78947 -0.15806,0.36508 0,0 z m -0.0625,0.6875 c 0.14603,0.12046 -0.15794,0.0739 0,0 z m -0.0625,-0.84375 c 0,0 0,0 0,0 z m 0,0.40625 c -0.14277,-0.0213 0.11753,-0.1465 0,0 z m -0.0937,-0.25 c -0.033,0.25291 -0.0728,0.55841 0,0 z m -0.0312,0.375 c -0.0301,0.2051 -0.0157,0.10703 0,0 z m 0,0.1875 c 0,0 0,0 0,0 z m -0.0937,-0.53125 c 0.14161,0.30112 -0.24582,-0.085 0,0 z m 0,0.15625 c 0.28396,0.32533 -0.29229,0.0307 0,0 z m 0,0.53125 c 0.0383,0.19552 -0.20085,-0.13126 0,0 z m -0.0625,-0.78125 c -0.008,0.15892 -0.13365,-0.12205 0,0 z m -0.0313,-0.0937 c 0,0 0,0 0,0 z m 0,0.15625 c 0.15855,0.14379 -0.16771,0.0988 0,0 z m 0,0.15625 c 0.38975,0.62166 -0.27124,0.33847 0,0 z m 0,0.5625 c 0.12208,0.13358 -0.15887,0.009 0,0 z m -0.0625,-0.71875 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.8125 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0312,-0.40625 c -0.01,0.28861 -0.26712,-0.16733 0,0 z m -0.0312,0.125 c -0.0465,0.17032 -0.13134,-0.14647 0,0 z m -0.0625,-0.28125 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0312,0.5625 c 0.11745,0.1466 -0.14282,0.0212 0,0 z m -0.0937,-0.75 c 0,0 0,0 0,0 z m 0,0.0937 c 0,0 0,0 0,0 z m 0,0.0937 c 0.36142,0.44529 -0.35364,0.0966 0,0 z m -0.0625,-0.1875 c -0.14277,-0.0213 0.11753,-0.1465 0,0 z m -0.0312,0.59375 c 0,0 0,0 0,0 z m 0,0.0625 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0312,-0.875 c -0.20855,0.038 -0.13159,0.024 0,0 z m 0,0.34375 c 0,0 0,0 0,0 z m 0,0.625 c -0.008,0.15898 -0.13367,-0.12212 0,0 z m -0.0937,-0.53125 c 0,0 0,0 0,0 z m -0.0312,0.53125 c 0,0 0,0 0,0 z m -0.0312,-0.8125 c 0.12743,0.25702 -0.30923,-0.0944 0,0 z m 0,0.15625 c 0.26822,0.69215 -0.42105,-0.0559 0,0 z m -0.0312,-0.21875 c -0.0585,0.12648 -0.0972,-0.17689 0,0 z m 0,0.625 c -0.2638,0.082 0.11202,-0.27209 0,0 z m -0.0312,0.25 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0625,0 c 0.1094,0.11983 -0.17769,0.0142 0,0 z m -0.125,-0.28125 c 0,0 0,0 0,0 z m 0,0.1875 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.0937 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m -0.0312,-0.71875 c 0.11751,0.14649 -0.14275,0.0213 0,0 z m 0,0.3125 c -0.12251,0.12311 -0.10653,0.10704 0,0 z m -0.0625,0.125 c 0,0 0,0 0,0 z m -0.0625,-0.28125 c -0.21299,-0.0106 0.15296,-0.19606 0,0 z m -0.0312,0.125 c 0.16103,0.13091 -0.16368,0.0817 0,0 z m -0.0625,0 c 0.21205,0.15442 -0.20519,0.0645 0,0 z m 0,0.15625 c 0,0 0,0 0,0 z m -0.0312,-0.4375 c 0.20354,0.86347 -0.56414,0.088 0,0 z m -0.0625,0.625 c 0.006,0.16903 -0.15806,-0.0935 0,0 z m -0.0312,-0.21875 c 0.12199,0.13374 -0.159,0.008 0,0 z m -0.0625,0.21875 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.0937,-0.96875 c 0,0 0,0 0,0 z m 0,0.1875 c 0,0 0,0 0,0 z m 0,0.15625 c 0.12205,0.13365 -0.15892,0.008 0,0 z m 0,0.375 c 0.21205,0.15442 -0.20519,0.0645 0,0 z m -0.0937,-0.6875 c 0.21199,0.15451 -0.20526,0.0644 0,0 z m 0,0.3125 c 0.18897,0.52002 -0.22598,0.36959 0,0 z m 0,0.625 c 0.12199,0.13374 -0.159,0.008 0,0 z m 0,0.0937 c 0.12199,0.13374 -0.159,0.008 0,0 z m -0.0625,-1.0625 c 0.22832,0.22831 -0.21027,0.15246 0,0 z m 0,0.3125 c 0.32684,0.6388 -0.3451,0.29072 0,0 z m -0.0625,0.21875 c 0.1643,-0.0713 -0.15288,-0.12719 0,0 z m 0.0625,0.53125 c 0.12205,0.13365 -0.15892,0.008 0,0 z m -0.25,0.5625 c 0,0 0,0 0,0 z m 0,0.0625 c -0.23698,0.0498 0.16994,0.22397 0,0 z m -0.0312,-1.28125 c 0,0 0,0 0,0 z m 0,0.28125 c 0,0 0,0 0,0 z m -0.0312,-0.65625 c 0.18892,0.25304 -0.27922,0.0486 0,0 z m -0.0312,0.4375 c -0.0129,0.42856 -0.10275,-0.26966 0,0 z m 0,0.40625 c -0.20288,0.0815 -0.14595,0.0586 0,0 z m -0.0312,-0.21875 c 0.1329,0.35673 -0.30595,-0.0246 0,0 z m -0.0625,-0.3125 c 0.20031,0.22302 -0.22685,0.0699 0,0 z m -0.0313,-0.0937 c 0.12208,0.13358 -0.15887,0.009 0,0 z m 0,0.3125 c 0.12208,0.13358 -0.15887,0.009 0,0 z m -0.0625,0.53125 c -0.008,0.15892 -0.13365,-0.12205 0,0 z m -0.5625,0.125 c 0.005,-0.2973 -0.18605,0.13103 0,0 z"
+           id="path4894" />
+        <path
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:'karabinE.';-inkscape-font-specification:'karabinE. Bold'"
+           d="m -480.53122,-281.68466 c 1.96967,-0.3866 4.23211,0.84356 5.98839,-0.46784 0.69377,-1.80858 -3.60203,-0.16877 -4.9532,-0.64695 -0.42994,0.282 -0.36251,1.25155 -1.03519,1.11479 z m 0.53125,-0.34375 c 0.19172,0.24711 0.0689,-0.26515 0,0 z m 0.21875,-0.15625 c -0.008,-0.30665 0.34947,-0.0562 0,0 z m 0,-0.21875 c 0,0 0,0 0,0 z m 0.0312,-0.0625 c -0.13451,-0.19442 0.20678,0.0303 0,0 z m 0.125,0.25 c -0.11753,-0.14643 0.14271,-0.0213 0,0 z m 0.0937,0.375 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.15625 c -0.19265,-0.82684 0.3705,-0.27274 0,0 z m 0.25,-0.9375 c 0.19011,0.26563 0.10671,-0.24874 0,0 z m 0.0312,0.28125 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0312,0.90625 c 0.008,-0.15899 0.13367,0.12213 0,0 z m 0,-0.21875 c -0.18111,-0.19384 0.25057,-2.4e-4 0,0 z m 0,-0.125 c 0.0316,-0.81453 0.51137,-0.0766 0,0 z m 0,-0.3125 c -0.24128,-0.20438 0.27157,-0.0658 0,0 z m 0.0625,-0.25 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0625,0.78125 c 0,0 0,0 0,0 z m 0,-0.875 c 0,0 0,0 0,0 z m 0.0625,1.03125 c -0.21301,-0.17929 0.18325,-0.12998 0,0 z m 0,-0.21875 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.0937 c 0.17567,-0.22501 0.22598,-0.28945 0,0 z m 0.0625,0.25 c 0.11977,-0.10943 0.0142,0.17764 0,0 z m 0.0312,-0.0625 c 0,0 0,0 0,0 z m 0.0625,0.125 c -0.11748,-0.14652 0.14276,-0.0213 0,0 z m 0,-0.3125 c -0.16948,-0.41965 0.38474,-0.0962 0,0 z m 0.0312,0.21875 c -0.10943,-0.11977 0.17763,-0.0142 0,0 z m 0.0312,-0.71875 c 0,0 0,0 0,0 z m -3e-5,-0.1875 c 0,0 0,0 0,0 z m 0.0625,-0.0312 c 0.0183,-0.23276 0.19971,0.19033 0,0 z m 0.0312,0.9375 c -0.005,-0.21342 0.20912,0.11567 0,0 z m 0.0625,-0.5 c 0.008,-0.15888 0.13363,0.12197 0,0 z m 0.0937,0.5625 c 0,0 0,0 0,0 z m 0.0625,0 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.0937 c 0.008,-0.15893 0.13365,0.12204 0,0 z m 0,-0.0937 c -0.0453,-0.19804 0.1726,0.0803 0,0 z m 0,-0.15625 c -0.21205,-0.15443 0.20519,-0.0645 0,0 z m 0,-0.1875 c -0.25429,-0.15578 0.20429,-0.12196 0,0 z m 0,-0.15625 c -0.21205,-0.15443 0.20519,-0.0645 0,0 z m -3e-5,-0.21875 c 0.0142,-0.17764 0.11977,0.10943 0,0 z m 0.0625,0.5625 c 0.69481,-0.38233 0.14163,0.61086 0,0 z m 0,-0.0625 c -0.25808,-0.49723 0.25257,-0.23328 0,0 z m -3e-5,-0.78125 c 0.13366,0.12204 0.008,-0.15892 0,0 z m 0.0313,1.15625 c 0,0 0,0 0,0 z m 0,-0.125 c 0,0 0,0 0,0 z m -3e-5,-0.75 c 0,0 0,0 0,0 z m 0.0312,-0.0625 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0938,0.625 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.25 c 0.1995,-0.29694 0.29325,0.64022 0,0 z m 0,-0.3125 c -0.23682,-0.20768 0.28582,-0.0538 0,0 z m 0,-0.21875 c 0.0142,-0.17758 0.11973,0.10938 0,0 z m 0.0625,0.4375 c 0,0 0,0 0,0 z m 0.0313,0.65625 c 0,0 0,0 0,0 z m -3e-5,-0.9375 c -0.1809,-0.19106 0.24359,-0.0111 0,0 z m 0.0313,0.28125 c -0.0804,-0.18928 0.18738,0.0777 0,0 z m 0.0312,0.65625 c 0.0213,-0.14278 0.1465,0.11752 0,0 z m 0.0937,-0.15625 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.15625 c -0.1931,-0.23634 0.25741,-0.087 0,0 z m 0.0625,0.3125 c -0.004,-0.91713 0.34592,-0.60844 0,0 z m 0,-0.65625 c -0.10253,-0.10183 0.13308,-0.033 0,0 z m 0.0937,-0.21875 c -0.0182,-0.26011 0.23216,0.1596 0,0 z m 0.12503,0.625 c 0.0928,-0.27684 0.11175,-0.3334 0,0 z m 0.0312,0.15625 c -0.21198,-0.15454 0.20526,-0.0644 0,0 z m 0,-0.46875 c -0.5213,-0.61812 0.32822,-0.0225 0,0 z m 0,-0.3125 c -0.0951,-0.18749 0.20371,0.0452 0,0 z m 0.0625,0.90625 c 0.008,-0.15888 0.13363,0.12197 0,0 z m 0.0312,-0.1875 0.052,-0.0811 -0.052,0.0811 z m 0,-0.375 c -0.17577,-1.22586 0.19065,0.64311 0,0 z m 0.0312,-0.34375 c -0.11748,-0.14652 0.14277,-0.0213 0,0 z m 0.0312,-0.0937 c -0.11746,-0.14662 0.14282,-0.0212 0,0 z m 0.0625,0.96875 c 0.0585,-0.12646 0.0972,0.17691 0,0 z m -3e-5,-0.96875 c 0.0739,-0.15795 0.12045,0.14604 0,0 z m 0.0313,0.71875 c -0.2226,-0.89801 0.47067,-0.27981 0,0 z m 0.125,-0.0937 c -0.21045,-0.2054 0.23261,-0.0671 0,0 z m 0.0937,0.25 c -0.2121,-0.15435 0.20511,-0.0646 0,0 z m 0,-0.125 c -0.21272,-0.2072 0.23745,-0.009 0,0 z m 0,-0.25 c 0.17497,-0.19413 0.0223,0.24948 0,0 z m 0,-0.0625 c 0.0581,-0.20824 0.0401,-0.14378 0,0 z m 0.0312,-0.3125 c -0.13883,-0.25747 0.29637,0.0384 0,0 z m 0.0313,0.71875 c 0.0143,-0.19933 0.22134,0.0724 0,0 z m 0.0312,-0.125 c -0.43408,-0.7064 0.45876,-0.27688 0,0 z m 0.0625,-0.0937 c 0.15898,-0.008 -0.12199,-0.13372 0,0 z m 0.0313,0.15625 c 0,0 0,0 0,0 z m 0.0312,-0.40625 c 0.14378,-0.14934 0.0751,-0.0779 0,0 z m 0,-0.28125 c 0,0 0,0 0,0 z m 0.0625,0.6875 c 0,0 0,0 0,0 z m 0,-0.34375 c -0.0712,-0.11496 0.1233,0.008 0,0 z m 0.0312,0.0625 c 0,0 0,0 0,0 z m 0.0312,-0.40625 c 0,0 0,0 0,0 z m 0.0313,0.71875 c -0.13571,-0.78948 0.15807,-0.36509 0,0 z m 0.0625,-0.6875 c -0.1461,-0.12046 0.15798,-0.0739 0,0 z m 0.0625,0.84375 c 0,0 0,0 0,0 z m 0,-0.40625 c 0.14272,0.0213 -0.11755,0.14642 0,0 z m 0.0937,0.25 c 0.033,-0.25293 0.0728,-0.55832 0,0 z m 0.0312,-0.375 c 0.0301,-0.2051 0.0157,-0.10704 0,0 z m 0,-0.1875 c 0,0 0,0 0,0 z m 0.0937,0.53125 c -0.14155,-0.30113 0.24582,0.0851 0,0 z m 0,-0.15625 c -0.28391,-0.32533 0.29228,-0.0306 0,0 z m 0,-0.53125 c -0.0384,-0.19547 0.20082,0.13112 0,0 z m 0.0625,0.78125 c 0.008,-0.15893 0.13365,0.12204 0,0 z m 0.0312,0.0937 c 0,0 0,0 0,0 z m 0,-0.15625 c -0.15863,-0.14384 0.16783,-0.0987 0,0 z m 0,-0.15625 c -0.38976,-0.62164 0.27136,-0.33845 0,0 z m -3e-5,-0.5625 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0625,0.71875 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m -3e-5,-0.8125 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0313,0.40625 c 0.01,-0.28855 0.26706,0.16718 0,0 z m 0.0312,-0.125 c 0.0465,-0.17033 0.13132,0.14649 0,0 z m 0.0625,0.28125 c -0.12206,-0.13359 0.15887,-0.008 0,0 z m 0.0312,-0.5625 c -0.11748,-0.14652 0.14277,-0.0213 0,0 z m 0.0938,0.75 c 0,0 0,0 0,0 z m 0,-0.0937 c 0,0 0,0 0,0 z m 0,-0.0937 c -0.36148,-0.44533 0.35365,-0.0965 0,0 z m 0.0625,0.1875 c 0.14278,0.0213 -0.1175,0.14651 0,0 z m 0.0312,-0.59375 c 0,0 0,0 0,0 z m 0,-0.0625 c -0.12206,-0.13359 0.15887,-0.008 0,0 z m 0.0312,0.875 c 0.20856,-0.038 0.13163,-0.024 0,0 z m 0,-0.34375 c 0,0 0,0 0,0 z m -3e-5,-0.625 c 0.008,-0.15893 0.13366,0.12204 0,0 z m 0.0938,0.53125 c 0,0 0,0 0,0 z m 0.0312,-0.53125 c 0,0 0,0 0,0 z m 0.0313,0.8125 c -0.12745,-0.257 0.30918,0.0944 0,0 z m 0,-0.15625 c -0.26825,-0.69217 0.42103,0.0558 0,0 z m 0.0312,0.21875 c 0.0585,-0.12646 0.0972,0.17691 0,0 z m 0,-0.625 c 0.26377,-0.082 -0.11206,0.27205 0,0 z m 0.0312,-0.25 c -0.12206,-0.13359 0.15887,-0.008 0,0 z m 0.0625,0 c -0.10943,-0.11977 0.17763,-0.0142 0,0 z m 0.125,0.28125 c 0,0 0,0 0,0 z m 0,-0.1875 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0,-0.0937 c -0.11748,-0.14652 0.14277,-0.0213 0,0 z m 0.0313,0.71875 c -0.11748,-0.14652 0.14276,-0.0213 0,0 z m 0,-0.3125 c 0.12251,-0.12311 0.10653,-0.10705 0,0 z m 0.0625,-0.125 c 0,0 0,0 0,0 z m 0.0625,0.28125 c 0.21296,0.0106 -0.15293,0.19611 0,0 z m 0.0312,-0.125 c -0.16103,-0.13094 0.16369,-0.0817 0,0 z m 0.0625,0 c -0.21205,-0.15443 0.20519,-0.0645 0,0 z m 0,-0.15625 c 0,0 0,0 0,0 z m 0.0312,0.4375 c -0.20361,-0.86349 0.56412,-0.088 0,0 z m 0.0625,-0.625 c -0.006,-0.16899 0.15801,0.0935 0,0 z m 0.0312,0.21875 c -0.12198,-0.13376 0.15899,-0.008 0,0 z m 0.0625,-0.21875 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0938,0.96875 c 0,0 0,0 0,0 z m 0,-0.1875 c 0,0 0,0 0,0 z m 0,-0.15625 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.375 c -0.21205,-0.15443 0.20519,-0.0645 0,0 z m 0.0937,0.6875 c -0.21205,-0.15443 0.20519,-0.0645 0,0 z m 0,-0.3125 c -0.18864,-0.51992 0.2257,-0.36982 0,0 z m -3e-5,-0.625 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0,-0.0937 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.0625,1.0625 c -0.22832,-0.22833 0.21027,-0.15244 0,0 z m 0,-0.3125 c -0.32684,-0.63879 0.34509,-0.29071 0,0 z m 0.0625,-0.21875 c -0.16431,0.0713 0.15287,0.12721 0,0 z m -0.0625,-0.53125 c -0.12205,-0.13366 0.15892,-0.008 0,0 z m 0.25,-0.5625 c 0,0 0,0 0,0 z m 0,-0.0625 c 0.23698,-0.0498 -0.16994,-0.22395 0,0 z m 0.0313,1.28125 c 0,0 0,0 0,0 z m 0,-0.28125 c 0,0 0,0 0,0 z m 0.0312,0.65625 c -0.18893,-0.25313 0.27929,-0.0485 0,0 z m 0.0313,-0.4375 c 0.0128,-0.4286 0.10275,0.26967 0,0 z m 0,-0.40625 c 0.20286,-0.0815 0.14591,-0.0586 0,0 z m 0.0312,0.21875 c -0.1329,-0.35674 0.30594,0.0246 0,0 z m 0.0625,0.3125 c -0.20033,-0.22301 0.22682,-0.0699 0,0 z m 0.0312,0.0937 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0,-0.3125 c -0.12202,-0.13368 0.15893,-0.008 0,0 z m 0.0625,-0.53125 c 0.008,-0.15893 0.13366,0.12204 0,0 z m 0.5625,-0.125 c -0.005,0.2973 0.18606,-0.13101 0,0 z"
+           id="path4896" />
+      </g>
+    </g>
+    <rect
+       y="-28.101896"
+       x="-879.34723"
+       height="329.39468"
+       width="457.91006"
+       id="rect3664"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       inkscape:export-filename="Z:\private\technique\équipes\stage\lchituc\splashscreens\OD4IS\png\splashscreen.png"
+       inkscape:export-xdpi="112"
+       inkscape:export-ydpi="112" />
+    <g
+       id="g5472">
+      <g
+         id="g5378"
+         inkscape:export-filename="/home/development/git/ModelWriter/Source/releng/eu.modelwriter.branding/intro/images/about.png"
+         inkscape:export-xdpi="204"
+         inkscape:export-ydpi="204">
+        <rect
+           transform="scale(-1,1)"
+           y="805.39429"
+           x="176.68121"
+           height="292"
+           width="150"
+           id="rect3860"
+           style="fill:url(#linearGradient5492);fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:export-filename="Z:\private\marketing\Design\Produits\UMLDesigner\aboutscreen\png\aboutscreen_UML.png"
+           inkscape:export-xdpi="90"
+           inkscape:export-ydpi="90" />
+        <rect
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3614);enable-background:accumulate"
+           id="rect6106"
+           width="39.10931"
+           height="39.10931"
+           x="-223.4366"
+           y="1050.7064"
+           transform="matrix(0.61596339,0,0,0.61596335,-141.42734,403.23382)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#ef2929;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3558);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+           d="m -92.403025,1026.3635 -2.5665,0.4889 0,1.3444 0.5703,-0.6111 0.6519,0 0,0.2037 -1.2222,0.4074 0,2.0777 0.2037,0 -0.2037,0.2851 0,0.8556 c -0.1242,0.1133 -0.1889,0.1892 -0.2852,0.2851 l 0,0.4889 c 0.096,-0.046 0.1848,-0.06 0.2852,-0.1222 l 0,0.7333 -0.2852,0.2444 0,8.5552 0.6111,2.2406 0.082,0.5704 c -0.028,0.081 -0.061,0.1677 -0.082,0.2444 0.066,0.049 0.108,0.1082 0.163,0.1629 l 0,0.163 -0.2445,-0.082 c -0.024,-0.01 -0.057,-10e-4 -0.082,0 0.036,-0.1266 0.062,-0.2569 0.1222,-0.3666 l -0.1629,-0.6111 -0.4074,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8555 c -0.09,0.2617 -0.1903,0.5021 -0.2852,0.6925 l 0,0.9778 0.2444,0.082 -0.041,0.1629 -0.2037,-0.082 0,11.1217 0.163,-1.1814 0.1222,0.041 0,1.0185 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2445,0.3667 l -0.2036,-0.2445 -0.082,0 -0.163,-0.6518 0,0.5703 -0.041,0 -0.2444,0.1223 0,0.8962 0.2851,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1222 0,0.2444 -0.3667,0 0,0.8555 -0.2851,0.082 0,0.2037 0.2851,-0.082 0,0.082 c 0.4141,10e-5 0.5704,-0.1421 0.5704,-0.4481 l -0.2037,-0.2037 0.5296,0 -0.12221,0.082 -0.082,0.2444 0.1222,0 0,0.082 0.2037,0.2445 0,0.2851 -1.0185,0 0,0.2445 3.3813,0 c 0.2347,-0.6384 0.527,-0.9778 0.937,-0.9778 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.24451,-0.3259 0.082,-0.2444 -0.2444,0.082 -0.6518,0 -0.32591,0.1222 0,-0.041 -0.3667,-0.082 -0.28521,0.2037 -0.44809,-0.2037 0,-0.2444 1.05921,0 0,-0.2037 -0.20371,-0.2037 0,-0.2444 0.48889,0.1629 -0.082,0.2037 0.57029,0.1222 0.28521,-0.041 0.61109,0.2037 -0.082,0.2445 0.2852,0.082 0.5703,-0.041 0.65179,0.2444 0,0.2037 c -0.3219,0 -0.81629,0.3865 -1.38509,1.1814 l 18.5769,0 c 0.082,-0.08 0.16341,-0.163 0.24451,-0.2444 0.212,0.076 0.504,0.1649 0.73329,0.2444 l 1.4666,0 -0.2445,-0.4074 1.1407,0.082 0.20371,0.082 -0.041,0.163 -0.52958,0.082 0.73329,0 7.86261,0 0.041,-0.163 c 0.061,0.031 0.13559,0.056 0.2037,0.082 l -0.041,0.082 1.30359,0 0.36671,-0.2444 -0.041,0.2444 2.5665,0 0.082,-0.2444 0.2445,0.041 -0.082,0.2037 0.44809,0 0,-1.3444 -0.082,0.2444 -0.24441,-0.041 0.12221,-0.4074 0.20371,0.082 0,-9.044 -0.12221,-0.041 0.12221,-0.5703 0,-1.7111 -0.28522,0.082 -0.041,0.2037 0.2037,0.3259 -0.61109,1.1 -0.20371,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0593 -0.6518,2.3628 -0.5703,0.2852 1.18141,-4.3998 0.36671,0.5703 0,-1.3443 -0.163,-0.041 0.163,-0.5704 0,-1.8332 c -0.25982,-0.3921 -0.52391,-0.7828 -0.8148,-1.1407 l 0.8148,0.041 0,-1.2222 -0.20371,0.8555 -0.24451,-0.082 0.32592,-1.1814 0.1223,0.041 0,-3.5443 -0.082,0.2852 -0.44821,-0.1222 0.52959,-2.037 0,-7.9848 -0.041,0.1222 -0.8147,0 -0.6519,-0.3666 -0.8147,0 0.041,-0.2037 -0.326,-0.5296 0.082,-0.2852 0.2037,0.041 0.8556,0.774 0.28511,-0.1629 0.082,-0.2852 c -0.3162,-0.3875 -1.75491,-1.0888 -4.31831,-2.0777 l -1.0999,0 2.811,1.1815 -0.1223,0.4073 0.28521,-0.1629 0.69259,0.2037 -0.48888,0.8148 -0.20371,-0.041 -0.16291,-0.2852 -0.2445,-0.041 -0.36659,0.1222 0.12221,-0.4074 0.36658,-0.1629 0,-0.041 -0.2444,-0.2852 -0.2444,-0.082 -0.2852,0.2037 -0.2444,-0.041 -0.6926,-0.4889 -0.5703,0.3667 -1.5481,-1.2629 -1.8333,0 -0.082,0.3259 -0.2444,-0.041 0.082,-0.2852 -3.2998,0 1.0184,1.5481 0.2037,0.041 -0.1629,0.6925 -0.4482,-0.1222 -0.082,0.2037 c 0.3277,0.088 0.5625,0.5585 0.6926,1.3851 l -0.1629,0.6926 -0.2445,-0.082 0.1222,-0.4481 -0.7333,-0.2037 -0.1629,0.4481 0.4888,0.1222 -0.2444,0.8963 -0.4889,-0.1222 -0.2036,0.937 0.4481,0.1222 -0.1222,0.4074 -0.4482,-0.1223 -0.1222,0.4074 0.4481,0.1222 -0.1629,0.6926 c -0.4097,-0.1095 -0.6971,0.1232 -0.937,0.6926 -0.022,0.084 -0.038,0.1751 -0.041,0.2444 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.09 -0.01,-0.1889 0,-0.2852 l 0.2037,0 0,-0.2037 -0.163,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.2037 l 0.5296,0.1629 0.163,-0.6518 -0.4074,-0.6111 0.937,-1.3851 -0.2037,-0.041 0.2852,-0.1629 0.082,-0.2852 -0.2037,-1.4666 0.6518,-0.2444 -0.2444,-0.082 0.4481,-0.6111 c 0.1537,-1.0675 -0.199,-1.6848 -1.0592,-1.9148 l 0.2851,-0.1629 0.082,-0.2444 -1.5888,0 0,0.082 0.6926,0.1629 -0.937,0.7333 c 0.085,-0.3163 0.049,-0.6402 -0.041,-0.9777 l -1.5888,0 -0.2037,0.6925 -0.2445,-0.041 0.163,-0.6518 -0.937,0 0.2444,0.4889 -0.082,0.4481 -0.3666,-0.5703 0.082,-0.3667 -0.4481,0 -0.8555,3.0962 c -0.097,-0.045 -0.1796,-0.077 -0.2852,-0.1222 l -0.041,0 -0.163,-0.2445 0.2852,-0.1222 0.082,-1.1814 0.3666,-1.4259 -0.4888,0 -0.6111,2.3629 -0.2444,0 0.611,-2.3629 -2.6072,0 -0.041,0.163 0.4481,0.1222 -0.2852,1.0592 c -0.9988,-0.3794 -1.8221,-0.6518 -2.4443,-0.6518 -0.1476,0.3742 -0.4355,0.625 -0.7741,0.774 -0.016,-0.069 -0.022,-0.1337 -0.041,-0.2037 l -0.041,-0.2037 0.5704,-0.082 0,-0.2851 c 0,-0.2009 -0.2546,-0.367 -0.774,-0.4889 l -0.041,-0.2037 -0.9778,0 c 10e-4,0.014 0,0.027 0,0.041 l 0,0.2444 c -0.2787,-0.1373 -0.624,-0.216 -1.0185,-0.2852 l -1.711,0 0,0.163 -0.2444,0.082 -0.081,-0.2444 -0.5296,0 0.041,0.1222 -0.163,0.1629 -0.082,-0.2851 -2.7295,0 -0.2037,0.9777 -0.3259,0 0,-0.4889 c 0.085,-0.1761 0.1553,-0.3574 0.2037,-0.4888 l -2.4036,0 z m 36.2576,12.8328 0,-0.937 -0.041,0.041 -0.1629,0.6111 0.2037,0.2851 z m -34.3428,-12.7513 -0.2852,0.4481 -0.4889,0.082 0.082,-0.2851 0,-0.1222 0.6926,-0.1223 z m 13.4845,0.041 0.4482,0.1222 -0.041,0.2445 -0.4482,-0.1223 0.041,-0.2444 z m -16.2955,0.3667 0,0.4888 -0.4481,0 0.4481,-0.4888 z m 7.8218,0 0.082,0.041 0.2037,0.8962 c -0.2224,-0.02 -0.4372,-0.045 -0.611,-0.082 l 0.2036,-0.6518 -0.041,-0.163 0.163,-0.041 z m 1.4666,0 0.4074,0.4888 -0.4074,0 0,-0.4888 z m -2.5665,0.1629 0.082,0.2852 -0.1222,0.041 c -0.071,-0.079 -0.082,-0.1896 -0.082,-0.2852 l 0.1222,-0.041 z m -6.1516,0.041 0.4482,0 0,0.2852 -0.4482,0 0,-0.2852 z m 5.2146,0 0.2037,0 0,0.2852 -0.2037,0 0,-0.2852 z m -2.9739,0.2852 c 0,0 0.038,0 0.041,0 l 0,0.2444 -0.163,0 c 0.038,-0.069 0.088,-0.1795 0.1222,-0.2444 z m 13.0364,0 0.2037,0.082 -0.163,0.6518 -0.3259,-0.5703 0.2852,-0.163 z m 11.8143,0.041 0.4481,0.1222 -0.1222,0.4889 -0.4889,-0.1222 0.163,-0.4889 z m -5.8257,0.1629 0.2444,0.041 -0.1629,1.5889 -0.2852,0.1629 -0.1222,0.4889 -0.5296,2.5258 -0.6518,-0.6518 1.0999,-2.6481 -0.2444,-0.2851 0.082,-0.2037 0.5703,-1.0185 z m 0.9777,0.041 0.5704,0.1223 -0.2852,0.1629 -0.082,0.2037 -0.774,3.8702 -0.2852,0.163 -0.082,1.1406 -0.2037,0.7741 -0.5703,0 0.1629,-0.5704 c 0.2449,-0.096 0.4481,-0.2128 0.4481,-0.3666 l -0.2851,-0.2852 1.3851,-5.2146 z m -17.7214,0.2037 0.2445,0 0.041,0.163 -0.082,0.041 -0.1222,0 -0.082,-0.2037 z m 14.5438,0.1223 0.2037,0.041 -0.082,0.4481 -0.2444,-0.082 0.1222,-0.4074 z m 12.6291,0.041 0.2037,0.082 -0.082,0.4073 -0.2445,-0.082 0.1222,-0.4073 z m -29.8209,0.041 0.6518,0 0,0.2036 -0.6518,0 0,-0.2036 z m -2.0777,0.2036 1.0592,0 c -0.029,0.098 -0.082,0.1887 -0.1222,0.2852 l -0.937,0 0,-0.2852 z m 11.855,0 0,0.5297 -0.4888,0 0.4888,-0.5297 z m 24.3619,0.163 c -0.074,0.2764 0.1417,0.5131 0.5703,0.6518 l 0,-0.5296 -0.5703,-0.1222 z m -6.0701,0.3259 0.4481,0.1222 -0.3666,1.3037 -0.4482,-0.1222 0,-1.1815 0.3667,-0.1222 z m -17.0696,0.4481 0,0.4889 -0.2037,0 -1.6703,0.2444 c 0.035,-0.1863 0.075,-0.3749 0.082,-0.5703 l 1.7925,-0.163 z m 0.3667,0 0.6518,0.2037 0,0.2852 -0.8555,0 0.2037,-0.2852 0,-0.2037 z m 1.0184,0 0.041,0 0.2852,0.4482 -0.041,0.041 -0.2852,0 0,-0.4889 z m 1.8333,0 -0.082,0.326 -0.2852,0.041 0.1222,-0.326 c 0.073,-0.01 0.1596,-0.036 0.2444,-0.041 z m 10.2662,0 0.6518,0.3667 -0.082,0.2037 -0.4481,0.8555 c -0.076,0.6131 0.1199,0.9905 0.5296,1.1 l -0.1222,0.4073 -0.5296,-0.1222 -0.082,0.2852 0.2444,0.2852 -0.3667,0.1222 0.041,1.1814 -0.4888,1.7925 -0.5296,-0.1222 -0.4074,-1.3036 0.1222,-0.4889 0.2444,0.041 -0.1222,0.4889 0.4481,0.1222 0.041,-0.2037 -0.2851,-0.8148 0.2851,-0.1222 c 0.1186,-0.4435 -0.079,-0.7649 -0.5703,-0.8963 l 0.6518,-0.2851 -0.1222,0.4074 0.4889,0.1222 0.3666,-3.2184 0.041,-0.2037 z m -20.4917,0.1223 0.2445,0.041 0.1222,0.4888 -0.3259,-0.082 0,-0.3666 -0.041,-0.082 z m -7.7404,0.082 0.4482,0 -0.4482,0.5296 0,-0.5296 z m 1.3037,0 0.8148,0 c -0.013,0.016 -0.028,0.025 -0.041,0.041 -0.2573,0.2054 -0.343,0.304 -0.5704,0.4888 l -0.2037,-0.2444 0,-0.2852 z m 1.3036,0 0.3667,0 0.4074,0 0,0.2037 -0.082,-0.082 -0.4889,0.1222 0,0.2444 -0.082,0.041 -0.2037,-0.2444 -0.082,0 0.1629,-0.2852 z m 1.1407,0 0.6111,0 -0.041,0.2851 -0.5703,0 0,-0.2851 z m 7.2923,0 0.6518,0 -0.082,0.2444 0.1222,0.4481 -0.2852,0.041 -0.4073,-0.6518 0,-0.082 z m 1.2629,0 0.2037,0 0.082,0.2444 -0.2037,0.041 -0.082,-0.2852 z m 21.1434,0 0.8148,0 0.2445,0.041 -0.082,0.2036 -1.1,0.163 0.1222,-0.4074 z m -12.9142,0.082 0.2037,0.082 -0.082,0.4073 -0.2444,-0.082 0.1222,-0.4073 z m 5.2553,0 -0.082,0.2036 0.4889,0.1223 0.041,-0.2037 -0.4481,-0.1222 z m 10.144,0.3666 0.4889,0.1222 0.4074,0.5704 -0.6518,0.3259 0.2851,0.082 -0.6111,1.0184 c -0.3276,-0.088 -0.3629,-0.3713 -0.2444,-0.8147 l 0.2852,-0.163 0.041,-0.2037 0,-0.937 z m -1.3851,0.2852 0.2444,0.081 0.041,0.7333 -0.4481,-0.1222 0.163,-0.6926 z m -25.5025,0.041 0,0.4074 -0.2852,0 -0.082,-0.3259 0.3666,-0.082 z m 23.9137,0.041 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4482 z m -24.7285,0.082 0.082,0.2851 -0.2444,0 0,-0.2444 0.1629,-0.041 z m -8.2293,0.041 1.0185,0 c -0.101,0.084 -0.1917,0.1658 -0.2852,0.2444 l -0.7333,0 0,-0.2444 z m 2.0777,0 0.4481,0 0,0.2444 -0.611,0 0.1629,-0.2444 z m 7.8626,0 0,0.2444 -0.2037,0 -0.041,-0.163 0.2445,-0.082 z m 3.748,0 0.4074,0 0,0.2444 -0.4074,0 0,-0.2444 z m 1.0592,0 0.8148,0 0,0.2444 -0.8148,0 0,-0.2444 z m 22.3656,0.041 0.4482,0.1222 0.2851,0.2852 0.081,-0.4074 0.2445,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1629,0.2852 -0.1222,0.4888 c -0.3277,-0.088 -0.616,0.1421 -0.774,0.7333 l -0.3667,-0.611 0.3667,-1.3037 z m -31.0022,0.041 0.2851,0.2037 -0.2037,0.082 -0.082,-0.2852 z m -4.7257,0.082 0.041,0.082 -0.1223,0 c 0.027,-0.031 0.054,-0.05 0.082,-0.082 z m 31.98,0.041 0.5296,0.1629 -0.041,0.2037 -0.5296,-0.1222 0.041,-0.2444 z m -20.4917,0.041 0.3667,0 0,0.2851 -0.3667,0 0,-0.2851 z m 3.5443,0 0.2037,0 c 0.2933,0.1 0.5027,0.2543 0.6518,0.4888 l -0.082,0.1223 c 0.049,0.098 0.1129,0.1884 0.163,0.2851 l -0.3667,0 0,0.2445 0.5296,0.082 c 0.074,0.1378 0.168,0.2723 0.2445,0.4074 l -1.7925,0 0,-0.2037 c 0.5521,10e-5 0.8147,-0.2236 0.8147,-0.5296 l -0.3666,-0.4074 0,-0.4889 z m -9.2885,0.041 0.1223,0.4481 -0.2037,0.041 -0.082,-0.3259 0.1629,-0.163 z m -3.5035,0.082 0.082,0.4481 -0.4481,0.1222 -0.041,-0.1629 0.3259,-0.041 0,-0.326 0.082,-0.041 z m 1.6296,0.041 c 0.2851,1.0667 0.7124,1.5431 1.3036,1.3851 l 0.082,0.163 -0.163,0.2444 -0.2444,-0.1222 c -0.5964,0.7308 -0.8708,1.4517 -0.6926,2.1184 l -0.8555,-0.6518 0.6111,-0.163 -0.1222,-0.4074 c -0.3695,0.099 -0.5984,-0.098 -0.8148,-0.6111 l 0.9777,-0.7333 -0.4481,-0.9369 -0.041,-0.163 0.4074,-0.1222 z m 23.5878,0.2444 0.4481,0.1222 -0.082,0.2445 -0.4481,-0.1223 0.082,-0.2444 z m -14.9512,0.082 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.082 -0.041,0.163 -0.2037,-0.041 0.2444,-0.2037 z m -10.5514,0.041 c 0.1566,0.1293 0.3291,0.2464 0.5704,0.3667 l 0,-0.163 0.082,0.3667 0,0.082 -0.4482,0.1222 -0.2037,-0.7741 z m 23.2212,0.041 0.4481,0.1222 0,0.9778 -0.2852,0.1222 -0.041,0.2037 -0.1629,1.4666 -0.4074,0.5703 0.2037,0.2445 -0.3259,0.2036 0.3666,0.5704 -0.2852,0.1222 -0.2444,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4481,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.057 0.041,0.082 l -0.1222,0.082 0.1629,0.041 c 0.083,0.2038 0.1422,0.4408 0.163,0.6925 l -0.041,0.2037 -0.163,-0.2444 -0.2852,-0.082 -0.041,0.041 0.2445,-1.5481 0.774,-2.8517 0.4481,-0.8148 -0.2851,-1.0592 0.52959,0.163 0.32591,-2.0777 z m -28.4358,0.041 -0.041,0.4481 -0.2851,0.082 -0.2852,-0.1629 -0.2037,0.081 0.3667,0.4889 -0.4889,0.611 -0.3259,-0.4888 c 0.071,-0.017 0.1278,-0.041 0.2037,-0.041 l 0,-0.4889 -0.163,0 -0.2037,0.2852 -0.2037,0 0.3667,-0.6111 1.2629,-0.2037 z m 4.8072,0 0.163,0.6518 -0.2037,0.041 -0.2037,-0.611 0.2444,-0.082 z m -7.0885,0.2852 0.2037,0 0,0.2852 -0.2037,0.2444 -0.2445,0 0,-0.3259 c 0.078,-0.065 0.1634,-0.1301 0.2445,-0.2037 z m 32.5911,0.4074 1.5073,1.3444 -0.1222,0.4481 -0.5296,-0.163 -0.4889,1.7925 -0.2037,-0.041 0.4074,-2.485 -0.2852,0.1222 -0.3259,-0.082 0.041,-0.937 z m 4.4812,0 0.7741,0 -0.1222,0.4074 -0.6926,-0.2037 0.041,-0.2037 z m -27.4172,0.1222 0.041,0 0.2037,0.2037 -0.163,0.041 -0.082,-0.2444 z m 3.422,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.1629 c -0.014,0.06 -0.024,0.099 -0.041,0.163 l 0.4074,0.1222 c -0.1395,0.1292 -0.3455,0.163 -0.6518,0.163 l -0.2037,0 0,-0.2037 0.4888,-0.2445 z m -4.6442,0.041 0.6518,0.2037 0,0.4482 c -0.414,0 -0.6518,0.1829 -0.6518,0.4888 l -0.163,0 c 0,-0.4589 -0.1313,-0.7332 -0.4074,-0.7333 l 0,-0.2037 0.5704,-0.2037 z m 11.4476,0.041 0.3259,0.6111 -0.041,0.2037 -0.3259,-0.6111 0.041,-0.2037 z m -18.0881,0.041 0.5704,0.2852 0.6518,2.3629 0,0.082 -0.3667,-0.5296 -0.2037,0 0.5704,0.8555 0.041,0.6518 0.2852,0.1222 -0.3667,0.5704 -1.1814,-4.3998 z m 15.4401,0 0.2444,0.041 -0.2852,1.1 -0.2444,-0.041 0.2852,-1.1 z m -7.0886,0.1223 0.5703,0.2037 0,0.2444 -0.774,0 0.2037,-0.2444 0,-0.2037 z m -9.2885,0.2037 0.4889,0.4888 0.041,0.163 -0.4889,0.1222 -0.1629,-0.6518 0.1222,-0.1222 z m 1.9962,0.1222 0.3259,0.3259 0,0.082 0.082,0.041 0.2037,0.2444 -0.1629,0.163 0.6518,2.3628 -0.2852,-0.1629 -0.8147,-3.0554 z m -7.8218,0.082 0.082,0.3666 -0.2037,0.041 -0.082,-0.3666 0.2037,-0.041 z m 2.4443,0.2037 -0.082,0.611 0.082,0.2445 0.2444,0.1629 c -0.7759,0.2075 -1.0756,0.7481 -0.937,1.7111 l 0.3667,0.5703 -0.2037,0.041 0.5703,0.2444 -0.1629,1.3037 0.082,0.2852 0.2444,0.1222 -0.2037,0.041 0.5704,0.8555 c -0.141,0.1125 -0.2864,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4073,-0.1223 -0.2036,-0.8147 -0.4482,0.1222 -0.2037,-0.8148 0.4074,-0.1222 -0.1222,-0.4481 -0.6518,0.2036 0.082,0.4482 -0.2037,0.041 -0.163,-0.6111 c 0.1174,-0.7457 0.3563,-1.1839 0.6519,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.163,-0.6111 0.2037,-0.041 1.3444,-2.0369 z m 31.3282,0.2037 0.2444,0.041 0.2445,0.2851 0.2851,-0.1222 0.6926,0.163 0.4481,2.2813 -0.041,0.2037 0.2852,0.082 0.2852,-0.1222 0.2444,0.041 -0.6926,2.6481 c -0.6158,-0.323 -0.8481,-0.9057 -0.611,-1.7926 l -0.2037,-0.082 0.2851,-0.1222 0.1223,-0.4888 0.082,-1.1815 -0.5704,-0.1222 -0.6925,2.6888 0.2444,0.2852 -0.3667,0.1222 -0.041,0.2037 0.2037,2.1999 -0.8147,0 c -0.1161,0.5673 -0.1894,1.0843 -0.2445,1.5073 -0.1694,0.1076 -0.2849,0.3972 -0.4074,0.8555 l -0.3259,0.1222 -0.4481,-0.1222 -0.163,-0.937 0.5704,-0.4888 0,-0.1223 c 0.055,0.088 0.1486,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2036 0.2444,-1.874 0.3666,-0.5296 0.7333,-3.6258 0.2445,-0.8963 -0.4482,-0.1222 -0.3666,1.3444 -0.3667,0.1222 0.2445,0.2852 -0.1222,0.4889 -0.5296,-0.163 0.8147,-3.0961 z m -9.207,0.1222 0.2037,0.041 -0.2444,0.8962 -0.2852,0.163 -0.2037,-0.082 0.5296,-1.0185 z m 6.0701,0 0.2037,0.041 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -24.9729,0.082 0.2037,0.8148 -0.2037,0.041 -0.2445,-0.7741 0.2445,-0.082 z m -6.7219,0.041 0.041,0 0.1222,0.4481 -0.2037,0.041 -0.041,-0.1222 c 0.028,-0.1061 0.05,-0.2304 0.082,-0.3259 0,-0.013 0,-0.028 0,-0.041 z m 34.2614,0.041 0.2444,0.041 -0.2037,0.6925 -0.2037,-0.041 0.163,-0.6925 z m -26.5618,0.041 0.1222,0.4481 -0.3259,0.4889 -0.082,-0.3667 0.2852,-0.5703 z m 13.892,0.082 0,0.041 -0.3259,0.2037 -0.2037,-0.041 c 0.011,-0.041 -0.01,-0.084 0,-0.1222 0.1891,-0.018 0.3782,-0.056 0.5296,-0.082 z m -11.7328,0.2444 0.1222,0.1222 -0.2037,0.082 -0.041,-0.1629 0.1222,-0.041 z m 27.1321,0.1222 0.774,0.2037 -0.041,0.2445 -0.774,-0.2037 0.041,-0.2445 z m -8.7182,0.041 0.5704,0.163 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2445 z m -15.4807,0.041 0,0.6111 0.4481,0 c 0,0.3379 0.036,0.6266 0.1222,0.8148 -0.2101,0.043 -0.4005,0.095 -0.5703,0.1629 l 0,-0.041 -0.3667,-0.4073 -0.6518,0.2036 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2444,-0.8963 1.3443,-0.1629 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.6518 c 0.3992,-0.2211 0.701,-0.4734 0.8148,-0.774 0.071,0.093 0.1312,0.1937 0.2037,0.2852 l -0.3667,0.041 0,0.4481 0.4074,0 0.2445,0.2852 0.1629,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2852,0.326 l 0.041,0.1629 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2445,0.1222 -0.081,0.163 -0.6518,-0.1223 c -0.065,-0.1287 -0.1069,-0.2443 -0.1222,-0.3666 l 0.3259,0 0.3666,0.082 0.041,-0.2037 -0.2851,-0.5296 c -0.2712,-0.072 -0.5058,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.163 c -0.064,0 -0.1437,-0.01 -0.2037,0 l -0.5296,-0.6111 -1.0592,0.2037 -0.7741,-0.2037 -0.4481,0.4481 -0.163,-0.2444 0,-0.2037 c 0.2416,0 0.4327,0.016 0.6111,0 0.5354,-0.049 0.7741,-0.1779 0.7741,-0.4074 z m 16.2956,0 0.2444,0.082 -0.2444,0.8963 -0.2445,-0.082 0.2445,-0.8963 z m -19.9621,0.4074 0,0.4481 0.4074,0 0,-0.4481 -0.4074,0 z m -1.548,0.082 0.2444,0.2852 -0.2037,0.3666 -0.163,-0.5296 0,-0.082 0.1223,-0.041 z m -10.5107,0.1222 0.041,0.3259 -0.1629,0.041 0.1222,-0.3666 z m 21.8361,0 0.1629,0 0,0.2445 -0.1629,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.774,1.8333 -0.5296,0.3259 -0.2852,-1.5073 -0.1222,-0.4482 -0.2444,-0.1222 -0.163,-1.4258 0.2037,-0.041 z m -0.8963,0.041 1.1407,4.2369 -0.3259,-0.082 0,-0.082 -0.2852,-0.163 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4888,-0.1222 z m 19.8806,0.082 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2233,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.981,0.2445 0.2444,0.041 -0.1629,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8137,0.082 0.3666,0 c -0.096,0.1753 -0.2074,0.2729 -0.3666,0.2852 l 0,-0.2852 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7257,0.082 0.3259,0.6111 -0.1222,0.4073 -0.4481,-0.1222 0.2444,-0.8962 z m 1.0185,0.2851 0.2037,0.041 c -0.079,0.2957 0.1603,0.5612 0.6518,0.6926 l -0.2444,0.8963 c -0.1374,-0.1603 -0.2848,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4482,-0.1222 0.2445,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4482 -0.1629,-0.082 0.082,-0.4074 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.065 -0.1747,-0.1266 -0.2444,-0.2037 z m -7.4144,0.1223 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1223,-0.041 0.163,-0.081 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.611,0.2444 c -0.4434,0.1186 -0.6364,0.4148 -0.5296,0.8148 l 0.2445,0.1222 -0.2445,0.7333 0.041,0.2037 0.4482,-0.1222 -0.1223,-0.4481 0.2037,-0.041 0.1223,0.4481 -0.3667,1.1407 -0.3666,-0.082 c -0.056,0.071 -0.069,0.1343 -0.1223,0.2037 l -0.4481,-1.5888 0.041,-1.1 -0.3259,-0.081 0.2037,-0.2851 -0.041,-0.2445 -0.4889,0.1222 -0.082,-0.1629 0,-0.082 0,-0.163 c 0.3324,-0.117 0.5134,-0.4115 0.4482,-0.937 l -0.4482,-0.774 -0.041,-0.163 0.5704,-0.3666 z m 31.1652,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1222,0.3666 -0.2037,0.041 -0.1222,-0.3666 0.2037,-0.041 z m 8.5144,0.041 0.2037,0.082 -0.2444,0 0.041,-0.082 z m 16.9067,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.1629,-0.6926 0.4482,0.5704 -0.5704,0.8148 -0.1629,1.8739 -0.4482,0.5297 -0.2444,-0.041 c 0.5137,-1.9216 0.411,-2.921 -0.2444,-3.0962 l 0.2037,-0.6926 z m -20.0436,0.082 0.2037,0 -0.1222,0.4481 -0.1629,0 0,-0.2037 0.082,-0.2444 z m 1.7926,0 0.2037,0 c 0.1368,0.1613 0.1865,0.3854 0.1629,0.6518 l -0.1222,0 -0.2444,-0.6518 z m -2.5666,0.1222 0.2037,0.3667 -0.2852,-0.082 0.082,-0.2852 z m 12.5476,0.163 0.2444,0.082 0.2852,0.2037 -0.163,0.2444 c -0.1007,-0.099 -0.2133,-0.1792 -0.3259,-0.2444 l -0.041,-0.2852 z m -7.1701,0.1629 0.2852,0 c 0,0.072 0.024,0.1466 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1222 -0.3259,0 -0.082,-0.1222 z m -6.7219,0.1222 0.2037,0.082 -0.082,1.2222 -0.082,0.2037 -0.2037,-0.082 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2852 z m 14.6253,0.041 0.3259,0.082 -0.163,0.6519 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3586,0.041 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.163 0.1222,0 0.1223,0.1629 0.082,0.2852 -0.3259,-0.4074 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.1629,0 0.041,-0.2037 z m -5.2553,0.1629 -0.041,0.2445 c -0.1412,0.6766 -0.1364,1.0308 0.1222,1.0999 l -0.2444,0.2037 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.163,-0.5703 0.4482,-0.081 c -0.206,-0.7706 -0.1475,-1.243 0.1222,-1.3444 z m 1.874,0 0.041,0.1223 0.082,-0.082 0.163,0.6518 0,0.1222 -0.4889,0.7333 0.2852,0.082 -0.3259,0.1222 -0.082,0.2445 0.2444,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8555 -0.6518,1.3037 0.2444,0.2852 -0.4888,-0.163 0.3666,-1.3444 -1.1814,0.7333 0.2444,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6925 c 0.08,-0.4994 0.011,-0.798 -0.2037,-0.8555 l 0.2852,-0.1629 0.041,-0.2037 0.2037,-1.3037 c 0.1374,-0.1299 0.2764,-0.2714 0.4074,-0.4074 l 0.4481,0.326 c -0.053,-0.2116 -0.1577,-0.3754 -0.2444,-0.5296 0.051,-0.055 0.1128,-0.1065 0.1629,-0.163 l 0.2445,0.041 0.082,-0.3667 0.3666,-0.1629 -0.1629,-0.163 c 0.072,-0.092 0.1339,-0.1912 0.2036,-0.2851 l 0.7333,0.041 0.163,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.1351,-0.2161 0.2037,-0.3259 l 0.2852,0.082 0.2852,-1.0593 c 0.1084,-0.1999 0.2226,-0.4049 0.3259,-0.611 l -0.1223,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4889,0 c 0.012,-0.071 0.03,-0.1354 0.041,-0.2037 l 0.2445,-0.2444 z m -22.1619,0.041 0.082,0.2852 -0.082,0 0,-0.2852 z m 30.4319,0.2037 0.4889,0.1223 -0.4074,0.9369 c -0.091,-0.1361 -0.2088,-0.2648 -0.3667,-0.3666 l 0.2852,-0.6926 z m -10.8773,0.163 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9778,0.041 0.4073,0.1222 -0.041,0.163 -0.2037,0.041 -0.1629,-0.2852 c 0.01,0 -0.01,-0.038 0,-0.041 z m -8.3923,0.3259 0.4074,0.082 -0.1629,0.6518 -0.2852,-0.5703 0.041,-0.163 z m 23.9138,0.041 c 0.4519,0.2792 0.6049,0.7683 0.4074,1.5073 l -0.5297,1.0593 c -0.1997,1.1223 -0.2914,1.891 -0.2851,2.4035 l -0.163,-0.041 0.041,-0.774 0.1222,-0.4889 -0.3666,-0.774 0.8962,-2.1184 -0.1222,-0.7741 z m -21.8361,0.1222 0.2445,0 0,0.2037 -0.2445,0 0,-0.2037 z m 12.0995,0 0.041,0 -0.163,0.5704 c -0.02,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.9621,0.041 0.2037,0.041 0.1222,0.2444 -0.3666,-0.1222 0.041,-0.1629 z m -4.1146,0.2037 0.041,0.2037 -0.2852,0.5296 -0.041,-0.1629 0.2852,-0.5704 z m 3.6258,0 c 0.1217,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.163,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2444,0.082 -0.1222,0.4889 -0.2445,-0.082 0.1223,-0.4889 z m -25.4618,0.082 c 0.1305,0.01 0.2859,0.02 0.4481,0.041 l -0.1222,0.3667 c -0.2956,-0.079 -0.55,0.1592 -0.6926,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2132,-0.256 0.4889,-0.2852 l 0.3666,0 -0.041,-0.041 z m 14.0141,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1477,0.041 0.2851,0 -0.1222,0.5296 -0.2444,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5703,0 0,0.082 -0.3666,0.5704 0.1222,0.1629 -0.6111,-0.1629 c 0.107,-0.1606 0.1904,-0.4143 0.2852,-0.6519 z m 1.0592,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2406,0 0.4889,0 -0.1222,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.1629 0.041,0.4482 -0.163,0.041 c -0.1808,-0.2054 -0.2427,-0.4948 -0.2037,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.016,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.326,0 -0.041,0.2037 -0.2445,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4889,0.1222 -0.041,-0.5296 0.2445,-0.041 0,-0.4888 -0.2852,0.041 -0.041,-0.2445 z m -7.6996,0.082 0,0.7741 c -0.2652,-0.083 -0.4074,-0.289 -0.4074,-0.6519 0.1827,1e-4 0.3,-0.043 0.4074,-0.1222 z m 5.5405,0 0.4074,0.1222 -0.082,0.3667 -0.4482,-0.1222 0,-0.041 0.163,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6518 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2445 0,0.2851 -0.041,0.082 -0.2037,-0.041 0.041,-0.2036 0.2444,-0.3667 0.163,-0.2852 -0.4482,-0.1222 0.5704,-0.2852 z m -18.8214,0.082 c 0.092,0.016 0.1762,0.041 0.2852,0.041 l 0,0.6518 -0.2444,-0.082 -0.041,0.1223 -0.1223,0 0,0.4481 0,0.082 0.4482,0.1222 0.041,-0.2037 0.1629,0 -0.5296,0.774 -0.2444,-0.3259 -0.082,0.3667 0.2444,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.155,0.076 -0.2587,0.227 -0.2852,0.4481 l -0.041,0.1223 -0.1629,0 c 0,-0.03 0.01,-0.052 0,-0.082 l 0.082,-0.4482 -0.163,-0.041 c -0.084,-0.4331 -0.1524,-0.7924 -0.2444,-1.0592 l 0.4481,-1.6295 z m -7.2922,0.4481 c 0.2126,0.1197 0.3123,0.3225 0.2851,0.6111 l -0.2037,-0.1222 -0.082,-0.4889 z m 18.3324,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1372 -0.06,0.2832 -0.082,0.4074 -0.092,0.016 -0.1761,0.041 -0.2851,0.041 l 0,0.4889 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2852,0 0.1222,0.041 0,0.4074 -0.2037,0 0,0.2037 0.082,0.3667 c -0.1678,-0.1492 -0.2705,-0.4892 -0.2851,-1.0185 z m 25.3396,0.041 0.4481,0.1223 -0.1222,0.4073 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9355,0.041 c -0.044,0.049 -0.077,0.1097 -0.1222,0.163 l -0.041,-0.1222 0.163,-0.041 z m -0.8962,0.041 0.4481,0.937 -0.2037,0.041 -0.082,-0.041 c 0.011,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.082 -0.2037,-0.6925 0.2444,-0.041 z m 17.5177,0 0.4074,0.1223 -0.082,0.2444 -0.3667,-0.2444 0.041,-0.1223 z m 0.7333,0 0.2037,0.082 -0.1222,0.4074 -0.2037,-0.041 0.1222,-0.4481 z m 7.1293,0.082 0.082,0.1222 0.2852,0.082 0.082,-0.041 -0.2037,1.3444 -0.6926,2.5258 -0.2444,0.4889 -0.082,-0.3666 0.2037,-0.2852 -0.2037,-0.2037 -0.2445,0.082 -0.1629,-0.2852 0.2851,-0.1222 0.2037,0.041 0.041,-1.0592 0.2852,-0.9777 0.4074,0.082 0.1222,-0.5297 0.041,0 0,-0.082 c -0.1251,-0.2296 -0.1809,-0.5083 -0.2037,-0.8147 z m 3.0554,0.041 0.2444,0.082 -0.082,0.2445 0,0.041 -0.1629,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4074,0.1222 -0.1222,0.3667 -0.2852,-0.4889 z m -10.6329,0.3259 0.041,0.163 -0.1222,0.041 0,-0.163 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3667 0.2037,0.041 -0.2444,0.1222 -0.1222,0.4889 -0.163,-0.6111 0.2037,-0.4889 z m 27.4173,0 0.3666,0.082 c -0.05,0.1858 -0.025,0.3353 0,0.4482 l -0.3259,-0.082 c 0.053,-0.2001 0.019,-0.3354 -0.041,-0.4482 z m -3.9517,0.082 0.041,0 c -0.023,0.1203 -0.051,0.2388 -0.082,0.3667 l -0.041,0 0.082,-0.3667 z m -17.314,0.041 0.2037,0.041 -0.2444,0.8148 -0.2037,-0.041 0.2444,-0.8148 z m 14.7475,0.041 c 0.1067,0.099 0.2579,0.168 0.4074,0.2445 l -0.163,0.3259 -0.163,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1096,-0.09 -0.1629,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.163 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4688,0 0.3259,0.5296 -0.4481,-0.1222 0.1222,-0.4074 z m -33.2429,0.3666 0.041,0.1223 -0.1629,-0.041 0,-0.041 0.1222,-0.041 z m 6.7627,0.163 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4514,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1708,0.032 -0.2444,0.041 l 0.2444,-0.8963 0.2037,-0.041 z m 1.5888,0.1629 c 0,0.051 0,0.1084 0,0.163 -0.1404,0.1712 -0.5033,0.2872 -1.0185,0.4074 l 0.082,-0.2444 0.937,-0.326 z m 8.5959,0.1223 c 0.1067,0.1843 0.2375,0.3374 0.3667,0.4888 l 0,0.1222 0.1629,0.041 c 0.068,0.069 0.1302,0.1437 0.2037,0.2037 l -0.163,0.6519 -0.2036,-0.041 c 0.071,-0.2668 -0.1677,-0.4926 -0.6111,-0.6111 l 0.2444,-0.8555 z m 1.0185,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5812,0.041 0.4481,0.1222 -0.041,0.2037 -0.4888,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1222,0.4481 0.2445,0.8963 -0.4482,0.7333 0.3259,-0.1223 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 -0.2037,-0.2444 -0.2444,-0.082 -0.082,0.4481 -0.2444,-0.041 0.6518,-2.4036 z m -1.2222,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5704 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2036,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6926,0.163 0.082,-0.2037 -0.6926,-0.2037 z m -28.6801,0.082 c 0.026,0 0.055,0 0.082,0 -0.126,0.1796 -0.3024,0.3289 -0.5296,0.4481 l -0.041,-0.2037 c 0.1447,-0.1144 0.3061,-0.2068 0.4888,-0.2444 z m 13.3623,0.2037 c 0.1273,0.1138 0.2392,0.2232 0.2852,0.3259 l -0.2852,-0.082 0,-0.2445 z m -12.9549,0.2037 0.041,0 0.3259,0.1222 c 0.028,0.1064 0.051,0.1975 0.082,0.2851 l -0.2037,0.7741 -0.2037,-0.041 c 0.1426,-0.5334 0.011,-0.858 -0.2852,-0.937 l -0.2037,0.082 0.041,-0.163 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5666,0.041 0.082,0.2444 -0.1222,-0.041 0.041,-0.2037 z m 13.4438,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.1629,0.1629 0,-0.4888 z m 8.5552,0 0.3666,0 -0.041,0.1629 -0.4073,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0185,0 0.4074,0 0,0.2036 c -0.1952,10e-5 -0.3609,0.036 -0.4889,0.082 l 0.082,-0.2851 z m -19.4325,0.082 0.163,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8105,0.1222 0,0.5296 -0.041,0.041 -0.041,0.1629 -0.2444,0 0.2037,-0.6925 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1222 -0.2444,0 -0.2852,-0.041 -0.082,0.041 -0.2852,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2851 z m 3.0554,0.1629 -0.082,0.3667 -0.3666,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.0441,0 c 0.6944,0.3642 0.9331,1.0147 0.6925,1.9148 l -0.4888,-0.1223 -0.163,0.5296 0.3666,0.5704 -0.8555,1.2629 0.2037,0.041 -0.2444,0.1222 -0.082,0.2852 0.1629,1.3036 -0.5703,0.2445 0.2037,0.041 -0.3667,0.5703 c -0.1386,0.963 0.1611,1.5036 0.937,1.711 l -0.2444,0.163 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2037,-0.041 0.163,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.1629,-0.6111 0.2037,0.041 -0.082,0.4482 0.6926,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.2037,-0.8148 -0.4074,-0.1222 0.082,-0.3667 0.4482,0.1222 0.082,-0.3666 -0.4074,-0.1222 0.1629,-0.6111 c 0.3696,0.099 0.5984,-0.1382 0.8148,-0.6518 0.1069,-0.4 0,-0.6148 -0.4481,-0.7333 l 0.1629,-0.6111 z m -24.5248,0.041 0.4888,0.1223 -0.4074,0.5703 -0.2444,-0.082 0.163,-0.6111 z m 23.3026,0 c 0.1376,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.7029,0.082 0.6518,0 0.2037,0.2445 0.1629,0 -0.1629,0.6111 -0.6111,0 -0.2444,-0.8556 z m 5.7034,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8887,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2444,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6367,0.082 0.6519,0.3667 -0.2852,1.0185 -0.2037,-0.082 -0.2444,-0.937 0.082,-0.3667 z m 20.8991,0 0.4888,0.1223 0.3667,1.1406 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 -0.4481,-0.1222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5704,0.2444 0.082,-0.3666 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5703,-0.3259 0.082,-0.2037 0.4074,-0.774 c 0.069,-0.5531 -0.1194,-0.879 -0.4889,-0.9777 l 0.1222,-0.3667 0.4889,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4481,-1.5889 z m -18.9843,0.041 0.4074,0.1223 -0.041,0.2036 -0.4074,-0.1222 0.041,-0.2037 z m 11.2032,0 0.1629,0 c 0.066,0.059 0.1536,0.1174 0.2444,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2851,-0.5296 0,-0.041 z m -19.9621,0.041 0.3259,0.4889 -0.2444,-0.2444 -0.2037,-0.041 0.1222,-0.2037 z m 1.1,0.082 0.1629,0.041 0,0.163 -0.1629,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0837,0 c 0.044,0.1029 0.088,0.1838 0.163,0.2037 l 0.2037,0.041 0,0.4482 -1.7111,6.3552 -0.4888,-0.1222 0.2851,-0.1222 0.041,-0.2037 0.6926,-3.4628 0.2852,-0.1222 0.041,-1.0592 0.4888,-1.9555 z m 1.0185,0 0.2037,0.041 -0.2037,0.6519 -0.2037,-0.082 0.1629,-0.5704 0.041,-0.041 z m -15.6437,0.1222 0.041,0.4482 -0.1222,0.041 -0.082,-0.3259 0.1629,-0.163 z m 12.792,0 0.2037,0.041 -0.1223,0.3667 -0.2037,-0.041 0.1223,-0.3667 z m -9.5737,0.041 c 0.1347,0.034 0.3237,0.061 0.4889,0.082 l -0.1222,0.4889 -0.4481,-0.1629 0.082,-0.4074 z m -20.9805,0.326 0.4889,0.1222 -0.082,0.2037 -0.163,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5704 l -0.2037,-0.8147 0.041,-0.3259 z m 3.2999,0.041 0.4481,0.082 c -0.1069,0.3999 -0.01,0.695 0.2852,0.774 l -0.041,0.2037 c -0.4434,-0.1186 -0.7027,-0.1037 -0.7741,0.1629 l -0.2037,-0.041 -0.082,-0.611 0.3667,-0.5704 z m 16.8251,0.041 0.2852,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7697,0.1629 0.2037,0.041 -0.041,1.0592 -0.4074,-0.1222 0.2444,-0.9777 z m 20.125,0.2037 0.4481,0.163 -0.041,0.1629 -0.4889,-0.1222 0.082,-0.2037 z m 3.0961,0 0.2037,0.041 -0.4481,0.937 -0.2037,-0.041 0.2037,-0.8148 0.2444,-0.1222 z m -19.5139,0.1222 0.937,0.041 -0.1222,0.5704 -0.9777,0 0.1629,-0.6111 z m 8.5959,0.163 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.326,0 0,0.2037 -0.3667,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2851,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1326,-0.4345 0.1629,-0.6111 z m -4.3183,0.1629 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m 32.3059,0 0.2037,0.041 c -0.1069,0.4 -0.01,0.6951 0.2852,0.7741 l -1.4259,3.5035 0.2037,0.2444 -0.041,0.2037 -0.5296,0.8963 -0.2037,-0.041 0.163,-1.4259 0.2444,-0.1222 0.1222,-0.4481 0.6926,-3.4221 0.2852,-0.2037 z m -35.3613,0.1222 0.1222,0.8556 0.2037,0.1222 c -0.012,0.096 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1371 0.041,0.2036 l -0.3666,0.163 c -0.01,-0.044 -0.031,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.1629,-1.3444 z m 9.4514,0.041 0.6111,0.163 -0.041,0.2037 -0.6926,0.082 0.1223,-0.4481 z m -4.8072,0.2445 0.2037,0.082 -0.1629,0.5296 -0.2037,-0.041 0.1629,-0.5703 z m 28.9654,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9778 z m -20.4917,0.1222 0.3667,0.5296 -0.163,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.412,0.5666 -0.8555,0.4481 0.107,-0.4 -0.01,-0.6555 -0.4481,-0.7741 l 0.041,-0.2036 0.4074,0.1222 0.1629,0.2444 c 0.08,-0.3 0.4464,-0.4543 1.1,-0.5296 z m 10.8365,0.2037 0.1223,0 0,0.1222 -0.1223,-0.1222 z m 13.118,0 0.8962,0.2444 -0.4481,1.7518 c -0.2956,-0.079 -0.3768,-0.5444 -0.163,-1.3444 l -0.4481,-0.082 0.163,-0.5703 z m -6.1516,0.041 0.2852,0.5296 -0.041,0.2037 -0.2852,-0.5704 0.041,-0.1629 z m -28.558,0.082 -0.2036,1.6296 -0.8148,0.2444 0.2444,-0.8963 c 0.4491,-0.2229 0.7308,-0.5468 0.774,-0.9777 z m 0.6926,0 0.2444,0.082 -0.082,0.3666 -0.2851,-0.082 0.1222,-0.3666 z m 21.8768,0.041 0.1629,0.041 0,0.2444 -0.4074,0 0.2445,-0.2851 z m -9.5329,0.041 0.2037,0 0.1629,0.2444 -0.2851,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9664,0.2444 0.4889,0.1222 -0.082,0.2445 -0.5296,0.937 -0.163,-0.2445 -0.2036,-0.082 -0.5297,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.611,0.4482 l -0.163,-0.2445 -0.2037,-0.041 -0.2444,0.1222 0.2037,-1.6295 0.6111,0.1629 0.1222,-0.4073 c 0.739,0.1975 1.156,0.074 1.2629,-0.326 z m 2.8518,0.1222 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1222,-0.4074 z m 6.6404,0.041 0.2037,0.082 -0.082,0.4074 -0.2445,-0.041 0.1223,-0.4481 z m -9.2885,0.1223 0.2037,0.082 -0.2444,0.082 0.041,-0.163 z m -0.041,0.2851 0.163,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2066 -0.1299,0.3083 -0.3259,0.3667 l -0.5296,0.041 0,-0.163 0,-0.041 0.8555,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1749,0.1109 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.1223 -0.2037,0.8147 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.1629,-0.2444 0.1222,-0.4481 c 0.1892,0.051 0.3495,-0.044 0.4889,-0.2445 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.098,0.3379 -0.3274,0.5986 -0.6518,0.7333 l -0.1222,-0.041 0.4481,-0.774 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.1222 c 0.2001,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3667 -0.2037,-0.041 0.082,-0.3667 z m -26.8469,0.082 0.4074,0.1223 -0.1222,0.4481 -0.4074,-0.1222 0.1222,-0.4482 z m 9.7366,0.1223 0.1629,0 -0.1629,0.5703 0,-0.5703 z m -11.9773,0.1629 -0.082,0.3667 0.4074,0.1222 0.1223,-0.3667 -0.4482,-0.1222 z m 4.9702,0.041 0.6925,0.2037 -0.1222,0.3667 0.4482,0.1222 0.1629,-0.6111 0.3259,0.3666 c -0.3477,0.1724 -0.5886,0.4468 -0.7333,0.8148 -0.062,0.026 -0.089,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1402,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2037,-0.041 c 0.071,-0.1146 0.1184,-0.2814 0.163,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2445 -0.4074,-0.1223 0.082,-0.2444 z m -14.4215,0.2037 0.1222,0.041 c -0.043,2e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2444 0.4481,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.1629 z m 20.1657,0 0.163,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.163,0.2445 0.2037,0.041 c 0.1185,0.032 0.2232,0.042 0.3259,0.041 -0.1474,0.093 -0.2951,0.1253 -0.4889,0.082 l -0.2037,0.6518 c 0.3876,0.088 0.6345,0.219 0.774,0.4481 l -0.4888,0.2444 0.4074,0.082 0.082,-0.2851 c 0.1221,0.2248 0.1522,0.5026 0.041,0.8555 l 0.6518,0.1629 -0.3666,1.1 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2445,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2852,-0.326 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.7811 0.2445,-0.041 -0.2852,0.9777 0.6518,0.1222 0.4074,-1.3036 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1223 0.2852,-0.041 0.082,-0.2036 -0.2445,-0.082 0.163,-0.5704 -0.2037,-0.2852 0.082,-0.2037 0.2852,-0.082 z m 6.6812,0.041 0.2037,0.041 -0.041,0.1222 -0.163,-0.1629 z m 7.8626,0 0.041,0.163 -0.2852,-0.082 0.2444,-0.082 z m -20.0435,0.1223 0.4481,0.774 -0.3259,0.1629 -0.163,-0.041 0.041,-0.8962 z m -0.6926,0.041 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.041 0.1222,-0.4481 z m 19.8806,0.1629 -0.082,0.2444 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3852,0.1222 0.082,0.1222 0,0.2852 -0.4481,-0.1222 0.163,0 0.2037,-0.2852 z m 3.8702,0.1222 0.2445,0.082 0,0.2852 0,0.6518 0,0.1223 -0.3259,0.1222 -0.4074,-0.082 0.2851,-1.1407 0.041,0 c 0.064,-0.01 0.1028,-0.032 0.163,-0.041 z m -25.3803,0.1223 0.3667,0.4888 -0.4889,-0.1222 0.1222,-0.3666 z m 35.4021,0.041 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -11.4476,0.1222 -0.041,0.2037 -0.7741,0.081 -0.2037,-0.081 0,-0.041 1.0185,-0.163 z m 6.4367,0 -0.041,0.2037 0.4074,0.081 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3666,0.082 -0.2444,0.6926 -0.3259,-0.082 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6068,0.082 0.2037,0.041 -0.3666,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2445,-0.5703 l 0.041,-0.326 0.3667,-0.4888 z m 10.307,0.082 0.2444,0.082 -0.1222,0.4481 -0.2852,-0.041 0.163,-0.4888 z m 2.1184,0.041 0.2444,0.041 -0.082,0.2444 0.041,0.163 c -0.01,0.1969 0.032,0.3372 0.1222,0.4481 l 0,0.082 -0.1629,0 -0.4074,0.4482 -0.2037,0 0.2444,-0.8556 0.163,-0.2851 -0.041,-0.041 0.081,-0.2445 z m 1.3851,0.041 0.2444,0.2852 0,0.2852 c -0.1625,-0.1175 -0.2809,-0.2535 -0.4073,-0.3667 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2851,0.041 -0.1629,0.4889 -0.2444,-0.082 0.1222,-0.4481 z m 13.9734,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.1629 -0.2037,0 c 0.013,-0.1554 0.042,-0.3219 0.041,-0.4482 z m -16.54,0.082 -0.1222,0.3667 -0.041,1.4258 -0.65179,0.8148 0.36659,0.082 -0.44809,0.1222 -0.082,0.2445 0.2852,0.3259 -0.041,0.2037 -0.57039,0.611 0.082,0.9778 -0.8555,1.4258 0.2852,0.2852 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8555 0.2852,0.2852 -1.0185,0.4481 c -0.1112,-0.2192 -0.218,-0.4175 -0.3259,-0.6518 -0.01,-0.011 0,-0.03 0,-0.041 l 0.1222,-0.774 0.2852,0.082 0.6925,0.4481 c -0.2005,-0.6795 -0.5592,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6925 c 0.015,-0.046 0.027,-0.077 0.041,-0.1223 l 0.1223,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.1079,-0.4497 0.1629,-0.6518 l 0.163,-0.1222 0.041,-0.2037 -0.041,-0.1222 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.6111 0.2165,-0.041 0.45,-0.1549 0.6925,-0.3666 -0.087,0.5222 -0.036,0.8328 0.2445,0.8962 l -0.3259,0.2037 -0.041,0.082 c -0.1806,0.1124 -0.3752,0.2435 -0.5297,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.3259,1.6703 0.57039,0.1222 0.12221,-0.4074 0.44808,-0.2037 -0.2852,-0.2851 -0.28511,-0.082 0.082,-0.2037 1.5073,0.1222 0.2037,-0.6926 -0.52959,-0.1222 0.1222,-0.4074 0.57039,0.1222 0.3666,-1.1406 0.2444,-0.163 -0.2037,-0.041 0.4889,-1.5481 0.3259,-0.1222 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3667 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.163,0.2444 0.2037,0.082 0.3259,-0.1222 -0.041,0.163 c -0.3962,0.037 -0.7257,0.1179 -0.9778,0.2037 l -0.041,0 -0.16291,-0.041 0.28521,-0.4482 0.24441,-0.082 z m -12.01791,0.082 0.611,0.1222 -0.12221,0.4074 -0.48879,-0.5296 z m 3.9516,0.1222 0.3259,0.082 -0.041,0.163 -0.2851,0.082 0,-0.041 0,-0.2852 z m 4.80719,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8105,0.082 0.2852,0.082 -0.082,0.6111 -0.36659,0.1222 0.041,-0.4074 0.12221,-0.4074 z m 29.5765,0.041 0.2036,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1223,-0.3667 z m -7.4553,0.3259 0.40741,0.1223 -0.082,0.4481 -0.40741,-0.2445 0.082,-0.3259 z m -26.35799,0.041 0.4074,0.1223 -0.082,0.2036 -0.40741,-0.1222 0.082,-0.2037 z m 1.6703,0 0.2037,0.2445 -0.041,0.2037 -0.3259,-0.3259 0.1629,-0.1223 z m 18.16949,0.041 c 0.1619,0.088 0.2758,0.1839 0.4889,0.2852 -0.019,0.058 -0.041,0.1396 -0.041,0.2037 l -0.52959,0 c 0.031,-0.1732 0.06,-0.3361 0.082,-0.4889 z m -3.2591,0.2037 0.16301,0 0,0.041 -0.16301,-0.041 z m -12.1402,0.2037 -0.082,0.5704 -0.041,0.2444 -0.2851,-0.082 0.041,-0.6111 0.3666,-0.1222 z m -3.2998,0.082 0.2444,0.041 -0.1222,0.4889 -0.2852,-0.041 0.163,-0.4889 z m 10.7143,0.041 0.73329,0.163 0,0.082 -0.082,0.2444 -0.082,0.1222 0,0.163 0,0.041 -0.12221,0.2852 -0.082,0 -0.2037,-0.2852 c 0.017,-0.3233 -0.065,-0.5992 -0.163,-0.8148 z m 20.00279,0 c -0.17819,0.6667 0.096,1.3876 0.6925,2.1184 l 0.24451,-0.1222 0.1629,0.2445 -0.041,0.1629 c -0.2463,-0.066 -0.4957,0.012 -0.6925,0.163 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3667,0.1222 c 0.1402,-0.4439 0.062,-0.7271 -0.32591,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5135 0.4453,-0.7098 0.8148,-0.611 l 0.1222,-0.4074 -0.611,-0.163 0.8555,-0.6518 z m 2.4036,0.041 0.32591,0.4889 -0.1222,0.4481 -0.28521,-0.5703 0.082,-0.3667 z m -17.9659,0.082 0.2852,0.082 -0.1222,0.4074 -0.2444,-0.3259 0.082,-0.163 z m -14.2586,0.041 0.2852,0.041 -0.082,0.2037 c -0.1131,0.033 -0.21799,0.087 -0.3259,0.1222 l 0.1222,-0.3666 z m 15.76599,0 0.7333,0 -0.082,0.2037 -0.69259,0.082 c 0.022,-0.1067 0.02,-0.1839 0.041,-0.2852 z m -3.99239,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.67679,0 0.20371,0.041 -0.20371,0.8148 -0.2037,-0.041 0.2037,-0.8148 z m -28.4357,0.163 0.5704,0.1222 -0.2445,0.6926 -0.3666,-0.6111 0.041,-0.2037 z m 2.15921,0.041 -0.082,1.1407 0.6111,0.1629 0.082,-1.1814 -0.6111,-0.1222 z m 19.5546,0.1222 0.16301,0.041 -0.12221,0.4481 -0.2037,-0.041 0,-0.041 0.041,0 0.1222,-0.4074 z m -13.4438,0.041 0.12221,0 0.2852,0.7333 -0.1222,0.1629 -0.163,0 -0.20371,-0.611 c 0,-0.011 -0.01,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.1341 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.082,0.4889 -0.3259,0 0,-0.4889 z m 4.03319,0 0.24441,0.041 -0.041,0.1629 -0.2444,-0.082 0.041,-0.1222 z m -25.70619,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.17229,0.082 -0.041,0.163 0.041,0.041 0,-0.2037 z m -21.55089,0.041 0.082,0 0,0.3259 -0.20371,-0.041 0.12221,-0.2852 z m -10.918,0.2444 c 0.27319,-0.046 0.6794,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3876,-0.088 -0.75,0.1822 -0.937,0.7741 l -0.5704,-0.8939 c 0.053,-0.1665 0.1749,-0.2803 0.44821,-0.3259 z m 14.0956,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.77409,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.15481,0.041 0.48889,0.1222 -0.2852,1.0185 -0.3666,-0.4889 0.16291,-0.6518 z m -17.9658,0.041 0.24441,0.041 -0.28511,0.082 0.041,-0.1222 z m 10.8365,0 0.2037,0.041 -0.041,0.1222 -0.24441,0.1223 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2852 z m 9.5737,0.1222 -0.1222,0.082 -0.082,0.163 0.20361,0.2444 0,-0.4888 z m -13.8105,0.082 0.40741,0.082 -0.32591,0.4482 -0.3259,-0.082 -0.041,-0.163 0.28511,-0.2851 z m -10.4292,0.041 0.1223,0.082 0,0.2445 -0.16301,-0.041 c 0.032,-0.1025 0.017,-0.1886 0.041,-0.2852 z m 13.8513,0.041 0.611,0.5297 0.041,0.041 -0.1222,0.611 c -0.1738,-0.1301 -0.3351,-0.2838 -0.48879,-0.3666 -0.043,-0.2456 -0.071,-0.5152 -0.041,-0.8148 z m -8.5552,0.041 0.36659,0 0,0.2445 -0.36659,0 0,-0.2445 z m -16.4585,0.082 0.16291,0.041 -0.12221,0.4074 -0.2851,-0.082 0.082,-0.2851 0.1629,-0.082 z m 4.1961,0.2037 0.5296,0.1223 0,1.1814 c -0.3391,-0.077 -0.521,-0.5091 -0.5296,-1.3037 z m 1.79251,0.163 -0.24441,0.6926 0.6518,0.1629 0.2037,-0.6926 -0.61109,-0.1629 z m 3.01469,0.2444 c 0.53689,0.1214 0.591,1.2375 0.1629,3.2999 -0.149,0.2487 -0.3558,0.702 -0.57029,1.1407 l -0.5704,-0.1223 -0.52959,-1.3443 c 0.3877,0.088 0.5932,-0.086 0.73329,-0.5296 l 0.082,-1.1815 0.20371,0.2445 0.65189,0.1629 -0.163,-1.6703 z m 9.6958,0.041 0.1222,0.1222 -0.24441,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1222 0.2445,0.2444 0.3666,-0.4481 z m 5.3776,0 c 0,0.306 -0.1563,0.4482 -0.5704,0.4482 l 0,0.2036 0.40741,0 -0.36659,0.6519 -0.40741,-0.082 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.40741,-0.774 c 0.1595,-0.01 0.3126,-0.041 0.4888,-0.041 z m -13.4439,0.041 0.2852,0.041 -0.44809,1.2629 -0.082,0.3259 c 0.198,0.081 0.36659,0.1667 0.52959,0.2445 l -0.2444,0.4481 -0.1223,-0.2037 -0.3259,0.163 -0.24441,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.163,-0.4889 0.041,0.041 0.2851,0 0.16301,-1.3036 z m -8.1885,0.082 0.5704,0.1222 -0.163,0.4074 -0.40741,-0.5296 z m 13.1587,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.359,0 0.32591,0 c -0.046,0.2543 -0.075,0.4487 -0.082,0.6518 l -0.611,0 0.082,-0.5703 0.2851,-0.082 z m -3.13689,0.082 0.082,0.4889 c -0.2042,-0.1068 -0.34879,-0.235 -0.44809,-0.4074 l 0.3667,-0.082 z m -1.75171,0.082 -0.1222,0.4889 -0.163,0 0,-0.4074 0.2852,-0.082 z m 18.00661,0.041 0.2036,0.041 -0.1629,0.6518 -0.2037,-0.082 0.163,-0.611 z m 0.6518,0 0.48879,0.1222 -0.40729,1.4666 -0.16301,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2444,0.041 l 0,-0.3666 0.32591,-1.2222 z m -21.22501,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.13431,0.08 0.20371,0.1223 l -0.24451,0.041 0.041,-0.163 z m -12.181,0.082 0.2852,0.041 -0.2852,0.8963 -0.28511,-0.041 0.28511,-0.8963 z m 1.7926,0.163 -0.1223,0.4481 0.6111,0.1222 -0.4888,-0.5703 z m 19.5954,0 c 0.045,0.041 0.155,0.1195 0.20361,0.163 l -0.082,0.5296 -0.8962,2.8517 -0.5704,0.8148 0.36671,1.0592 -0.6518,-0.163 -0.36671,2.0777 -0.52959,-0.1222 0,-0.9777 0.32591,-0.1223 0.082,-0.2037 0.163,-1.4666 0.48889,-0.5703 -0.1223,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.40741,-0.5704 0.36671,-0.1222 0.2444,0.041 0.082,-1.1407 0.3667,-1.1407 0.5296,0.1222 0.1629,-0.611 z m 1.2629,0.082 0.1222,0.163 -0.163,-0.041 0.041,-0.1223 z m 1.8332,0.1222 0.082,1.6296 0.48889,0.1222 0.20371,-0.2037 -0.2445,0.8148 c -0.1147,-0.1898 -0.1569,-0.2814 -0.28511,-0.4889 l -0.2037,0.082 c -0.022,-0.018 -0.056,-0.024 -0.082,-0.041 l -0.4074,-0.6518 0.4481,-1.2629 z m 0.5296,0 0.3667,0.082 0,0.082 -0.2445,0.3667 -0.24441,-0.082 0.12221,-0.4482 z m 3.78869,0.163 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4074 z m 1.7925,0.2444 0.20371,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.11671,0.064 -0.16291,0.1222 l -0.3667,-0.082 0.3259,-1.2221 z m -32.1022,0.041 0.2444,0.081 -0.9777,3.0962 -0.2444,-0.041 0.9777,-3.1369 z m 29.5764,0.163 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4482 0.1629,-0.1629 z m -14.0141,0.1629 0.20361,0 0,0.4889 -0.20361,0 0,-0.4889 z m 11.692,0.082 0.20371,0.082 0.041,0.2444 -0.2852,-0.2036 0.041,-0.1223 z m -24.28039,0.082 -0.16291,0.4481 0.6111,0.163 0.1629,-0.4889 -0.61109,-0.1222 z m 27.1321,0.041 0.2037,0.041 0.041,0.6926 -0.40741,-0.1222 0.163,-0.6111 z m -29.0468,0.041 0.28521,0.041 -0.20371,0.6518 -0.2444,-0.082 0.1629,-0.611 z m 31.5726,0.2037 0.40741,0.1222 -0.082,1.0592 -0.082,0.326 -0.24441,-0.082 0.082,-1.1407 c -0.055,-0.013 -0.1121,-0.01 -0.163,0 l 0.082,-0.2852 z m -19.5546,0.2444 0.041,0 0,0.4482 -0.2037,0 0.1629,-0.4482 z m -5.5405,0.041 0.6926,0.163 -0.5704,1.1814 -0.3259,0.4482 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.081,-0.1223 z m 5.9479,0.2037 0.40741,0 0,0.4889 0.2444,0 0.041,-0.041 -0.041,0.2852 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.36671,-0.082 -0.1629,0.041 c 0.1408,-0.1216 0.2037,-0.2569 0.2037,-0.4482 z m 13.8919,0 0.2445,0.041 0.1222,0.7333 -0.082,0.2445 -0.4074,-0.6111 0.1222,-0.4074 z m -11.81421,0.2037 0.082,0 -0.2037,0.8963 -0.082,0.041 -0.2037,-0.2037 c -0.1036,0 -0.1645,0.01 -0.2445,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.774,0 0.4889,0 0.1629,0.041 -0.2444,0.7741 -0.5296,0.3259 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3666 z m 2.85171,0 0.6518,0 -0.082,0.2037 -0.611,-0.1222 0.041,-0.082 z m -22.5286,0.163 0.6518,0.1629 -0.4888,0.6111 -0.3667,-0.082 0.2037,-0.6925 z m 14.9512,0.1222 0.2037,0 0.3666,0.082 -0.40741,0.2037 -0.041,0.2037 0.041,0.1222 -0.1629,0.041 -0.2037,0 0.2037,-0.6518 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.82141,0.163 0.24441,0.041 -0.041,0.2037 -0.2851,0.041 0.082,-0.2852 z m 6.19231,0 0.2852,0.041 -0.041,0.082 -0.2444,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.20371,-0.082 0.16291,-0.4481 -0.5703,-0.1223 -0.041,0.2037 0.32591,0.8148 -0.32591,0.1222 c -0.1051,0.333 -0.023,0.6072 0.28521,0.7741 -0.041,0.1099 -0.074,0.22 -0.12221,0.3259 l -0.2445,0.082 0.12221,-0.4074 -0.5703,-0.1222 -0.24441,1.7517 c -0.1708,0.1744 -0.368,0.3713 -0.57039,0.5296 l 0.2037,-0.2851 c 0.09,-0.6138 -0.12649,-0.9904 -0.61109,-1.1 l 0.1222,-0.4074 0.61109,0.1223 0.12221,-0.2852 -0.32591,-0.2852 0.44821,-0.1222 0,-1.1814 0.52959,-1.7925 z m -27.3765,0.041 0.81471,0.4073 -0.32591,1.1 -0.28511,-0.082 -0.3259,-1.0185 0.1222,-0.4074 z m 2.485,0.041 0.5704,0.1222 -0.081,0.2037 -0.5296,-0.1223 0.041,-0.2036 z m 32.02081,0.1222 0.2852,0.041 -0.2037,0.6925 -0.28521,-0.041 0.20371,-0.6925 z m -23.3026,0.041 0.2037,0 0,0.2037 -0.2445,-0.041 0.041,-0.163 z m 10.1439,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2851 -0.36659,1.3444 -0.041,0 0.4073,-1.3444 z m -11.48839,0.082 0.2445,0.082 -0.082,0.2037 -0.2852,0.1223 0.1222,-0.4074 z m 10.307,0 0.041,0 c 0.027,0.1988 0.01,0.4181 -0.041,0.6519 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.1629,-0.041 0.041,-0.2037 z m -16.33631,0.1223 0.163,0 -0.4482,0.4481 -0.2037,0 0.48889,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.081 -0.082,0.3259 -0.6111,-0.1222 0.081,-0.2852 z m -18.90279,0.081 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.13829,-0.184 -0.2037,-0.2852 z m 10.71429,0.2037 -0.082,0.2851 -0.041,0.082 -0.041,0.1222 -0.1629,-0.2037 0.3259,-0.2851 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1467 -0.1222,-0.2037 z m -4.1553,0.041 0.611,0.1222 -0.082,0.2444 -0.611,-0.163 0.082,-0.2036 z m 7.94399,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.22221,0.082 -0.20371,0.611 -1.26289,0 0.2444,-0.6925 z m 10.9181,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.081,-0.041 z m 14.2993,0.082 0.28521,0.4073 -0.28521,0.4482 -0.2444,-0.041 0.2444,-0.8148 z m 1.14071,0.3259 0.1222,0.611 -0.28521,-0.082 0.16301,-0.5296 z m 4.15539,0.041 0.12221,0 c -0.064,0.2039 -0.057,0.392 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8962 -0.4074,0.4889 -0.20371,-0.041 0.32591,-1.1815 -0.44809,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.082,-0.2852 z m -17.2326,0.041 0.3667,0 0,0.2851 -0.2445,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.1629,0.5703 -0.2445,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.40741,0 -0.1222,0.6925 c -0.146,0.1527 -0.3488,0.2497 -0.5704,0.3259 l -0.61109,-0.4481 c 0.097,0.029 0.20249,0.064 0.3259,0.082 0.4141,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.44709,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2036 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4073 z m 21.42871,0 0.2851,0.1629 -0.082,0.2037 -0.2851,-0.041 0.082,-0.3259 z m -2.3222,0.082 0.28521,0.082 -0.28521,0 0,-0.082 z m -14.2993,0.3666 0.48889,0.5296 -0.2037,0.6518 -0.041,0 -0.2445,-0.3259 -0.52959,-0.1222 c -0.048,0.151 -0.1391,0.2794 -0.24441,0.3667 l -0.8555,-0.2445 c -0.047,-0.2318 -0.22209,-0.4008 -0.61109,-0.4888 l 0.041,-0.2037 0.5704,0.1222 0.2036,0.2444 c 0.1053,-0.3329 0.569,-0.446 1.4259,-0.5296 z m 3.1776,0.3259 0.3667,0.4482 -0.65179,-0.1223 0.2851,-0.3259 z m 21.67309,0 0.12221,0.2037 c -0.02,0.075 -0.087,0.1637 -0.12221,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.34439,0.1222 0.20371,0.3667 -0.041,0.2037 -0.2444,-0.3667 c 0.023,-0.07 0.061,-0.1319 0.082,-0.2037 z m -25.9099,0.4074 0.24441,0.041 -0.1222,0.4074 -0.24441,-0.041 0.1222,-0.4074 z m -1.5073,0.082 0.20371,0.041 -0.041,0.1222 c -0.061,-0.042 -0.10221,-0.1176 -0.163,-0.1629 z m -3.91099,0.082 c 0.1984,0.045 0.3656,0.107 0.5296,0.1222 l 0.48889,0.6111 0,-0.4888 -0.1222,-0.1223 c 0.17359,-0.011 0.33159,-0.066 0.44809,-0.1222 0.1559,0.2002 0.3052,0.4271 0.48889,0.6519 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.28521,-0.041 -0.65179,0.2852 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.48889,-0.4889 l 0.082,-0.2037 -0.3666,-0.082 c -0.1552,-0.1722 -0.30259,-0.3448 -0.4482,-0.5296 l 0.6518,0.1222 0.163,-0.4888 z m 11.7328,0.2445 0.4482,0 0,0.4888 -0.4482,0 0,-0.4888 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.44051,0.041 0.16291,0.2851 -0.041,0.163 -0.97771,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1964 0.4888,-0.4074 l 0.3667,-0.041 z m -0.73329,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.19989,0.041 c 0.1,0.077 0.15689,0.2268 0.1629,0.3666 l -0.69259,0 0.163,-0.2852 0.3667,-0.082 z m 17.11031,0.041 0.1629,0.041 -0.041,0.1629 -0.1629,-0.082 0.041,-0.1222 z m -21.14351,0.041 0.12221,0 c 0.1262,0.063 0.21979,0.1547 0.2445,0.2851 l -0.36671,0 0,-0.2851 z m 11.6921,0.4481 0.5296,0.1222 -0.082,0.2444 -0.5296,-0.1222 0.082,-0.2444 z m -13.0365,0.082 0.163,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.16301,0 -0.082,0.2444 -0.3666,0.2037 -0.1223,0.041 0,-0.082 0.1223,0.041 0.041,-0.2037 -0.1223,-0.2851 0,-0.082 z m 25.4211,0.041 0.1222,0.4481 -0.1222,0.2852 0,-0.7333 z m -16.1734,0.163 -0.041,0.2036 -0.041,0.4889 -0.937,-0.1222 -0.081,-0.082 0.77409,-0.3667 -0.3667,-0.082 0.6926,-0.041 z m -3.50351,0.041 -0.041,0.1222 -0.28521,-0.082 0.32591,-0.041 z m 4.7664,0 0.44821,0.082 0,0.041 0,0.2036 c -0.19051,0 -0.299,0.048 -0.40741,0.1223 l -0.041,-0.4482 z m -2.5665,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2445,-0.2445 -0.082,0.2037 -0.28511,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2851,0 0.7333,-0.041 z m 3.78869,0 0.12221,0.041 -0.12221,0 0,-0.041 z m -15.2771,0.041 0.163,0.2444 0.28511,0 0.163,-0.1222 0.2852,0.2851 -0.3259,0.3667 c -0.7619,0.018 -1.1994,0.1247 -1.2629,0.3259 l -0.082,0.2037 0.28511,0.082 0.5296,0 -0.24441,0.2852 c -0.3067,0 -0.7246,-0.1575 -1.1814,-0.3667 l 0.1222,-0.3259 -0.36671,-0.082 -0.3259,0.163 c -0.3253,-0.1839 -0.6735,-0.4253 -1.0592,-0.6926 0.52999,0.1199 0.94079,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.163 1.3851,0.163 l 0.082,0 0.163,0.041 0.041,-0.163 0.12221,-0.1222 z m 1.91471,0.082 c 0.012,0.2781 0.1751,0.4716 0.61109,0.5703 l -0.041,0.1222 -0.16291,0.082 c -0.4016,-0.033 -0.77869,-0.07 -1.1,-0.082 0.1876,-0.1742 0.4654,-0.4655 0.6926,-0.6925 z m 25.17669,0 0.12221,0.041 -0.24451,1.0184 -0.1222,-0.041 0.2445,-1.0185 z m -10.9588,0.082 0.24441,0.082 -0.082,0.2851 -0.16291,0 0,-0.3666 z m -20.81759,0.1222 c 0.2965,0.3446 0.63239,0.7122 0.9778,1.0999 l -0.7333,-0.1629 c -0.294,-0.2508 -0.5828,-0.5253 -0.8555,-0.8148 l 0.611,-0.1222 z m -1.05921,0.2444 0.44821,0.7333 -0.32591,0 c -0.2314,-0.1353 -0.4738,-0.2499 -0.69259,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.44809,-0.082 z m 23.2212,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.40741,-1.3036 z m 11.2847,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2956,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.67691,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.36659,0 0.2037,-0.082 z m 29.1691,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1195,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2445,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4888 -0.078,-0.08 -0.1398,-0.2016 -0.2037,-0.3259 0.1573,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2851 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1297,0.1454 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.042 -0.139,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2444,-0.163 l 0.1629,-0.041 0.041,-0.1629 z m 10.0218,0.082 0.3666,0.2445 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.037,0.3259 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 6.6405,0 0.4074,0 0,0.082 -0.2445,0.1223 -0.1629,0 0,-0.2037 z m -3.0962,0.1223 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2444,0.2851 0.082,0 0,0.4074 c -0.3615,0.031 -0.7579,0.061 -1.1406,0.082 l 0.32591,-0.4888 c 0.079,0 0.1557,0 0.2444,0 l 0,-0.326 z m -6.4775,0.3259 0.6518,0 0,0.4888 -1.0185,0 0.3667,-0.4888 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1222 c -0.1063,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2444 z m 9.4107,0.041 c -0.02,0.2876 -0.042,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5703,-0.8148 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2445,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2445,-0.2444 z m -8.6367,0.1629 0.6519,0 0,0.2037 -0.6519,0.2037 0,-0.4074 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.4074 -0.4888,0 0.4888,-0.4074 z m -15.1548,0.2037 0.041,0 0,0.2037 -0.4482,0 0,-0.041 0.4074,-0.1629 z m 3.3406,0 0.611,0 0,0.2037 -0.611,0 0,-0.2037 z m 4.9701,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 18.0474,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.163,0.4889 -0.5296,-0.1222 0.041,-0.082 c 0.17551,-0.071 0.415,-0.2009 0.6111,-0.2852 z m 5.296,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2445 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2445,-0.1223 z m -32.6318,0.2852 0.6518,0 0,0.2444 -0.6518,0 0,-0.2444 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.3292,0 0.6111,0 1.0184,0.2852 1.2222,-0.2852 1.30371,0 0,0.4889 -5.1739,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.60351,0 -0.4481,0.4889 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5704,0 0,0.2852 -0.5704,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.1629 0.041,-0.041 z m -30.5134,0.2852 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6112"
+           transform="matrix(0.61596339,0,0,0.61596335,-152.58919,403.21413)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#fce94f;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3544);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+           d="m -152.38187,1050.7059 -2.5666,0.4889 0,1.3444 0.5704,-0.6111 0.6518,0 0,0.2037 -1.2222,0.4074 0,2.0777 0.2037,0 -0.2037,0.2851 0,0.8555 c -0.1242,0.1134 -0.1888,0.1893 -0.2852,0.2852 l 0,0.4889 c 0.096,-0.046 0.1848,-0.06 0.2852,-0.1222 l 0,0.7333 -0.2852,0.2444 0,8.5552 0.6111,2.2406 0.082,0.5703 c -0.028,0.081 -0.061,0.1678 -0.082,0.2445 0.066,0.049 0.108,0.1082 0.163,0.1629 l 0,0.163 -0.2445,-0.082 c -0.024,-0.01 -0.057,-10e-4 -0.082,0 0.036,-0.1267 0.062,-0.2569 0.1223,-0.3667 l -0.163,-0.6111 -0.4074,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8555 c -0.09,0.2618 -0.1903,0.5021 -0.2852,0.6926 l 0,0.9777 0.2445,0.082 -0.041,0.163 -0.2037,-0.082 0,11.1217 0.1629,-1.1814 0.1222,0.041 0,1.0184 0.2037,0 0.4889,0.5297 c -0.1,0.082 -0.1897,0.1934 -0.2444,0.3666 l -0.2037,-0.2444 -0.082,0 -0.163,-0.6519 0,0.5704 -0.041,0 -0.2444,0.1222 0,0.8963 0.2852,-0.1223 0,0.326 -0.1223,-0.041 -0.1222,0.4073 0.2445,0.041 0.3666,-0.1222 0,0.2445 -0.3666,0 0,0.8555 -0.2852,0.082 0,0.2037 0.2852,-0.082 0,0.082 c 0.414,0 0.5703,-0.1422 0.5703,-0.4482 l -0.2037,-0.2036 0.5296,0 -0.1222,0.082 -0.082,0.2444 0.1222,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3814,0 c 0.2346,-0.6383 0.5269,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5704,0 -0.2852,0.2037 -0.1629,0 -0.2444,-0.3259 0.082,-0.2444 -0.2445,0.082 -0.6518,0 -0.3259,0.1222 0,-0.041 -0.3667,-0.082 -0.2851,0.2037 -0.4482,-0.2037 0,-0.2444 1.0593,0 0,-0.2037 -0.2037,-0.2037 0,-0.2445 0.4888,0.163 -0.082,0.2037 0.5704,0.1222 0.2851,-0.041 0.6111,0.2037 -0.082,0.2444 0.2852,0.082 0.5703,-0.041 0.6519,0.2445 0,0.2037 c -0.3219,0 -0.8163,0.3865 -1.3852,1.1814 l 18.577,0 c 0.082,-0.08 0.1634,-0.1631 0.2444,-0.2445 0.2121,0.076 0.504,0.165 0.7333,0.2445 l 1.4666,0 -0.2444,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5297,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1356,0.056 0.2037,0.082 l -0.041,0.082 1.3037,0 0.3666,-0.2444 -0.041,0.2444 2.5666,0 0.082,-0.2444 0.2444,0.041 -0.082,0.2037 0.4481,0 0,-1.3444 -0.082,0.2444 -0.2444,-0.041 0.1222,-0.4074 0.2037,0.082 0,-9.044 -0.1222,-0.041 0.1222,-0.5703 0,-1.7111 -0.2851,0.082 -0.041,0.2037 0.2036,0.3259 -0.611,1.1 -0.2037,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0592 -0.6518,2.3629 -0.5704,0.2852 1.1815,-4.3998 0.3666,0.5703 0,-1.3444 -0.163,-0.041 0.163,-0.5703 0,-1.8333 c -0.2597,-0.392 -0.5239,-0.7827 -0.8148,-1.1406 l 0.8148,0.041 0,-1.2222 -0.2037,0.8555 -0.2444,-0.082 0.3259,-1.1814 0.1222,0.041 0,-3.5443 -0.082,0.2852 -0.4481,-0.1222 0.5296,-2.037 0,-7.9848 -0.041,0.1222 -0.8148,0 -0.6518,-0.3666 -0.8148,0 0.041,-0.2037 -0.3259,-0.5296 0.082,-0.2852 0.2037,0.041 0.8555,0.774 0.2852,-0.1629 0.082,-0.2852 c -0.3163,-0.3876 -1.755,-1.0888 -4.3183,-2.0777 l -1.1,0 2.811,1.1814 -0.1222,0.4074 0.2851,-0.1629 0.6926,0.2037 -0.4889,0.8147 -0.2037,-0.041 -0.1629,-0.2851 -0.2444,-0.041 -0.3667,0.1222 0.1222,-0.4074 0.3667,-0.1629 0,-0.041 -0.2445,-0.2852 -0.2444,-0.082 -0.2852,0.2037 -0.2444,-0.041 -0.6926,-0.4889 -0.5703,0.3667 -1.5481,-1.2629 -1.8332,0 -0.082,0.3259 -0.2445,-0.041 0.082,-0.2852 -3.2998,0 1.0184,1.5481 0.2037,0.041 -0.1629,0.6925 -0.4481,-0.1222 -0.082,0.2037 c 0.3276,0.088 0.5624,0.5585 0.6925,1.3851 l -0.1629,0.6926 -0.2445,-0.082 0.1223,-0.4481 -0.7333,-0.2037 -0.163,0.4481 0.4889,0.1222 -0.2445,0.8963 -0.4888,-0.1222 -0.2037,0.937 0.4481,0.1222 -0.1222,0.4074 -0.4481,-0.1223 -0.1223,0.4074 0.4482,0.1222 -0.163,0.6926 c -0.4096,-0.1095 -0.6971,0.1232 -0.937,0.6926 -0.022,0.084 -0.038,0.1751 -0.041,0.2444 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.089 -0.01,-0.1889 0,-0.2852 l 0.2037,0 0,-0.2037 -0.163,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.2037 l 0.5296,0.1629 0.163,-0.6518 -0.4074,-0.6111 0.937,-1.3851 -0.2037,-0.041 0.2852,-0.1629 0.082,-0.2852 -0.2037,-1.4666 0.6518,-0.2444 -0.2444,-0.082 0.4481,-0.6111 c 0.1537,-1.0675 -0.199,-1.6848 -1.0592,-1.9148 l 0.2852,-0.1629 0.082,-0.2444 -1.5889,0 0,0.082 0.6926,0.1629 -0.937,0.7333 c 0.085,-0.3163 0.049,-0.6402 -0.041,-0.9777 l -1.5888,0 -0.2037,0.6925 -0.2444,-0.041 0.1629,-0.6518 -0.937,0 0.2445,0.4889 -0.082,0.4481 -0.3667,-0.5703 0.082,-0.3667 -0.4481,0 -0.8555,3.0962 c -0.097,-0.045 -0.1796,-0.077 -0.2852,-0.1222 l -0.041,0 -0.163,-0.2445 0.2852,-0.1222 0.082,-1.1814 0.3667,-1.4259 -0.4889,0 -0.6111,2.3629 -0.2444,0 0.6111,-2.3629 -2.6073,0 -0.041,0.163 0.4481,0.1222 -0.2852,1.0592 c -0.9988,-0.3794 -1.8221,-0.6518 -2.4443,-0.6518 -0.1476,0.3741 -0.4355,0.625 -0.774,0.774 -0.017,-0.069 -0.022,-0.1337 -0.041,-0.2037 l -0.041,-0.2037 0.5703,-0.082 0,-0.2851 c 0,-0.2009 -0.2546,-0.367 -0.774,-0.4889 l -0.041,-0.2037 -0.9778,0 c 0.001,0.014 0,0.027 0,0.041 l 0,0.2444 c -0.2787,-0.1372 -0.624,-0.216 -1.0184,-0.2851 l -1.7111,0 0,0.1629 -0.2444,0.082 -0.082,-0.2444 -0.5296,0 0.041,0.1222 -0.163,0.163 -0.081,-0.2852 -2.7295,0 -0.2037,0.9777 -0.3259,0 0,-0.4888 c 0.085,-0.1762 0.1553,-0.3575 0.2037,-0.4889 l -2.4036,0 z m 36.2576,12.8328 0,-0.937 -0.041,0.041 -0.163,0.6111 0.2037,0.2851 z m -34.3429,-12.7513 -0.2852,0.4481 -0.4888,0.082 0.082,-0.2851 0,-0.1222 0.6925,-0.1223 z m 13.4846,0.041 0.4481,0.1222 -0.041,0.2445 -0.4481,-0.1223 0.041,-0.2444 z m -16.2956,0.3667 0,0.4888 -0.4481,0 0.4481,-0.4888 z m 7.8219,0 0.082,0.041 0.2037,0.8962 c -0.2225,-0.02 -0.4372,-0.045 -0.6111,-0.082 l 0.2037,-0.6518 -0.041,-0.163 0.1629,-0.041 z m 1.4666,0 0.4074,0.4888 -0.4074,0 0,-0.4888 z m -2.5666,0.1629 0.082,0.2852 -0.1222,0.041 c -0.071,-0.079 -0.082,-0.1896 -0.082,-0.2852 l 0.1222,-0.041 z m -6.1515,0.041 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 5.2145,0 0.2037,0 0,0.2852 -0.2037,0 0,-0.2852 z m -2.9739,0.2852 c 0,-0.01 0.038,0 0.041,0 l 0,0.2444 -0.163,0 c 0.038,-0.069 0.088,-0.1795 0.1223,-0.2444 z m 13.0364,0 0.2037,0.081 -0.1629,0.6518 -0.3259,-0.5703 0.2851,-0.163 z m 11.8143,0.041 0.4481,0.1222 -0.1222,0.4889 -0.4889,-0.1223 0.163,-0.4888 z m -5.8257,0.1629 0.2445,0.041 -0.163,1.5888 -0.2852,0.163 -0.1222,0.4889 -0.5296,2.5258 -0.6518,-0.6518 1.1,-2.6481 -0.2445,-0.2851 0.082,-0.2037 0.5704,-1.0185 z m 0.9778,0.041 0.5703,0.1222 -0.2852,0.163 -0.082,0.2037 -0.774,3.8702 -0.2852,0.1629 -0.082,1.1407 -0.2037,0.7741 -0.5703,0 0.1629,-0.5704 c 0.245,-0.096 0.4482,-0.2129 0.4482,-0.3666 l -0.2852,-0.2852 1.3851,-5.2146 z m -17.7214,0.2037 0.2444,0 0.041,0.163 -0.082,0.041 -0.1222,0 -0.082,-0.2037 z m 14.5437,0.1222 0.2037,0.041 -0.082,0.4482 -0.2444,-0.082 0.1222,-0.4074 z m 12.6291,0.041 0.2037,0.082 -0.082,0.4074 -0.2444,-0.082 0.1222,-0.4074 z m -29.8209,0.041 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m -2.0776,0.2037 1.0592,0 c -0.029,0.098 -0.082,0.1887 -0.1222,0.2852 l -0.937,0 0,-0.2852 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.163 c -0.074,0.2764 0.1417,0.5131 0.5704,0.6518 l 0,-0.5296 -0.5704,-0.1222 z m -6.0701,0.3259 0.4481,0.1222 -0.3666,1.3037 -0.4481,-0.1223 0,-1.1814 0.3666,-0.1222 z m -17.0696,0.4481 0,0.4889 -0.2037,0 -1.6703,0.2444 c 0.035,-0.1864 0.074,-0.3749 0.082,-0.5703 l 1.7926,-0.163 z m 0.3667,0 0.6518,0.2037 0,0.2852 -0.8555,0 0.2037,-0.2852 0,-0.2037 z m 1.0185,0 0.041,0 0.2851,0.4482 -0.041,0.041 -0.2851,0 0,-0.4889 z m 1.8332,0 -0.082,0.3259 -0.2852,0.041 0.1223,-0.3259 c 0.073,-0.01 0.1596,-0.036 0.2444,-0.041 z m 10.2662,0 0.6518,0.3667 -0.082,0.2037 -0.4481,0.8555 c -0.076,0.6131 0.1199,0.9904 0.5296,1.0999 l -0.1222,0.4074 -0.5296,-0.1222 -0.082,0.2852 0.2444,0.2852 -0.3666,0.1222 0.041,1.1814 -0.4889,1.7925 -0.5296,-0.1222 -0.4074,-1.3037 0.1222,-0.4888 0.2444,0.041 -0.1222,0.4888 0.4482,0.1223 0.041,-0.2037 -0.2852,-0.8148 0.2852,-0.1222 c 0.1185,-0.4435 -0.079,-0.7649 -0.5704,-0.8963 l 0.6518,-0.2852 -0.1222,0.4074 0.4889,0.1223 0.3666,-3.2184 0.041,-0.2037 z m -20.4916,0.1222 0.2444,0.041 0.1222,0.4889 -0.3259,-0.082 0,-0.3666 -0.041,-0.082 z m -7.7404,0.082 0.4481,0 -0.4481,0.5296 0,-0.5296 z m 1.3036,0 0.8148,0 c -0.013,0.016 -0.028,0.025 -0.041,0.041 -0.2572,0.2055 -0.3429,0.3041 -0.5704,0.4889 l -0.2037,-0.2444 0,-0.2852 z m 1.3037,0 0.3666,0 0.4074,0 0,0.2037 -0.082,-0.082 -0.4889,0.1222 0,0.2445 -0.082,0.041 -0.2037,-0.2444 -0.082,0 0.163,-0.2852 z m 1.1406,0 0.6111,0 -0.041,0.2852 -0.5703,0 0,-0.2852 z m 7.2923,0 0.6518,0 -0.082,0.2445 0.1222,0.4481 -0.2851,0.041 -0.4074,-0.6518 0,-0.082 z m 1.2629,0 0.2037,0 0.082,0.2445 -0.2037,0.041 -0.082,-0.2852 z m 21.1435,0 0.8148,0 0.2444,0.041 -0.082,0.2037 -1.1,0.163 0.1223,-0.4074 z m -12.9142,0.082 0.2036,0.082 -0.082,0.4074 -0.2444,-0.082 0.1222,-0.4074 z m 5.2553,0 -0.081,0.2037 0.4888,0.1223 0.041,-0.2037 -0.4481,-0.1223 z m 10.1439,0.3667 0.4889,0.1222 0.4074,0.5704 -0.6518,0.3259 0.2852,0.082 -0.6111,1.0184 c -0.3277,-0.088 -0.363,-0.3713 -0.2445,-0.8147 l 0.2852,-0.163 0.041,-0.2037 0,-0.937 z m -1.3851,0.2852 0.2445,0.082 0.041,0.7333 -0.4482,-0.1223 0.163,-0.6925 z m -25.5025,0.041 0,0.4074 -0.2852,0 -0.082,-0.326 0.3667,-0.082 z m 23.9137,0.041 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4482 z m -24.7285,0.082 0.082,0.2851 -0.2444,0 0,-0.2444 0.1629,-0.041 z m -8.2292,0.041 1.0184,0 c -0.1009,0.084 -0.1917,0.1658 -0.2851,0.2444 l -0.7333,0 0,-0.2444 z m 2.0776,0 0.4482,0 0,0.2444 -0.6111,0 0.1629,-0.2444 z m 7.8626,0 0,0.2444 -0.2036,0 -0.041,-0.163 0.2444,-0.082 z m 3.748,0 0.4074,0 0,0.2444 -0.4074,0 0,-0.2444 z m 1.0592,0 0.8148,0 0,0.2444 -0.8148,0 0,-0.2444 z m 22.3657,0.041 0.4481,0.1222 0.2852,0.2852 0.082,-0.4074 0.2444,0.041 -0.1222,0.4481 -0.2037,-0.082 0.163,0.2852 -0.1223,0.4888 c -0.3277,-0.088 -0.616,0.1421 -0.774,0.7333 l -0.3666,-0.611 0.3666,-1.3037 z m -31.0023,0.041 0.2852,0.2037 -0.2037,0.082 -0.082,-0.2852 z m -4.7257,0.082 0.041,0.082 -0.1222,0 c 0.027,-0.031 0.054,-0.05 0.082,-0.082 z m 31.98,0.041 0.5296,0.1629 -0.041,0.2037 -0.5296,-0.1222 0.041,-0.2444 z m -20.4917,0.041 0.3667,0 0,0.2851 -0.3667,0 0,-0.2851 z m 3.5443,0 0.2037,0 c 0.2933,0.1 0.5027,0.2543 0.6518,0.4888 l -0.081,0.1222 c 0.049,0.098 0.1129,0.1885 0.163,0.2852 l -0.3666,0 0,0.2444 0.5296,0.082 c 0.074,0.1379 0.1679,0.2724 0.2444,0.4074 l -1.7925,0 0,-0.2037 c 0.5521,10e-5 0.8148,-0.2235 0.8148,-0.5296 l -0.3667,-0.4074 0,-0.4888 z m -9.2884,0.041 0.1222,0.4481 -0.2037,0.041 -0.082,-0.3259 0.1629,-0.163 z m -3.5036,0.082 0.082,0.4481 -0.4481,0.1222 -0.041,-0.1629 0.3259,-0.041 0,-0.326 0.082,-0.041 z m 1.6296,0.041 c 0.2851,1.0667 0.7124,1.5431 1.3036,1.3851 l 0.082,0.1629 -0.1629,0.2445 -0.2445,-0.1222 c -0.5964,0.7308 -0.8708,1.4517 -0.6925,2.1184 l -0.8555,-0.6518 0.611,-0.163 -0.1222,-0.4074 c -0.3695,0.099 -0.5984,-0.098 -0.8148,-0.6111 l 0.9778,-0.7333 -0.4482,-0.937 -0.041,-0.1629 0.4074,-0.1222 z m 23.5878,0.2444 0.4481,0.1222 -0.082,0.2444 -0.4481,-0.1222 0.082,-0.2444 z m -14.9512,0.082 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.082 -0.041,0.163 -0.2037,-0.041 0.2445,-0.2037 z m -10.5514,0.041 c 0.1566,0.1293 0.3292,0.2463 0.5704,0.3666 l 0,-0.1629 0.082,0.3666 0,0.082 -0.4481,0.1223 -0.2037,-0.7741 z m 23.2212,0.041 0.4481,0.1222 0,0.9777 -0.2851,0.1223 -0.041,0.2037 -0.163,1.4666 -0.4074,0.5703 0.2037,0.2444 -0.3259,0.2037 0.3666,0.5704 -0.2851,0.1222 -0.2445,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4481,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.057 0.041,0.082 l -0.1222,0.082 0.1629,0.041 c 0.083,0.2037 0.1422,0.4408 0.163,0.6925 l -0.041,0.2037 -0.163,-0.2444 -0.2851,-0.082 -0.041,0.041 0.2444,-1.5481 0.774,-2.8517 0.4482,-0.8148 -0.2852,-1.0592 0.5296,0.163 0.3259,-2.0777 z m -28.4357,0.041 -0.041,0.4481 -0.2852,0.082 -0.2852,-0.1629 -0.2037,0.082 0.3667,0.4888 -0.4889,0.6111 -0.3259,-0.4888 c 0.071,-0.017 0.1278,-0.041 0.2037,-0.041 l 0,-0.4889 -0.163,0 -0.2037,0.2852 -0.2037,0 0.3667,-0.6111 1.2629,-0.2037 z m 4.8072,0 0.1629,0.6518 -0.2037,0.041 -0.2037,-0.6111 0.2445,-0.082 z m -7.0886,0.2852 0.2037,0 0,0.2851 -0.2037,0.2445 -0.2444,0 0,-0.3259 c 0.078,-0.065 0.1633,-0.1301 0.2444,-0.2037 z m 32.5911,0.4074 1.5073,1.3443 -0.1222,0.4482 -0.5296,-0.163 -0.4889,1.7925 -0.2037,-0.041 0.4074,-2.4851 -0.2851,0.1223 -0.326,-0.082 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.4073 -0.6926,-0.2037 0.041,-0.2036 z m -27.4173,0.1222 0.041,0 0.2037,0.2037 -0.163,0.041 -0.082,-0.2445 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4997,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.1629 c -0.014,0.06 -0.024,0.099 -0.041,0.163 l 0.4074,0.1222 c -0.1394,0.1292 -0.3455,0.163 -0.6518,0.163 l -0.2037,0 0,-0.2037 0.4889,-0.2445 z m -4.6442,0.041 0.6518,0.2037 0,0.4481 c -0.414,0 -0.6518,0.1829 -0.6518,0.4889 l -0.163,0 c 0,-0.4589 -0.1313,-0.7332 -0.4074,-0.7333 l 0,-0.2037 0.5704,-0.2037 z m 11.4476,0.041 0.3259,0.6111 -0.041,0.2037 -0.3259,-0.6111 0.041,-0.2037 z m -18.088,0.041 0.5703,0.2852 0.6518,2.3628 0,0.082 -0.3666,-0.5296 -0.2037,0 0.5703,0.8556 0.041,0.6518 0.2852,0.1222 -0.3667,0.5703 -1.1814,-4.3998 z m 15.44,0 0.2444,0.041 -0.2852,1.1 -0.2444,-0.041 0.2852,-1.1 z m -7.0886,0.1222 0.5704,0.2037 0,0.2445 -0.7741,0 0.2037,-0.2445 0,-0.2037 z m -9.2884,0.2037 0.4888,0.4889 0.041,0.163 -0.4888,0.1222 -0.163,-0.6518 0.1222,-0.1223 z m 1.9962,0.1223 0.3259,0.3259 0,0.082 0.082,0.041 0.2037,0.2444 -0.163,0.163 0.6518,2.3628 -0.2851,-0.1629 -0.8148,-3.0555 z m -7.8219,0.082 0.082,0.3666 -0.2037,0.041 -0.082,-0.3666 0.2037,-0.041 z m 2.4443,0.2037 -0.082,0.611 0.082,0.2445 0.2445,0.1629 c -0.776,0.2075 -1.0756,0.7481 -0.937,1.7111 l 0.3666,0.5703 -0.2037,0.041 0.5704,0.2444 -0.163,1.3037 0.082,0.2852 0.2445,0.1222 -0.2037,0.041 0.5703,0.8555 c -0.1409,0.1125 -0.2864,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4074,-0.1223 -0.2037,-0.8147 -0.4481,0.1222 -0.2037,-0.8148 0.4073,-0.1222 -0.1222,-0.4481 -0.6518,0.2036 0.082,0.4482 -0.2037,0.041 -0.1629,-0.6111 c 0.1174,-0.7457 0.3562,-1.1839 0.6518,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.163,-0.611 0.2037,-0.041 1.3444,-2.037 z m 31.3282,0.2036 0.2445,0.041 0.2444,0.2852 0.2852,-0.1222 0.6925,0.163 0.4482,2.2813 -0.041,0.2037 0.2851,0.082 0.2852,-0.1222 0.2444,0.041 -0.6925,2.648 c -0.6159,-0.3229 -0.8482,-0.9056 -0.6111,-1.7925 l -0.2037,-0.082 0.2852,-0.1222 0.1222,-0.4889 0.082,-1.1814 -0.5704,-0.1222 -0.6925,2.6888 0.2444,0.2851 -0.3666,0.1223 -0.041,0.2036 0.2037,2.1999 -0.8148,0 c -0.1161,0.5674 -0.1894,1.0843 -0.2445,1.5074 -0.1694,0.1075 -0.2848,0.3972 -0.4073,0.8555 l -0.326,0.1222 -0.4481,-0.1222 -0.1629,-0.937 0.5703,-0.4889 0,-0.1222 c 0.055,0.088 0.1486,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2037 0.2444,-1.874 0.3666,-0.5296 0.7333,-3.6257 0.2445,-0.8963 -0.4481,-0.1222 -0.3667,1.3444 -0.3666,0.1222 0.2444,0.2852 -0.1222,0.4888 -0.5296,-0.1629 0.8147,-3.0962 z m -9.207,0.1223 0.2037,0.041 -0.2444,0.8962 -0.2852,0.163 -0.2037,-0.082 0.5296,-1.0185 z m 6.0701,0 0.2037,0.041 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -24.9729,0.082 0.2037,0.8147 -0.2037,0.041 -0.2444,-0.774 0.2444,-0.082 z m -6.7219,0.041 0.041,0 0.1222,0.4481 -0.2037,0.041 -0.041,-0.1222 c 0.028,-0.1062 0.05,-0.2305 0.082,-0.3259 0,-0.013 0,-0.028 0,-0.041 z m 34.2614,0.041 0.2444,0.041 -0.2037,0.6925 -0.2037,-0.041 0.163,-0.6925 z m -26.5618,0.041 0.1223,0.4481 -0.326,0.4889 -0.082,-0.3667 0.2852,-0.5703 z m 13.892,0.082 0,0.041 -0.3259,0.2037 -0.2037,-0.041 c 0.011,-0.041 -0.01,-0.084 0,-0.1223 0.1891,-0.018 0.3782,-0.056 0.5296,-0.082 z m -11.7328,0.2444 0.1222,0.1222 -0.2037,0.082 -0.041,-0.1629 0.1222,-0.041 z m 27.1321,0.1222 0.774,0.2037 -0.041,0.2444 -0.774,-0.2037 0.041,-0.2444 z m -8.7181,0.041 0.5703,0.163 -0.082,0.2037 -0.5296,-0.1223 0.041,-0.2444 z m -15.4808,0.041 0,0.6111 0.4481,0 c 0,0.3378 0.036,0.6266 0.1222,0.8148 -0.2101,0.043 -0.4005,0.095 -0.5703,0.1629 l 0,-0.041 -0.3667,-0.4074 -0.6518,0.2037 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2444,-0.8963 1.3444,-0.163 z m 2.8925,0 0.2851,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.6518 c 0.3993,-0.2212 0.701,-0.4734 0.8148,-0.774 0.071,0.093 0.1313,0.1937 0.2037,0.2852 l -0.3666,0.041 0,0.4481 0.4073,0 0.2445,0.2852 0.1629,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2852,0.3259 l 0.041,0.163 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2444,0.1222 -0.082,0.1629 -0.6519,-0.1222 c -0.065,-0.1287 -0.1069,-0.2443 -0.1222,-0.3666 l 0.3259,0 0.3667,0.082 0.041,-0.2037 -0.2852,-0.5296 c -0.2712,-0.072 -0.5058,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.1629 c -0.064,0 -0.1436,-0.01 -0.2037,0 l -0.5296,-0.611 -1.0592,0.2037 -0.774,-0.2037 -0.4482,0.4481 -0.1629,-0.2444 0,-0.2037 c 0.2415,0 0.4326,0.016 0.6111,0 0.5353,-0.049 0.774,-0.1779 0.774,-0.4074 z m 16.2955,0 0.2444,0.082 -0.2444,0.8963 -0.2444,-0.082 0.2444,-0.8963 z m -19.962,0.4074 0,0.4481 0.4073,0 0,-0.4481 -0.4073,0 z m -1.5481,0.082 0.2444,0.2852 -0.2037,0.3666 -0.1629,-0.5296 0,-0.082 0.1222,-0.041 z m -10.5106,0.1222 0.041,0.3259 -0.163,0.041 0.1222,-0.3666 z m 21.836,0 0.1629,0 0,0.2445 -0.1629,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.774,1.8333 -0.5296,0.3259 -0.2851,-1.5073 -0.1223,-0.4482 -0.2444,-0.1222 -0.1629,-1.4258 0.2037,-0.041 z m -0.8963,0.041 1.1407,4.2369 -0.3259,-0.082 0,-0.082 -0.2852,-0.163 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4889,-0.1222 z m 19.8806,0.082 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2233,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.981,0.2445 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8137,0.082 0.3666,0 c -0.096,0.1753 -0.2074,0.2729 -0.3666,0.2851 l 0,-0.2851 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7258,0.082 0.3259,0.6111 -0.1222,0.4073 -0.4482,-0.1222 0.2445,-0.8962 z m 1.0184,0.2851 0.2037,0.041 c -0.079,0.2957 0.1603,0.5612 0.6518,0.6926 l -0.2444,0.8963 c -0.1373,-0.1603 -0.2848,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4481,-0.1222 0.2444,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4482 -0.1629,-0.082 0.082,-0.4074 z m 3.3814,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.089,-0.065 -0.1748,-0.1266 -0.2445,-0.2037 z m -7.4145,0.1223 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1222,-0.041 0.1629,-0.081 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.6111,0.2444 c -0.4434,0.1186 -0.6365,0.4148 -0.5296,0.8148 l 0.2444,0.1222 -0.2444,0.7333 0.041,0.2037 0.4481,-0.1222 -0.1222,-0.4481 0.2037,-0.041 0.1222,0.4481 -0.3667,1.1407 -0.3666,-0.082 c -0.056,0.071 -0.069,0.1343 -0.1222,0.2037 l -0.4482,-1.5888 0.041,-1.1 -0.3259,-0.081 0.2037,-0.2852 -0.041,-0.2444 -0.4888,0.1222 -0.082,-0.1629 0,-0.082 0,-0.163 c 0.3323,-0.117 0.5134,-0.4115 0.4481,-0.937 l -0.4481,-0.774 -0.041,-0.163 0.5703,-0.3666 z m 31.1652,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1223,0.3666 -0.2037,0.041 -0.1222,-0.3666 0.2036,-0.041 z m 8.5145,0.041 0.2037,0.082 -0.2445,0 0.041,-0.082 z m 16.9066,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.163,-0.6926 0.4481,0.5704 -0.5703,0.8147 -0.163,1.874 -0.4481,0.5296 -0.2445,-0.041 c 0.5137,-1.9215 0.411,-2.9209 -0.2444,-3.0961 l 0.2037,-0.6926 z m -20.0435,0.082 0.2037,0 -0.1222,0.4481 -0.163,0 0,-0.2037 0.082,-0.2444 z m 1.7925,0 0.2037,0 c 0.1368,0.1613 0.1865,0.3854 0.1629,0.6518 l -0.1222,0 -0.2444,-0.6518 z m -2.5666,0.1222 0.2037,0.3667 -0.2851,-0.082 0.082,-0.2852 z m 12.5476,0.163 0.2444,0.082 0.2852,0.2036 -0.1629,0.2445 c -0.1007,-0.099 -0.2134,-0.1792 -0.326,-0.2445 l -0.041,-0.2851 z m -7.17,0.1629 0.2851,0 c 0,0.072 0.024,0.1466 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1222 -0.326,0 -0.082,-0.1222 z m -6.7219,0.1222 0.2036,0.082 -0.082,1.2222 -0.082,0.2037 -0.2037,-0.082 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2852 z m 14.6252,0.041 0.3259,0.082 -0.1629,0.6519 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3585,0.041 0,0.2037 -0.1223,0 0.1223,-0.2037 z m -1.4666,0.163 0.1222,0 0.1222,0.1629 0.082,0.2852 -0.3259,-0.4074 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.163,0 0.041,-0.2037 z m -5.2553,0.1629 -0.041,0.2445 c -0.1413,0.6766 -0.1365,1.0308 0.1222,1.0999 l -0.2445,0.2037 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.1629,-0.5703 0.4481,-0.081 c -0.206,-0.7706 -0.1475,-1.243 0.1222,-1.3444 z m 1.8739,0 0.041,0.1223 0.082,-0.082 0.163,0.6518 0,0.1222 -0.4889,0.7333 0.2852,0.082 -0.3259,0.1222 -0.081,0.2445 0.2444,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8555 -0.6518,1.3037 0.2444,0.2852 -0.4888,-0.163 0.3666,-1.3444 -1.1814,0.7333 0.2444,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6926 c 0.08,-0.4995 0.011,-0.7981 -0.2037,-0.8556 l 0.2852,-0.1629 0.041,-0.2037 0.2037,-1.3037 c 0.1374,-0.1298 0.2764,-0.2714 0.4074,-0.4073 l 0.4481,0.3259 c -0.053,-0.2116 -0.1577,-0.3754 -0.2444,-0.5296 0.051,-0.055 0.1128,-0.1065 0.1629,-0.163 l 0.2445,0.041 0.082,-0.3666 0.3666,-0.163 -0.1629,-0.163 c 0.072,-0.092 0.1339,-0.1912 0.2037,-0.2851 l 0.7333,0.041 0.1629,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.1351,-0.2161 0.2037,-0.3259 l 0.2852,0.082 0.2852,-1.0592 c 0.1084,-0.2 0.2226,-0.4049 0.3259,-0.6111 l -0.1222,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4888,0 c 0.012,-0.071 0.03,-0.1354 0.041,-0.2037 l 0.2444,-0.2444 z m -22.1619,0.041 0.082,0.2852 -0.082,0 0,-0.2852 z m 30.4319,0.2037 0.4889,0.1223 -0.4074,0.9369 c -0.091,-0.1361 -0.2088,-0.2648 -0.3666,-0.3666 l 0.2851,-0.6926 z m -10.8773,0.163 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9778,0.041 0.4074,0.1222 -0.041,0.163 -0.2037,0.041 -0.163,-0.2852 c 0.01,0 -0.01,-0.038 0,-0.041 z m -8.3922,0.3259 0.4074,0.082 -0.163,0.6518 -0.2852,-0.5703 0.041,-0.163 z m 23.9137,0.041 c 0.4519,0.2793 0.6049,0.7683 0.4074,1.5073 l -0.5296,1.0593 c -0.1998,1.1223 -0.2915,1.891 -0.2852,2.4036 l -0.163,-0.041 0.041,-0.7741 0.1223,-0.4889 -0.3667,-0.774 0.8963,-2.1184 -0.1223,-0.7741 z m -21.836,0.1222 0.2444,0 0,0.2037 -0.2444,0 0,-0.2037 z m 12.0994,0 0.041,0 -0.1629,0.5704 c -0.021,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.962,0.041 0.2037,0.041 0.1222,0.2445 -0.3667,-0.1223 0.041,-0.1629 z m -4.1147,0.2037 0.041,0.2037 -0.2851,0.5296 -0.041,-0.1629 0.2851,-0.5704 z m 3.6258,0 c 0.1218,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.163,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2444,0.082 -0.1222,0.4889 -0.2444,-0.082 0.1222,-0.4889 z m -25.4618,0.082 c 0.1305,0.01 0.286,0.02 0.4481,0.041 l -0.1222,0.3667 c -0.2956,-0.079 -0.55,0.1592 -0.6926,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2133,-0.256 0.4889,-0.2852 l 0.3666,0 -0.041,-0.041 z m 14.0142,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1478,0.041 0.2852,0 -0.1223,0.5296 -0.2444,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5703,0 0,0.082 -0.3666,0.5704 0.1222,0.1629 -0.6111,-0.1629 c 0.1071,-0.1606 0.1904,-0.4143 0.2852,-0.6519 z m 1.0592,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2407,0 0.4888,0 -0.1222,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.163 0.041,0.4481 -0.163,0.041 c -0.1808,-0.2054 -0.2426,-0.4948 -0.2036,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.016,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2445,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4888,0.1222 -0.041,-0.5296 0.2444,-0.041 0,-0.4889 -0.2852,0.041 -0.041,-0.2444 z m -7.6997,0.082 0,0.7741 c -0.2652,-0.083 -0.4074,-0.289 -0.4074,-0.6519 0.1827,1e-4 0.3,-0.043 0.4074,-0.1222 z m 5.5405,0 0.4074,0.1222 -0.082,0.3667 -0.4481,-0.1222 0,-0.041 0.1629,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6518 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2445 0,0.2851 -0.041,0.082 -0.2037,-0.041 0.041,-0.2037 0.2444,-0.3666 0.163,-0.2852 -0.4481,-0.1222 0.5703,-0.2852 z m -18.8214,0.082 c 0.092,0.016 0.1762,0.041 0.2852,0.041 l 0,0.6518 -0.2444,-0.082 -0.041,0.1223 -0.1222,0 0,0.4481 0,0.082 0.4481,0.1222 0.041,-0.2037 0.1629,0 -0.5296,0.774 -0.2444,-0.3259 -0.082,0.3667 0.2444,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.1549,0.076 -0.2587,0.2271 -0.2851,0.4482 l -0.041,0.1222 -0.163,0 c -0.01,-0.03 0,-0.052 0,-0.082 l 0.082,-0.4482 -0.163,-0.041 c -0.084,-0.4331 -0.1523,-0.7924 -0.2444,-1.0592 l 0.4481,-1.6295 z m -7.2922,0.4481 c 0.2126,0.1197 0.3124,0.3225 0.2852,0.6111 l -0.2037,-0.1222 -0.082,-0.4889 z m 18.3325,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1372 -0.06,0.2832 -0.082,0.4074 -0.092,0.016 -0.1762,0.041 -0.2852,0.041 l 0,0.4889 -0.2444,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2851,0 0.1222,0.041 0,0.4074 -0.2036,0 0,0.2037 0.082,0.3667 c -0.1679,-0.1492 -0.2705,-0.4892 -0.2852,-1.0185 z m 25.3395,0.041 0.4482,0.1223 -0.1223,0.4073 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9354,0.041 c -0.044,0.049 -0.077,0.1097 -0.1223,0.163 l -0.041,-0.1222 0.163,-0.041 z m -0.8963,0.041 0.4481,0.937 -0.2037,0.041 -0.082,-0.041 c 0.01,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.082 -0.2037,-0.6925 0.2444,-0.041 z m 17.5177,0 0.4074,0.1223 -0.082,0.2444 -0.3666,-0.2444 0.041,-0.1223 z m 0.7333,0 0.2037,0.082 -0.1222,0.4074 -0.2037,-0.041 0.1222,-0.4481 z m 7.1293,0.082 0.082,0.1223 0.2852,0.082 0.082,-0.041 -0.2037,1.3443 -0.6926,2.5259 -0.2444,0.4888 -0.082,-0.3666 0.2037,-0.2852 -0.2037,-0.2037 -0.2444,0.082 -0.163,-0.2852 0.2852,-0.1222 0.2037,0.041 0.041,-1.0592 0.2851,-0.9777 0.4074,0.082 0.1223,-0.5296 0.041,0 0,-0.082 c -0.1251,-0.2297 -0.181,-0.5084 -0.2037,-0.8148 z m 3.0554,0.041 0.2445,0.082 -0.082,0.2445 0,0.041 -0.163,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4074,0.1223 -0.1222,0.3666 -0.2852,-0.4889 z m -10.6328,0.326 0.041,0.1629 -0.1222,0.041 0,-0.1629 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3666 0.2036,0.041 -0.2444,0.1222 -0.1222,0.4889 -0.163,-0.6111 0.2037,-0.4889 z m 27.4172,0 0.3667,0.082 c -0.05,0.1857 -0.025,0.3352 0,0.4481 l -0.3259,-0.082 c 0.053,-0.2 0.019,-0.3353 -0.041,-0.4481 z m -3.9517,0.082 0.041,0 c -0.023,0.1202 -0.051,0.2387 -0.082,0.3666 l -0.041,0 0.082,-0.3666 z m -17.314,0.041 0.2037,0.041 -0.2444,0.8147 -0.2037,-0.041 0.2444,-0.8147 z m 14.7475,0.041 c 0.1067,0.099 0.2579,0.168 0.4074,0.2444 l -0.163,0.3259 -0.1629,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1097,-0.09 -0.163,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.1629 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.5296 -0.4482,-0.1222 0.1223,-0.4074 z m -33.243,0.3667 0.041,0.1222 -0.1629,-0.041 0,-0.041 0.1222,-0.041 z m 6.7627,0.1629 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4514,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1707,0.032 -0.2444,0.041 l 0.2444,-0.8963 0.2037,-0.041 z m 1.5888,0.163 c 0,0.051 0,0.1083 0,0.1629 -0.1403,0.1712 -0.5032,0.2873 -1.0184,0.4074 l 0.082,-0.2444 0.937,-0.3259 z m 8.5959,0.1222 c 0.1067,0.1844 0.2375,0.3374 0.3667,0.4889 l 0,0.1222 0.1629,0.041 c 0.068,0.069 0.1302,0.1436 0.2037,0.2037 l -0.1629,0.6518 -0.2037,-0.041 c 0.071,-0.2667 -0.1677,-0.4926 -0.6111,-0.6111 l 0.2444,-0.8555 z m 1.0185,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5812,0.041 0.4482,0.1222 -0.041,0.2037 -0.4889,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1223,0.4481 0.2444,0.8963 -0.4481,0.7333 0.3259,-0.1222 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 -0.2037,-0.2444 -0.2445,-0.082 -0.082,0.4481 -0.2444,-0.041 0.6518,-2.4036 z m -1.2221,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5703 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6925,0.163 0.082,-0.2037 -0.6925,-0.2037 z m -28.6802,0.082 c 0.026,0 0.055,0 0.082,0 -0.126,0.1796 -0.3024,0.329 -0.5296,0.4481 l -0.041,-0.2037 c 0.1448,-0.1144 0.3062,-0.2067 0.4889,-0.2444 z m 13.3623,0.2037 c 0.1273,0.1138 0.2392,0.2232 0.2852,0.3259 l -0.2852,-0.082 0,-0.2444 z m -12.9549,0.2037 0.041,0 0.3259,0.1222 c 0.029,0.1064 0.051,0.1975 0.082,0.2852 l -0.2037,0.774 -0.2037,-0.041 c 0.1427,-0.5334 0.01,-0.858 -0.2852,-0.937 l -0.2037,0.082 0.041,-0.1629 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5666,0.041 0.082,0.2444 -0.1222,-0.041 0.041,-0.2037 z m 13.4439,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.163,0.1629 0,-0.4888 z m 8.5551,0 0.3667,0 -0.041,0.1629 -0.4074,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0185,0 0.4074,0 0,0.2037 c -0.1951,0 -0.3609,0.036 -0.4889,0.082 l 0.082,-0.2852 z m -19.4324,0.082 0.1629,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8104,0.1222 0,0.5296 -0.041,0.041 -0.041,0.163 -0.2444,0 0.2037,-0.6926 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1223 -0.2444,0 -0.2852,-0.041 -0.082,0.041 -0.2851,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2852 z m 3.0555,0.1629 -0.082,0.3667 -0.3667,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.044,0 c 0.6945,0.3642 0.9331,1.0148 0.6925,1.9148 l -0.4888,-0.1222 -0.163,0.5296 0.3667,0.5703 -0.8555,1.2629 0.2037,0.041 -0.2445,0.1222 -0.082,0.2852 0.163,1.3036 -0.5704,0.2445 0.2037,0.041 -0.3666,0.5703 c -0.1387,0.963 0.161,1.5036 0.937,1.7111 l -0.2445,0.1629 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2036,-0.041 0.1629,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.163,-0.611 0.2037,0.041 -0.082,0.4481 0.6925,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2445,-0.8147 0.4074,0.1222 0.2036,-0.8148 -0.4073,-0.1222 0.082,-0.3667 0.4481,0.1222 0.082,-0.3666 -0.4074,-0.1222 0.163,-0.6111 c 0.3695,0.099 0.5983,-0.1382 0.8147,-0.6518 0.1069,-0.4 -0.01,-0.6148 -0.4481,-0.7333 l 0.163,-0.6111 z m -24.5248,0.041 0.4889,0.1223 -0.4074,0.5703 -0.2445,-0.082 0.163,-0.6111 z m 23.3026,0 c 0.1377,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.7029,0.082 0.6518,0 0.2037,0.2445 0.163,0 -0.163,0.6111 -0.6111,0 -0.2444,-0.8556 z m 5.7034,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8887,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2444,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6366,0.082 0.6518,0.3667 -0.2852,1.0185 -0.2037,-0.082 -0.2444,-0.937 0.082,-0.3667 z m 20.899,0 0.4889,0.1223 0.3666,1.1406 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 -0.4481,-0.1222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5703,0.2444 0.082,-0.3666 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5704,-0.3259 0.082,-0.2037 0.4074,-0.774 c 0.069,-0.5531 -0.1193,-0.879 -0.4889,-0.9777 l 0.1223,-0.3667 0.4888,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4482,-1.5888 z m -18.9843,0.041 0.4074,0.1222 -0.041,0.2037 -0.4074,-0.1222 0.041,-0.2037 z m 11.2032,0 0.1629,0 c 0.066,0.058 0.1536,0.1174 0.2445,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2852,-0.5296 0,-0.041 z m -19.9621,0.041 0.3259,0.4889 -0.2444,-0.2444 -0.2037,-0.041 0.1222,-0.2037 z m 1.1,0.082 0.1629,0.041 0,0.163 -0.1629,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0837,0 c 0.044,0.1029 0.088,0.1838 0.163,0.2037 l 0.2037,0.041 0,0.4482 -1.711,6.3552 -0.4889,-0.1222 0.2852,-0.1222 0.041,-0.2037 0.6925,-3.4628 0.2852,-0.1222 0.041,-1.0592 0.4889,-1.9555 z m 1.0185,0 0.2037,0.041 -0.2037,0.6519 -0.2037,-0.082 0.163,-0.5704 0.041,-0.041 z m -15.6437,0.1223 0.041,0.4481 -0.1222,0.041 -0.082,-0.3259 0.1629,-0.163 z m 12.792,0 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -9.5736,0.041 c 0.1346,0.034 0.3236,0.061 0.4888,0.082 l -0.1222,0.4888 -0.4481,-0.1629 0.082,-0.4074 z m -20.9806,0.3259 0.4889,0.1222 -0.082,0.2037 -0.163,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5703 l -0.2036,-0.8148 0.041,-0.3259 z m 3.2999,0.041 0.4481,0.082 c -0.1069,0.3999 -0.01,0.695 0.2852,0.774 l -0.041,0.2037 c -0.4434,-0.1185 -0.7027,-0.1037 -0.774,0.163 l -0.2037,-0.041 -0.082,-0.6111 0.3666,-0.5704 z m 16.8251,0.041 0.2852,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7697,0.1629 0.2037,0.041 -0.041,1.0592 -0.4074,-0.1222 0.2444,-0.9777 z m 20.125,0.2037 0.4481,0.163 -0.041,0.1629 -0.4888,-0.1222 0.082,-0.2037 z m 3.0962,0 0.2037,0.041 -0.4482,0.937 -0.2037,-0.041 0.2037,-0.8148 0.2445,-0.1222 z m -19.514,0.1222 0.937,0.041 -0.1222,0.5704 -0.9777,0 0.1629,-0.6111 z m 8.5959,0.163 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3629,0 0.3259,0 0,0.2037 -0.3667,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2852,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1327,-0.4344 0.163,-0.6111 z m -4.3184,0.1629 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m 32.306,0 0.2037,0.041 c -0.107,0.4 -0.01,0.6951 0.2851,0.7741 l -1.4258,3.5035 0.2037,0.2445 -0.041,0.2036 -0.5296,0.8963 -0.2037,-0.041 0.1629,-1.4259 0.2444,-0.1222 0.1223,-0.4481 0.6925,-3.4221 0.2852,-0.2037 z m -35.3614,0.1223 0.1222,0.8555 0.2037,0.1222 c -0.012,0.096 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1372 0.041,0.2037 l -0.3666,0.1629 c -0.01,-0.043 -0.032,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.163,-1.3444 z m 9.4514,0.041 0.6111,0.1629 -0.041,0.2037 -0.6925,0.082 0.1222,-0.4481 z m -4.8071,0.2444 0.2036,0.082 -0.1629,0.5296 -0.2037,-0.041 0.163,-0.5704 z m 28.9653,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9778 z m -20.4917,0.1222 0.3667,0.5296 -0.163,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.412,0.5666 -0.8555,0.4481 0.107,-0.4 -0.01,-0.6555 -0.4481,-0.774 l 0.041,-0.2037 0.4074,0.1222 0.1629,0.2444 c 0.08,-0.3 0.4464,-0.4543 1.1,-0.5296 z m 10.8366,0.2037 0.1222,0 0,0.1222 -0.1222,-0.1222 z m 13.1179,0 0.8962,0.2444 -0.4481,1.7518 c -0.2955,-0.079 -0.3768,-0.5444 -0.1629,-1.3444 l -0.4482,-0.082 0.163,-0.5703 z m -6.1516,0.041 0.2852,0.5296 -0.041,0.2037 -0.2852,-0.5703 0.041,-0.163 z m -28.5579,0.082 -0.2037,1.6296 -0.8148,0.2444 0.2444,-0.8963 c 0.4491,-0.2229 0.7309,-0.5468 0.7741,-0.9777 z m 0.6925,0 0.2445,0.082 -0.082,0.3666 -0.2852,-0.082 0.1222,-0.3666 z m 21.8768,0.041 0.163,0.041 0,0.2444 -0.4074,0 0.2444,-0.2851 z m -9.5329,0.041 0.2037,0 0.163,0.2444 -0.2852,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9663,0.2444 0.4888,0.1222 -0.082,0.2445 -0.5296,0.937 -0.1629,-0.2445 -0.2037,-0.082 -0.5296,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.6111,0.4482 l -0.163,-0.2445 -0.2037,-0.041 -0.2444,0.1222 0.2037,-1.6295 0.6111,0.1629 0.1222,-0.4073 c 0.739,0.1975 1.156,0.074 1.2629,-0.326 z m 2.8517,0.1222 0.2037,0.082 -0.082,0.3667 -0.2444,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1223,-0.4074 z m 6.6404,0.041 0.2037,0.082 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4481 z m -9.2884,0.1223 0.2037,0.082 -0.2445,0.082 0.041,-0.163 z m -0.041,0.2851 0.1629,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2066 -0.13,0.3083 -0.326,0.3667 l -0.5296,0.041 0,-0.163 0,-0.041 0.8556,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1748,0.1109 0.2037,0.2037 l -0.2445,0 0,-0.2037 z m 1.548,0 0.4074,0 0.082,0.1222 -0.2037,0.8148 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.1629,-0.2444 0.1222,-0.4481 c 0.1892,0.051 0.3495,-0.044 0.4889,-0.2445 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.099,0.3379 -0.3273,0.5986 -0.6518,0.7333 l -0.1222,-0.041 0.4481,-0.774 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.1222 c 0.2001,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3667 -0.2037,-0.041 0.082,-0.3667 z m -26.8469,0.082 0.4074,0.1222 -0.1222,0.4482 -0.4074,-0.1222 0.1222,-0.4482 z m 9.7366,0.1222 0.1629,0 -0.1629,0.5704 0,-0.5704 z m -11.9772,0.163 -0.082,0.3666 0.4074,0.1223 0.1222,-0.3667 -0.4482,-0.1222 z m 4.9701,0.041 0.6926,0.2037 -0.1223,0.3666 0.4482,0.1223 0.1629,-0.6111 0.3259,0.3666 c -0.3477,0.1723 -0.5886,0.4468 -0.7333,0.8148 -0.062,0.026 -0.088,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1402,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2036,-0.041 c 0.071,-0.1146 0.1184,-0.2814 0.1629,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2444 -0.4074,-0.1222 0.082,-0.2444 z m -14.4215,0.2037 0.1222,0.041 c -0.043,2e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2444 0.4481,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.163 z m 20.1657,0 0.163,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.163,0.2445 0.2037,0.041 c 0.1185,0.032 0.2232,0.042 0.3259,0.041 -0.1474,0.093 -0.295,0.1253 -0.4889,0.082 l -0.2037,0.6518 c 0.3877,0.088 0.6346,0.2189 0.7741,0.4481 l -0.4889,0.2444 0.4074,0.082 0.082,-0.2851 c 0.1221,0.2248 0.1522,0.5025 0.041,0.8555 l 0.6518,0.1629 -0.3666,1.1 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2445,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2852,-0.326 -0.2852,-0.041 -0.1222,0.4889 -0.2851,-0.082 2.485,-7.7811 0.2445,-0.041 -0.2852,0.9777 0.6518,0.1222 0.4074,-1.3036 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1222 0.2852,-0.041 0.082,-0.2037 -0.2445,-0.082 0.163,-0.5704 -0.2037,-0.2851 0.082,-0.2037 0.2852,-0.082 z m 6.6812,0.041 0.2037,0.041 -0.041,0.1222 -0.163,-0.1629 z m 7.8626,0 0.041,0.163 -0.2852,-0.082 0.2445,-0.082 z m -20.0435,0.1222 0.4481,0.7741 -0.3259,0.1629 -0.163,-0.041 0.041,-0.8962 z m -0.6926,0.041 0.2037,0.041 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 z m 19.8806,0.163 -0.082,0.2444 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3851,0.1222 0.082,0.1222 0,0.2852 -0.4482,-0.1222 0.163,0 0.2037,-0.2852 z m 3.8702,0.1222 0.2444,0.082 0,0.2852 0,0.6518 0,0.1222 -0.3259,0.1223 -0.4074,-0.082 0.2852,-1.1407 0.041,0 c 0.064,-0.01 0.1027,-0.032 0.1629,-0.041 z m -25.3804,0.1222 0.3667,0.4889 -0.4889,-0.1222 0.1222,-0.3667 z m 35.4021,0.041 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m -11.4476,0.1223 -0.041,0.2037 -0.774,0.082 -0.2037,-0.082 0,-0.041 1.0184,-0.163 z m 6.4367,0 -0.041,0.2037 0.4074,0.082 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3667,0.082 -0.2445,0.6926 -0.3259,-0.082 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6067,0.082 0.2037,0.041 -0.3667,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2444,-0.5704 l 0.041,-0.3259 0.3666,-0.4888 z m 10.3069,0.082 0.2444,0.082 -0.1222,0.4481 -0.2852,-0.041 0.163,-0.4888 z m 2.1184,0.041 0.2444,0.041 -0.082,0.2444 0.041,0.163 c -0.01,0.1969 0.032,0.3372 0.1223,0.4481 l 0,0.082 -0.163,0 -0.4074,0.4481 -0.2037,0 0.2445,-0.8555 0.1629,-0.2852 -0.041,-0.041 0.082,-0.2444 z m 1.3851,0.041 0.2445,0.2852 0,0.2851 c -0.1626,-0.1174 -0.281,-0.2534 -0.4074,-0.3666 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2852,0.041 -0.163,0.4889 -0.2444,-0.082 0.1222,-0.4482 z m 13.9734,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.163 -0.2037,0 c 0.013,-0.1553 0.042,-0.3218 0.041,-0.4481 z m -16.54,0.082 -0.1222,0.3666 -0.041,1.4259 -0.6518,0.8148 0.3666,0.082 -0.4481,0.1222 -0.082,0.2444 0.2852,0.3259 -0.041,0.2037 -0.5703,0.6111 0.082,0.9777 -0.8556,1.4259 0.2852,0.2852 -0.6111,-0.1222 0.4482,-1.5481 -1.5074,0.8555 0.2852,0.2852 -1.0185,0.4481 c -0.1111,-0.2193 -0.218,-0.4175 -0.3259,-0.6518 0,-0.011 0.01,-0.03 0,-0.041 l 0.1222,-0.7741 0.2852,0.082 0.6926,0.4482 c -0.2006,-0.6795 -0.5593,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6926 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.1079,-0.4497 0.1629,-0.6518 l 0.163,-0.1222 0.041,-0.2037 -0.041,-0.1222 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.6111 0.2165,-0.041 0.45,-0.155 0.6925,-0.3666 -0.087,0.5222 -0.036,0.8327 0.2445,0.8962 l -0.3259,0.2037 -0.041,0.082 c -0.1805,0.1124 -0.3752,0.2435 -0.5296,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.326,1.6703 0.5704,0.1222 0.1222,-0.4074 0.4481,-0.2037 -0.2851,-0.2851 -0.2852,-0.082 0.082,-0.2037 1.5073,0.1222 0.2037,-0.6926 -0.5296,-0.1222 0.1222,-0.4074 0.5704,0.1222 0.3666,-1.1406 0.2445,-0.163 -0.2037,-0.041 0.4888,-1.5481 0.3259,-0.1222 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3666 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.163,0.2444 0.2037,0.082 0.3259,-0.1222 -0.041,0.163 c -0.3962,0.037 -0.7256,0.1178 -0.9777,0.2036 l -0.041,0 -0.163,-0.041 0.2852,-0.4481 0.2444,-0.082 z m -12.0179,0.082 0.6111,0.1222 -0.1223,0.4074 -0.4888,-0.5296 z m 3.9516,0.1222 0.326,0.082 -0.041,0.1629 -0.2852,0.082 0,-0.041 0,-0.2851 z m 4.8072,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8104,0.082 0.2851,0.082 -0.082,0.6111 -0.3666,0.1222 0.041,-0.4074 0.1222,-0.4074 z m 29.5764,0.041 0.2037,0.041 -0.1223,0.3666 -0.2036,-0.041 0.1222,-0.3666 z m -7.4552,0.3259 0.4073,0.1222 -0.082,0.4481 -0.4073,-0.2444 0.082,-0.3259 z m -26.3581,0.041 0.4074,0.1222 -0.082,0.2037 -0.4074,-0.1222 0.082,-0.2037 z m 1.6703,0 0.2037,0.2444 -0.041,0.2037 -0.3259,-0.3259 0.1629,-0.1222 z m 18.1695,0.041 c 0.1619,0.088 0.2758,0.1839 0.4889,0.2852 -0.019,0.058 -0.041,0.1396 -0.041,0.2037 l -0.5296,0 c 0.031,-0.1732 0.06,-0.3361 0.082,-0.4889 z m -3.2591,0.2037 0.163,0 0,0.041 -0.163,-0.041 z m -12.1402,0.2037 -0.082,0.5703 -0.041,0.2445 -0.2851,-0.082 0.041,-0.6111 0.3666,-0.1222 z m -3.2998,0.082 0.2444,0.041 -0.1222,0.4889 -0.2852,-0.041 0.163,-0.4889 z m 10.7143,0.041 0.7333,0.1629 0,0.082 -0.082,0.2445 -0.082,0.1222 0,0.163 0,0.041 -0.1222,0.2851 -0.082,0 -0.2037,-0.2851 c 0.017,-0.3234 -0.065,-0.5992 -0.1629,-0.8148 z m 20.0028,0 c -0.1782,0.6667 0.096,1.3875 0.6926,2.1184 l 0.2444,-0.1222 0.163,0.2444 -0.041,0.163 c -0.2464,-0.066 -0.4958,0.012 -0.6926,0.1629 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3667,0.1223 c 0.1402,-0.4439 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2851,-0.2037 c 0.2164,-0.5136 0.4452,-0.7099 0.8147,-0.6111 l 0.1223,-0.4074 -0.6111,-0.1629 0.8555,-0.6518 z m 2.4036,0.041 0.3259,0.4889 -0.1222,0.4481 -0.2852,-0.5704 0.082,-0.3666 z m -17.9658,0.082 0.2851,0.082 -0.1222,0.4074 -0.2444,-0.3259 0.082,-0.163 z m -14.2586,0.041 0.2851,0.041 -0.082,0.2037 c -0.113,0.033 -0.218,0.087 -0.3259,0.1222 l 0.1222,-0.3667 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6926,0.082 c 0.022,-0.1067 0.02,-0.184 0.041,-0.2852 z m -3.9924,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.6769,0 0.2037,0.041 -0.2037,0.8148 -0.2037,-0.041 0.2037,-0.8148 z m -28.4358,0.1629 0.5704,0.1223 -0.2445,0.6925 -0.3666,-0.6111 0.041,-0.2037 z m 2.1592,0.041 -0.082,1.1407 0.6111,0.163 0.082,-1.1814 -0.6111,-0.1223 z m 19.5546,0.1223 0.163,0.041 -0.1222,0.4481 -0.2037,-0.041 0,-0.041 0.041,0 0.1222,-0.4074 z m -13.4438,0.041 0.1222,0 0.2852,0.7333 -0.1222,0.1629 -0.163,0 -0.2037,-0.6111 c 0,-0.011 -0.01,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.134 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.081,0.4888 -0.3259,0 0,-0.4888 z m 4.0332,0 0.2444,0.041 -0.041,0.1629 -0.2444,-0.082 0.041,-0.1222 z m -25.7062,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.1723,0.082 -0.041,0.1629 0.041,0.041 0,-0.2037 z m -21.5509,0.041 0.082,0 0,0.3259 -0.2037,-0.041 0.1222,-0.2852 z m -10.918,0.2444 c 0.2732,-0.046 0.6795,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3875,-0.088 -0.75,0.1822 -0.937,0.774 l -0.5703,-0.8962 c 0.053,-0.1665 0.1749,-0.2803 0.4481,-0.3259 z m 14.0957,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.774,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.1549,0.041 0.4888,0.1222 -0.2852,1.0185 -0.3666,-0.4889 0.163,-0.6518 z m -17.9659,0.041 0.2444,0.041 -0.2851,0.082 0.041,-0.1222 z m 10.8366,0 0.2036,0.041 -0.041,0.1222 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2851 z m 9.5736,0.1222 -0.1222,0.082 -0.082,0.163 0.2037,0.2444 0,-0.4889 z m -13.8105,0.082 0.4074,0.082 -0.3259,0.4481 -0.3259,-0.082 -0.041,-0.1629 0.2851,-0.2852 z m -10.4291,0.041 0.1222,0.082 0,0.2444 -0.163,-0.041 c 0.032,-0.1024 0.017,-0.1885 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1223,0.6111 c -0.1737,-0.1302 -0.3351,-0.2839 -0.4888,-0.3666 -0.043,-0.2456 -0.071,-0.5152 -0.041,-0.8148 z m -8.5552,0.041 0.3667,0 0,0.2444 -0.3667,0 0,-0.2444 z m -16.4585,0.082 0.163,0.041 -0.1223,0.4074 -0.2851,-0.082 0.082,-0.2852 0.1629,-0.082 z m 4.1961,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.5209,-0.509 -0.5296,-1.3036 z m 1.7925,0.163 -0.2444,0.6925 0.6518,0.163 0.2037,-0.6926 -0.6111,-0.1629 z m 3.0147,0.2444 c 0.5369,0.1214 0.591,1.2374 0.163,3.2998 -0.1491,0.2487 -0.3559,0.7021 -0.5704,1.1407 l -0.5703,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5931,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.163,-1.6703 z m 9.6959,0.041 0.1222,0.1222 -0.2445,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1223 0.2445,0.2445 0.3666,-0.4481 z m 5.3775,0 c 0,0.306 -0.1563,0.4481 -0.5704,0.4481 l 0,0.2037 0.4074,0 -0.3666,0.6518 -0.4074,-0.082 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.4074,-0.774 c 0.1595,-0.01 0.3126,-0.041 0.4888,-0.041 z m -13.4438,0.041 0.2851,0.041 -0.4481,1.2629 -0.082,0.3259 c 0.198,0.081 0.3666,0.1667 0.5296,0.2444 l -0.2444,0.4482 -0.1223,-0.2037 -0.3259,0.1629 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.163,-0.4888 0.041,0.041 0.2851,0 0.163,-1.3037 z m -8.1886,0.082 0.5704,0.1222 -0.163,0.4074 -0.4074,-0.5296 z m 13.1587,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.3591,0 0.3259,0 c -0.046,0.2543 -0.075,0.4486 -0.082,0.6518 l -0.6111,0 0.082,-0.5703 0.2852,-0.082 z m -3.1369,0.082 0.082,0.4889 c -0.2043,-0.1068 -0.3489,-0.235 -0.4482,-0.4074 l 0.3667,-0.082 z m -1.7518,0.082 -0.1222,0.4888 -0.163,0 0,-0.4073 0.2852,-0.082 z m 18.0066,0.041 0.2037,0.041 -0.163,0.6518 -0.2037,-0.082 0.163,-0.6111 z m 0.6518,0 0.4889,0.1222 -0.4074,1.4666 -0.163,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2444,0.041 l 0,-0.3667 0.3259,-1.2221 z m -21.225,0.041 0.1223,0 0,0.041 -0.1223,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.1343,0.08 0.2037,0.1222 l -0.2445,0.041 0.041,-0.1629 z m -12.1809,0.082 0.2851,0.041 -0.2851,0.8962 -0.2852,-0.041 0.2852,-0.8962 z m 1.7925,0.163 -0.1222,0.4481 0.611,0.1222 -0.4888,-0.5703 z m 19.5954,0 c 0.045,0.041 0.1551,0.1194 0.2037,0.1629 l -0.082,0.5296 -0.8963,2.8517 -0.5703,0.8148 0.3666,1.0592 -0.6518,-0.1629 -0.3667,2.0776 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.163,-1.4666 0.4889,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2036,-0.1222 -0.4073,-0.5703 0.3666,-0.1222 0.2444,0.041 0.082,-1.1407 0.3667,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1222,0.1629 -0.163,-0.041 0.041,-0.1222 z m 1.8332,0.1222 0.082,1.6295 0.4889,0.1222 0.2037,-0.2036 -0.2445,0.8147 c -0.1146,-0.1897 -0.1569,-0.2813 -0.2851,-0.4888 l -0.2037,0.082 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4074,-0.6519 0.4481,-1.2629 z m 0.5296,0 0.3667,0.082 0,0.082 -0.2445,0.3666 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.1629 0.2037,0.041 -0.1222,0.4482 -0.2037,-0.082 0.1222,-0.4074 z m 1.7926,0.2445 0.2036,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.1629,0.1222 l -0.3667,-0.082 0.326,-1.2222 z m -32.1023,0.041 0.2445,0.082 -0.9778,3.0961 -0.2444,-0.041 0.9777,-3.1369 z m 29.5764,0.1629 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4481 0.163,-0.163 z m -14.0141,0.163 0.2037,0 0,0.4888 -0.2037,0 0,-0.4888 z m 11.692,0.082 0.2037,0.082 0.041,0.2444 -0.2852,-0.2037 0.041,-0.1222 z m -24.2803,0.082 -0.163,0.4481 0.6111,0.163 0.1629,-0.4889 -0.611,-0.1222 z m 27.132,0.041 0.2037,0.041 0.041,0.6925 -0.4073,-0.1222 0.1629,-0.6111 z m -29.0468,0.041 0.2852,0.041 -0.2037,0.6518 -0.2444,-0.082 0.1629,-0.6111 z m 31.5727,0.2037 0.4073,0.1222 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.082 0.082,-1.1407 c -0.055,-0.013 -0.1121,-0.01 -0.163,0 l 0.082,-0.2852 z m -19.5547,0.2444 0.041,0 0,0.4481 -0.2037,0 0.163,-0.4481 z m -5.5405,0.041 0.6926,0.163 -0.5704,1.1814 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9479,0.2037 0.4074,0 0,0.4889 0.2444,0 0.041,-0.041 -0.041,0.2851 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3666,-0.082 -0.163,0.041 c 0.1408,-0.1215 0.2037,-0.2569 0.2037,-0.4481 z m 13.8919,0 0.2445,0.041 0.1222,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1222,-0.4073 z m -11.8142,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2037,-0.2036 c -0.1035,0 -0.1645,0.01 -0.2444,0.041 l 0.2036,-0.6519 0.4482,-0.1222 z m 0.774,0 0.4889,0 0.1629,0.041 -0.2444,0.774 -0.5296,0.3259 -0.2444,0 0.082,-0.2037 0.1629,0 0,-0.2036 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3667 z m 2.8517,0 0.6519,0 -0.082,0.2037 -0.6111,-0.1222 0.041,-0.082 z m -22.5286,0.1629 0.6519,0.163 -0.4889,0.6111 -0.3667,-0.082 0.2037,-0.6926 z m 14.9512,0.1223 0.2037,0 0.3666,0.082 -0.4073,0.2037 -0.041,0.2037 0.041,0.1222 -0.163,0.041 -0.2037,0 0.2037,-0.6519 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.8214,0.1629 0.2445,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.082 -0.2444,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2037,-0.082 0.163,-0.4481 -0.5704,-0.1222 -0.041,0.2037 0.3259,0.8148 -0.3259,0.1222 c -0.1051,0.3329 -0.023,0.6072 0.2852,0.774 -0.04,0.1099 -0.074,0.22 -0.1222,0.3259 l -0.2445,0.082 0.1223,-0.4074 -0.5704,-0.1222 -0.2444,1.7518 c -0.1708,0.1743 -0.368,0.3712 -0.5704,0.5296 l 0.2037,-0.2852 c 0.09,-0.6137 -0.1265,-0.9903 -0.6111,-1.0999 l 0.1223,-0.4074 0.611,0.1222 0.1223,-0.2852 -0.3259,-0.2851 0.4481,-0.1223 0,-1.1814 0.5296,-1.7925 z m -27.3765,0.041 0.8148,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0184 0.1222,-0.4074 z m 2.4851,0.041 0.5703,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.0207,0.1222 0.2852,0.041 -0.2037,0.6926 -0.2852,-0.041 0.2037,-0.6926 z m -23.3026,0.041 0.2037,0 0,0.2037 -0.2445,-0.041 0.041,-0.1629 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8142,0.2852 -0.3666,1.3444 -0.041,0 0.4074,-1.3444 z m -11.4883,0.082 0.2444,0.082 -0.082,0.2037 -0.2852,0.1222 0.1222,-0.4074 z m 10.3069,0 0.041,0 c 0.027,0.1987 0.01,0.4181 -0.041,0.6518 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.1629,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.163,0 -0.4481,0.4481 -0.2037,0 0.4888,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5297,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.9028,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1383,-0.184 -0.2037,-0.2851 z m 10.7143,0.2037 -0.082,0.2852 -0.041,0.082 -0.041,0.1222 -0.1629,-0.2037 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.163 c -0.028,-0.054 -0.092,-0.1467 -0.1222,-0.2037 z m -4.1553,0.041 0.6111,0.1222 -0.081,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.1629,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2445,-0.9777 z m -29.4542,0.082 1.2221,0.082 -0.2037,0.6111 -1.2629,0 0.2445,-0.6926 z m 10.918,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2993,0.082 0.2852,0.4074 -0.2852,0.4481 -0.2444,-0.041 0.2444,-0.8148 z m 1.1407,0.3259 0.1222,0.6111 -0.2852,-0.082 0.163,-0.5296 z m 4.1554,0.041 0.1222,0 c -0.064,0.204 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8963 -0.4074,0.4888 -0.2037,-0.041 0.3259,-1.1814 -0.4481,-0.1222 0.2444,-0.8148 0.4074,0.1222 0.081,-0.2852 z m -17.2326,0.041 0.3667,0 0,0.2852 -0.2445,0.082 -0.1222,-0.041 0,-0.3259 z m 0.7741,0 0.4074,0 -0.163,0.5703 -0.2444,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.0369,0 0.4074,0 -0.1222,0.6926 c -0.146,0.1526 -0.3488,0.2496 -0.5704,0.3259 l -0.611,-0.4482 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.414,0 0.5703,-0.1928 0.5703,-0.6518 z m -22.4471,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1223,-0.4074 z m 21.4287,0 0.2852,0.163 -0.082,0.2037 -0.2852,-0.041 0.082,-0.326 z m -2.3221,0.082 0.2851,0.082 -0.2851,0 0,-0.082 z m -14.2994,0.3667 0.4889,0.5296 -0.2037,0.6518 -0.041,0 -0.2444,-0.3259 -0.5296,-0.1222 c -0.048,0.151 -0.1392,0.2794 -0.2445,0.3666 l -0.8555,-0.2444 c -0.047,-0.2318 -0.2221,-0.4009 -0.6111,-0.4889 l 0.041,-0.2037 0.5704,0.1222 0.2037,0.2445 c 0.1052,-0.3329 0.5689,-0.4461 1.4258,-0.5296 z m 3.1777,0.3259 0.3666,0.4481 -0.6518,-0.1222 0.2852,-0.3259 z m 21.673,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.1636 -0.1222,0.2444 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3443,0.1222 0.2036,0.3666 -0.041,0.2037 -0.2444,-0.3666 c 0.023,-0.07 0.061,-0.132 0.082,-0.2037 z m -25.91,0.4074 0.2445,0.041 -0.1223,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -1.5073,0.082 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1177 -0.163,-0.163 z m -3.9109,0.082 c 0.1983,0.045 0.3656,0.1069 0.5296,0.1222 l 0.4888,0.6111 0,-0.4889 -0.1222,-0.1222 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2001 0.3052,0.427 0.4889,0.6518 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.1629 -0.2852,-0.041 -0.6518,0.2851 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4889,-0.4889 l 0.082,-0.2036 -0.3666,-0.082 c -0.1552,-0.1722 -0.3026,-0.3448 -0.4482,-0.5297 l 0.6519,0.1223 0.1629,-0.4889 z m 11.7328,0.2444 0.4481,0 0,0.4889 -0.4481,0 0,-0.4889 z m 11.692,0 0.163,0 0,0.1222 -0.163,-0.1222 z m -4.4405,0.041 0.1629,0.2852 -0.041,0.1629 -0.9777,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1963 0.4889,-0.4073 l 0.3666,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.1569,0.2268 0.1629,0.3667 l -0.6925,0 0.1629,-0.2852 0.3667,-0.082 z m 17.1103,0.041 0.163,0.041 -0.041,0.163 -0.163,-0.082 0.041,-0.1222 z m -21.1435,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2445,0.2852 l -0.3667,0 0,-0.2852 z m 11.6921,0.4481 0.5296,0.1223 -0.082,0.2444 -0.5296,-0.1222 0.082,-0.2445 z m -13.0365,0.082 0.163,0.1223 -0.081,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2445,0.041 0.1222,0.082 0.1629,0 -0.082,0.2445 -0.3666,0.2037 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2037 -0.1222,-0.2852 0,-0.082 z m 25.4211,0.041 0.1222,0.4482 -0.1222,0.2851 0,-0.7333 z m -16.1734,0.163 -0.041,0.2037 -0.041,0.4889 -0.937,-0.1223 -0.082,-0.081 0.7741,-0.3666 -0.3667,-0.082 0.6926,-0.041 z m -3.5035,0.041 -0.041,0.1222 -0.2852,-0.082 0.3259,-0.041 z m 4.7664,0 0.4482,0.082 0,0.041 0,0.2037 c -0.1905,0 -0.299,0.048 -0.4074,0.1222 l -0.041,-0.4481 z m -2.5665,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2444,-0.2444 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7887,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.163,0.2444 0.2852,0 0.1629,-0.1222 0.2852,0.2852 -0.3259,0.3666 c -0.7619,0.018 -1.1994,0.1248 -1.2629,0.326 l -0.082,0.2037 0.2851,0.082 0.5297,0 -0.2445,0.2851 c -0.3067,0 -0.7246,-0.1575 -1.1814,-0.3666 l 0.1222,-0.3259 -0.3666,-0.082 -0.3259,0.1629 c -0.3254,-0.1839 -0.6736,-0.4252 -1.0593,-0.6925 0.53,0.1198 0.9409,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.1629 1.3851,0.1629 l 0.082,0 0.163,0.041 0.041,-0.1629 0.1222,-0.1222 z m 1.9148,0.082 c 0.012,0.2782 0.175,0.4717 0.611,0.5704 l -0.041,0.1222 -0.1629,0.082 c -0.4016,-0.033 -0.7787,-0.07 -1.1,-0.082 0.1876,-0.1742 0.4654,-0.4656 0.6926,-0.6926 z m 25.1766,0 0.1222,0.041 -0.2444,1.0185 -0.1223,-0.041 0.2445,-1.0185 z m -10.9588,0.082 0.2445,0.082 -0.082,0.2852 -0.163,0 0,-0.3667 z m -20.8175,0.1222 c 0.2965,0.3446 0.6323,0.7123 0.9777,1.1 l -0.7333,-0.163 c -0.294,-0.2508 -0.5827,-0.5252 -0.8555,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2445 0.4481,0.7333 -0.3259,0 c -0.2314,-0.1354 -0.4738,-0.25 -0.6926,-0.4074 0.047,-0.067 0.091,-0.1469 0.1222,-0.2445 l 0.4482,-0.082 z m 23.2211,0.1629 0.5704,0.1222 0,1.1815 -0.4482,0.1222 -0.5296,-0.1222 0.4074,-1.3037 z m 11.2847,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2956,0.1222 0.2445,0 0,0.082 -0.2445,-0.041 0,-0.041 z m -19.6768,0.1223 c 0.029,0.01 0.054,0 0.081,0 l 0.082,0.082 -0.3667,0 0.2037,-0.082 z m 29.169,0.041 -0.041,0.3666 -0.2852,-0.082 c 0.1196,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2444,0.1629 -0.192,0.1594 -0.3681,0.3385 -0.5704,0.4889 -0.078,-0.08 -0.1397,-0.2017 -0.2037,-0.3259 0.1573,-0.079 0.2844,-0.1615 0.4482,-0.2445 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2967,-0.1111 0.5296,-0.2852 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1298,0.1453 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.042 -0.139,-0.078 -0.2037,-0.1223 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.1659,-0.1046 -0.2444,-0.1629 l 0.163,-0.041 0.041,-0.163 z m 10.0218,0.082 0.3666,0.2444 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.082 -0.2445,0.1222 -0.1629,0 0,-0.2037 z m -3.0962,0.1222 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2445,0.2852 0.082,0 0,0.4074 c -0.3616,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1557,0 0.2444,0 l 0,-0.3259 z m -6.4775,0.3259 0.6518,0 0,0.4889 -1.0184,0 0.3666,-0.4889 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1222 c -0.1062,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2444 z m 9.4107,0.041 c -0.02,0.2876 -0.041,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5704,-0.8148 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2444,-0.041 c 0.043,-0.093 0.1037,-0.1841 0.2444,-0.2444 z m -8.6366,0.163 0.6518,0 0,0.2037 -0.6518,0.2036 0,-0.4073 z m 1.0184,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.5851,0 0.3666,0 -0.3666,0.4073 -0.4889,0 0.4889,-0.4073 z m -15.1549,0.2037 0.041,0 0,0.2036 -0.4481,0 0,-0.041 0.4074,-0.1629 z m 3.3406,0 0.6111,0 0,0.2036 -0.6111,0 0,-0.2036 z m 4.9701,0 0.6111,0 0,0.2036 -0.6111,0 0,-0.2036 z m 3.911,0 0.6518,0 0,0.2036 -0.6518,0 0,-0.2036 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.163,0.4888 -0.5296,-0.1222 0.041,-0.082 c 0.1755,-0.071 0.415,-0.2008 0.6111,-0.2852 z m 5.296,0 c 0.072,0.09 0.1611,0.1484 0.2445,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2444,-0.1222 z m -32.6318,0.2851 0.6518,0 0,0.2445 -0.6518,0 0,-0.2445 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2445 0.4481,0 0,0.2851 -0.4481,0 0,-0.2851 z m 9.3292,0 0.6111,0 1.0185,0.2851 1.2221,-0.2851 1.3037,0 0,0.4888 -5.1739,0 0,-0.2037 1.0185,-0.2851 z m 4.522,0 4.6035,0 -0.4481,0.4888 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4888 z m 5.459,0 0.5704,0 0,0.2851 -0.5704,0 0,-0.2851 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.163 0.041,-0.041 z m -30.5134,0.2851 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6114"
+           transform="matrix(0.61596339,0,0,0.61596335,-144.21421,403.21413)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3530);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+           d="m -163.14137,992.23552 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2036,0 -0.2036,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55511 0.6111,2.2407 0.082,0.5703 c -0.028,0.081 -0.061,0.1678 -0.082,0.2445 0.066,0.049 0.1079,0.1081 0.1629,0.1629 l 0,0.163 -0.2444,-0.082 c -0.024,-0.01 -0.057,0 -0.081,0 0.036,-0.1267 0.062,-0.2569 0.1222,-0.3667 l -0.163,-0.6111 -0.4073,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8556 c -0.09,0.2617 -0.1903,0.502 -0.2852,0.6925 l 0,0.9777 0.2444,0.082 -0.041,0.163 -0.2037,-0.082 0,11.1217 0.163,-1.1814 0.1222,0.041 0,1.0185 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2445,0.3666 l -0.2037,-0.2444 -0.082,0 -0.1629,-0.6518 0,0.5703 -0.041,0 -0.2445,0.1222 0,0.8963 0.2852,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1223 0,0.2445 -0.3667,0 0,0.8555 -0.2852,0.082 0,0.2037 0.2852,-0.082 0,0.082 c 0.4141,0 0.5704,-0.1422 0.5704,-0.4482 l -0.2037,-0.2036 0.5296,0 -0.1223,0.081 -0.082,0.2444 0.1223,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3813,0 c 0.2347,-0.6383 0.527,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.163,0 -0.2444,-0.3259 0.082,-0.2444 -0.2444,0.082 -0.6519,0 -0.3259,0.1222 0,-0.041 -0.3666,-0.082 -0.2852,0.2037 -0.4481,-0.2037 0,-0.2445 1.0592,0 0,-0.2036 -0.2037,-0.2037 0,-0.2445 0.4889,0.163 -0.082,0.2037 0.5703,0.1222 0.2852,-0.041 0.6111,0.2037 -0.082,0.2444 0.2851,0.082 0.5704,-0.041 0.6518,0.2445 0,0.2036 c -0.3219,1e-4 -0.8163,0.3866 -1.3851,1.1815 l 18.5769,0 c 0.082,-0.08 0.1634,-0.1631 0.2444,-0.2445 0.2121,0.076 0.5041,0.165 0.7333,0.2445 l 1.4666,0 -0.2444,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5296,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1355,0.056 0.2037,0.082 l -0.041,0.082 1.3036,0 0.3667,-0.2445 -0.041,0.2445 2.5665,0 0.082,-0.2445 0.2444,0.041 -0.082,0.2037 0.4482,0 0,-1.3443 -0.082,0.2444 -0.2445,-0.041 0.1223,-0.4074 0.2037,0.082 0,-9.044 -0.1223,-0.041 0.1223,-0.5704 0,-1.711 -0.2852,0.082 -0.041,0.2037 0.2037,0.3259 -0.6111,1.1 -0.2037,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0592 -0.6518,2.3629 -0.5703,0.2851 1.1814,-4.3997 0.3666,0.5703 0,-1.3444 -0.1629,-0.041 0.1629,-0.5703 0,-1.8333 c -0.2597,-0.3921 -0.5238,-0.7828 -0.8147,-1.1407 l 0.8147,0.041 0,-1.2221 -0.2037,0.8555 -0.2444,-0.082 0.3259,-1.1814 0.1222,0.041 0,-3.5443 -0.082,0.2852 -0.4481,-0.1223 0.5296,-2.0369 0,-7.98483 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2852,-0.16296 0.082,-0.28517 c -0.3163,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.1,0 2.811,1.18142 -0.1222,0.40739 0.2852,-0.16295 0.6925,0.20369 -0.4888,0.81478 -0.2037,-0.0407 -0.163,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40739 0.3667,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2445,-0.0815 -0.2851,0.2037 -0.2445,-0.0407 -0.6925,-0.48887 -0.5704,0.36665 -1.5481,-1.2629 -1.8332,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2999,0 1.0185,1.54807 0.2037,0.0407 -0.163,0.69256 -0.4481,-0.12221 -0.082,0.20369 c 0.3276,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44813 -0.7333,-0.2037 -0.163,0.44813 0.4889,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 -0.1222,0.40739 0.4481,0.12221 -0.163,0.69256 c -0.4096,-0.10951 -0.697,0.12321 -0.937,0.69253 -0.022,0.084 -0.038,0.1752 -0.041,0.2445 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.089 -0.01,-0.189 0,-0.2852 l 0.2037,0 0,-0.2037 -0.1629,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.20375 l 0.5296,0.16295 0.1629,-0.65181 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2852,-0.16295 0.081,-0.28518 -0.2037,-1.46659 0.6518,-0.24444 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2852,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6925,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48886 -0.082,0.44813 -0.3667,-0.57034 0.082,-0.36665 -0.4481,0 -0.8555,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.1629,-0.24443 0.2851,-0.12222 0.082,-1.18142 0.3667,-1.42586 -0.4889,0 -0.6111,2.36285 -0.2444,0 0.6111,-2.36285 -2.6073,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9987,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4354,0.62502 -0.774,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5703,-0.0815 0,-0.28517 c 1e-4,-0.20089 -0.2546,-0.36699 -0.774,-0.48887 l -0.041,-0.20369 -0.9778,0 c 0.001,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2786,-0.13728 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83278 0,-0.937 -0.041,0.041 -0.163,0.6111 0.2037,0.2851 z m -34.3429,-12.75131 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.2956,0.36665 0,0.48887 -0.4481,0 0.4481,-0.48887 z m 7.8219,0 0.082,0.0407 0.2037,0.89626 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1223,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.974,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24443 z m 13.0365,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8142,0.0407 0.4482,0.1222 -0.1223,0.48888 -0.4888,-0.12223 0.1629,-0.48885 z m -5.8256,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6519,-0.65182 1.1,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.7741,3.87019 -0.2851,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5704,0 0.163,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2852,-0.28517 1.3852,-5.21458 z m -17.7214,0.2037 0.2444,0 0.041,0.16295 -0.082,0.0407 -0.1222,0 -0.082,-0.20369 z m 14.5438,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2445,-0.0815 0.1223,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.8208,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.16295 c -0.074,0.27639 0.1418,0.51308 0.5704,0.65182 l 0,-0.5296 -0.5704,-0.12222 z m -6.07,0.32591 0.4481,0.12222 -0.3667,1.30364 -0.4481,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6518,0.20369 0,0.28518 -0.8555,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8332,0 -0.082,0.32591 -0.2851,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6519,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.1222 -0.4074,-1.3037 0.1223,-0.48883 0.2444,0.0407 -0.1222,0.48883 0.4481,0.1223 0.041,-0.2037 -0.2852,-0.81482 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48887 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3037,0 0.3666,0 0.4074,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.2922,0 0.6519,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4482,-0.12222 z m 10.144,0.36665 0.4888,0.12222 0.4074,0.57034 -0.6518,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.363,-0.37134 -0.2444,-0.81478 l 0.2851,-0.16295 0.041,-0.20369 0,-0.937 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5026,0.0407 0,0.40739 -0.2851,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2445,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7284,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1918,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4073,0 0,0.24443 -0.4073,0 0,-0.24443 z m 1.0592,0 0.8147,0 0,0.24443 -0.8147,0 0,-0.24443 z m 22.3656,0.0407 0.4481,0.12221 0.2852,0.28518 0.082,-0.40739 0.2444,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.163,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.6161,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.0023,0.0407 0.2852,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -20.4916,0.0407 0.3666,0 0,0.28517 -0.3666,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.1629,0.28518 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5521,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3667,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.163,-0.16296 z m -3.5035,0.0815 0.082,0.44812 -0.4482,0.12222 -0.041,-0.16295 0.326,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2851,1.0667 0.7124,1.54315 1.3037,1.38512 l 0.081,0.16295 -0.163,0.24444 -0.2444,-0.12222 c -0.5965,0.73087 -0.8709,1.45178 -0.6926,2.11845 l -0.8555,-0.65185 0.6111,-0.16296 -0.1222,-0.40739 c -0.3696,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6034,0 0,0.0815 -0.041,0.16296 -0.2036,-0.0407 0.2444,-0.20369 z m -10.5513,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2211,0.0407 0.4482,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.163,1.46659 -0.4074,0.57035 0.2037,0.2444 -0.3259,0.2037 0.3667,0.5704 -0.2852,0.1222 -0.2444,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4482,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.056 0.041,0.082 l -0.1222,0.081 0.163,0.041 c 0.083,0.2038 0.1422,0.4408 0.1629,0.6925 l -0.041,0.2037 -0.1629,-0.2444 -0.2852,-0.082 -0.041,0.041 0.2444,-1.5481 0.7741,-2.8517 0.4481,-0.81478 -0.2852,-1.05921 0.5296,0.16296 0.326,-2.07769 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2851,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.326,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.1629,0 -0.2037,0.28517 -0.2037,0 0.3666,-0.61108 1.2629,-0.2037 z m 4.8072,0 0.1629,0.65183 -0.2036,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0886,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.20369 z m 32.5911,0.40738 1.5074,1.34439 -0.1223,0.44812 -0.5296,-0.16295 -0.4888,1.79249 -0.2037,-0.041 0.4074,-2.48505 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4173,0.12222 0.041,0 0.2037,0.2037 -0.1629,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4073,0.12222 c -0.1394,0.12918 -0.3454,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4889,-0.24443 z m -4.6443,0.0407 0.6518,0.20369 0,0.44813 c -0.414,0 -0.6518,0.1829 -0.6518,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4476,0.0407 0.326,0.61109 -0.041,0.20369 -0.326,-0.61108 0.041,-0.2037 z m -18.088,0.0407 0.5703,0.28518 0.6519,2.36289 0,0.082 -0.3667,-0.5296 -0.2037,0 0.5704,0.8555 0.041,0.6518 0.2851,0.1222 -0.3666,0.5704 -1.1814,-4.39985 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2445,-0.0407 0.2852,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.163,-0.65182 0.1223,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36284 -0.2852,-0.1629 -0.8148,-3.05546 z m -7.8219,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4444,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.776,0.20748 -1.0756,0.74808 -0.937,1.71108 l 0.3667,0.5703 -0.2037,0.041 0.5703,0.2444 -0.1629,1.3037 0.082,0.2852 0.2444,0.1222 -0.2037,0.041 0.5703,0.8555 c -0.1409,0.1125 -0.2863,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4074,-0.1223 -0.2037,-0.8147 -0.4481,0.1222 -0.2037,-0.8148 0.4074,-0.1222 -0.1222,-0.4481 -0.6519,0.2037 0.082,0.4481 -0.2037,0.041 -0.1629,-0.6111 c 0.1174,-0.7457 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.1629,-0.6111 0.2037,-0.041 1.3444,-2.03691 z m 31.3282,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28134 -0.041,0.2037 0.2852,0.082 0.2851,-0.1222 0.2445,0.041 -0.6926,2.648 c -0.6159,-0.3229 -0.8481,-0.9056 -0.6111,-1.7925 l -0.2037,-0.082 0.2852,-0.1222 0.1222,-0.4889 0.082,-1.1814 -0.5703,-0.1222 -0.6926,2.6888 0.2444,0.2851 -0.3666,0.1222 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.5674 -0.1894,1.0843 -0.2444,1.5074 -0.1694,0.1075 -0.2849,0.3971 -0.4074,0.8555 l -0.3259,0.1222 -0.4482,-0.1222 -0.1629,-0.937 0.5703,-0.4889 0,-0.1222 c 0.055,0.088 0.1487,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2037 0.2444,-1.874 0.3667,-0.5296 0.7333,-3.6257 0.2444,-0.8963 -0.4481,-0.1222 -0.3667,1.3444 -0.3666,0.1222 0.2444,0.2852 -0.1222,0.4888 -0.5296,-0.1629 0.8148,-3.09618 z m -9.207,0.12221 0.2037,0.0407 -0.2445,0.89624 -0.2851,0.163 -0.2037,-0.082 0.5296,-1.01851 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2445,-0.0407 0.1222,-0.40739 z m -24.973,0.0815 0.2037,0.81474 -0.2037,0.041 -0.2444,-0.774 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2036,0.69254 -0.2037,-0.041 0.1629,-0.69254 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48891 -0.082,-0.3667 0.2851,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1223,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12222 0.7741,0.20369 -0.041,0.2444 -0.7741,-0.2037 0.041,-0.24439 z m -8.7181,0.0407 0.5703,0.16299 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.24449 z m -15.4808,0.0407 0,0.61109 0.4482,0 c 0,0.3379 0.036,0.6266 0.1222,0.8148 -0.2102,0.043 -0.4006,0.095 -0.5704,0.1629 l 0,-0.041 -0.3666,-0.4074 -0.6518,0.2037 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2445,-0.8963 1.3444,-0.16295 z m 2.8925,0 0.2852,0.20369 0.2037,0 1.8739,-0.20369 0,0.20369 -0.2851,0.6518 c 0.3992,-0.2212 0.7009,-0.4734 0.8148,-0.77401 0.071,0.0934 0.1312,0.19371 0.2036,0.28521 l -0.3666,0.041 0,0.4481 0.4074,0 0.2444,0.2852 0.163,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2851,0.3259 l 0.041,0.163 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2444,0.1222 -0.082,0.163 -0.6518,-0.1223 c -0.065,-0.1287 -0.107,-0.2443 -0.1223,-0.3666 l 0.326,0 0.3666,0.082 0.041,-0.2037 -0.2852,-0.5296 c -0.2711,-0.072 -0.5057,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.1629 c -0.064,0 -0.1436,-0.01 -0.2037,0 l -0.5296,-0.611 -1.0592,0.2037 -0.774,-0.2037 -0.4481,0.4481 -0.163,-0.2444 0,-0.2037 c 0.2415,0 0.4326,0.016 0.6111,0 0.5354,-0.049 0.774,-0.1779 0.774,-0.40743 z m 16.2955,0 0.2445,0.0815 -0.2445,0.89629 -0.2444,-0.082 0.2444,-0.89629 z m -19.962,0.40739 0,0.4481 0.4074,0 0,-0.4481 -0.4074,0 z m -1.5481,0.082 0.2445,0.2852 -0.2037,0.3666 -0.163,-0.5296 0,-0.082 0.1222,-0.041 z m -10.5106,0.1222 0.041,0.3259 -0.163,0.041 0.1222,-0.3666 z m 21.836,0 0.163,0 0,0.2445 -0.163,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.7741,1.8333 -0.5296,0.3259 -0.2852,-1.5073 -0.1222,-0.4482 -0.2444,-0.1222 -0.163,-1.4258 0.2037,-0.041 z m -0.8962,0.041 1.1407,4.2369 -0.326,-0.082 0,-0.082 -0.2851,-0.163 -0.6926,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4889,-0.1222 z m 19.8805,0.082 0.2445,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2232,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2036,0.041 -0.1223,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.9811,0.2445 0.2444,0.041 -0.163,0.4888 -0.2036,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2444,0.041 -0.1629,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8138,0.082 0.3667,0 c -0.095,0.1753 -0.2075,0.273 -0.3667,0.2852 l 0,-0.2852 z m 7.1293,0 0.163,0 0,0.2037 -0.163,0 0,-0.2037 z m -1.5073,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7257,0.082 0.3259,0.6111 -0.1222,0.4074 -0.4481,-0.1223 0.2444,-0.8962 z m 1.0185,0.2852 0.2037,0.041 c -0.079,0.2957 0.1602,0.5611 0.6518,0.6925 l -0.2445,0.8963 c -0.1373,-0.1603 -0.2847,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4481,-0.1222 0.2444,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4481 -0.163,-0.082 0.082,-0.4074 z m 3.3813,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.09,-0.065 -0.1747,-0.1267 -0.2444,-0.2037 z m -7.4145,0.1222 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1222,-0.041 0.1629,-0.082 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.6111,0.2445 c -0.4434,0.1185 -0.6365,0.4147 -0.5296,0.8147 l 0.2444,0.1222 -0.2444,0.7333 0.041,0.2037 0.4481,-0.1222 -0.1222,-0.4481 0.2037,-0.041 0.1222,0.4481 -0.3666,1.1407 -0.3667,-0.082 c -0.056,0.071 -0.068,0.1343 -0.1222,0.2037 l -0.4481,-1.5888 0.041,-1.1 -0.3259,-0.082 0.2037,-0.2851 -0.041,-0.2445 -0.4889,0.1223 -0.082,-0.163 0,-0.082 0,-0.163 c 0.3324,-0.117 0.5134,-0.4115 0.4481,-0.9369 l -0.4481,-0.7741 -0.041,-0.1629 0.5703,-0.3667 z m 31.1653,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 8.5144,0.041 0.2037,0.082 -0.2444,0 0.041,-0.082 z m 16.9066,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.163,-0.6926 0.4481,0.5704 -0.5703,0.8148 -0.163,1.8739 -0.4481,0.5297 -0.2444,-0.041 c 0.5137,-1.9216 0.4109,-2.921 -0.2445,-3.0962 l 0.2037,-0.6926 z m -20.0435,0.082 0.2037,0 -0.1222,0.4481 -0.163,0 0,-0.2037 0.082,-0.2444 z m 1.7925,0 0.2037,0 c 0.1368,0.1613 0.1866,0.3854 0.163,0.6518 l -0.1222,0 -0.2445,-0.6518 z m -2.5665,0.1222 0.2037,0.3667 -0.2852,-0.082 0.082,-0.2852 z m 12.5475,0.163 0.2445,0.082 0.2851,0.2037 -0.1629,0.2444 c -0.1007,-0.099 -0.2134,-0.1792 -0.3259,-0.2444 l -0.041,-0.2852 z m -7.17,0.1629 0.2852,0 c 0,0.072 0.024,0.1467 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1223 -0.3259,0 -0.082,-0.1223 z m -6.7219,0.1223 0.2037,0.082 -0.082,1.2221 -0.082,0.2037 -0.2037,-0.081 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2851 z m 14.6252,0.041 0.326,0.082 -0.163,0.6518 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3585,0.041 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.1629 0.1222,0 0.1222,0.163 0.082,0.2851 -0.3259,-0.4073 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.163,0 0.041,-0.2037 z m -5.2553,0.163 -0.041,0.2444 c -0.1412,0.6766 -0.1364,1.0308 0.1222,1.1 l -0.2444,0.2036 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.163,-0.5703 0.4481,-0.082 c -0.2059,-0.7706 -0.1474,-1.243 0.1223,-1.3444 z m 1.874,0 0.041,0.1222 0.082,-0.082 0.1629,0.6518 0,0.1222 -0.4888,0.7333 0.2851,0.081 -0.3259,0.1222 -0.082,0.2445 0.2445,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8556 -0.6518,1.3036 0.2444,0.2852 -0.4889,-0.163 0.3667,-1.3444 -1.1815,0.7333 0.2445,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6926 c 0.08,-0.4995 0.011,-0.7981 -0.2037,-0.8556 l 0.2851,-0.1629 0.041,-0.2037 0.2037,-1.3036 c 0.1375,-0.1299 0.2765,-0.2715 0.4074,-0.4074 l 0.4482,0.3259 c -0.053,-0.2116 -0.1577,-0.3754 -0.2445,-0.5296 0.051,-0.055 0.1128,-0.1065 0.163,-0.163 l 0.2444,0.041 0.082,-0.3666 0.3667,-0.163 -0.163,-0.163 c 0.072,-0.092 0.134,-0.1912 0.2037,-0.2851 l 0.7333,0.041 0.163,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.3259 l 0.2851,0.082 0.2852,-1.0592 c 0.1084,-0.2 0.2227,-0.4049 0.3259,-0.6111 l -0.1222,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4889,0 c 0.012,-0.071 0.03,-0.1355 0.041,-0.2037 l 0.2444,-0.2445 z m -22.162,0.041 0.082,0.2851 -0.082,0 0,-0.2851 z m 30.432,0.2037 0.4888,0.1222 -0.4074,0.937 c -0.091,-0.1361 -0.2088,-0.2648 -0.3666,-0.3667 l 0.2852,-0.6925 z m -10.8773,0.1629 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9777,0.041 0.4074,0.1222 -0.041,0.163 -0.2037,0.041 -0.1629,-0.2852 c 0.01,0 -0.01,-0.037 0,-0.041 z m -8.3922,0.3259 0.4074,0.082 -0.163,0.6518 -0.2851,-0.5703 0.041,-0.163 z m 23.9137,0.041 c 0.452,0.2793 0.6049,0.7683 0.4074,1.5074 l -0.5296,1.0592 c -0.1997,1.1223 -0.2914,1.891 -0.2852,2.4036 l -0.1629,-0.041 0.041,-0.7741 0.1222,-0.4888 -0.3666,-0.7741 0.8962,-2.1184 -0.1222,-0.774 z m -21.836,0.1222 0.2444,0 0,0.2037 -0.2444,0 0,-0.2037 z m 12.0994,0 0.041,0 -0.1629,0.5704 c -0.02,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.962,0.041 0.2037,0.041 0.1222,0.2445 -0.3666,-0.1222 0.041,-0.163 z m -4.1146,0.2037 0.041,0.2037 -0.2852,0.5296 -0.041,-0.1629 0.2852,-0.5704 z m 3.6257,0 c 0.1218,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.1629,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2445,0.082 -0.1223,0.4889 -0.2444,-0.082 0.1222,-0.4889 z m -25.4618,0.082 c 0.1306,0.01 0.286,0.02 0.4482,0.041 l -0.1223,0.3667 c -0.2956,-0.079 -0.5499,0.1592 -0.6925,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2132,-0.256 0.4888,-0.2852 l 0.3667,0 -0.041,-0.041 z m 14.0142,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1478,0.041 0.2852,0 -0.1222,0.5296 -0.2445,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5704,0 0,0.082 -0.3667,0.5704 0.1223,0.1629 -0.6111,-0.1629 c 0.107,-0.1606 0.1904,-0.4143 0.2851,-0.6518 z m 1.0593,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2406,0 0.4889,0 -0.1223,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.163 0.041,0.4481 -0.1629,0.041 c -0.1809,-0.2054 -0.2427,-0.4948 -0.2037,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.017,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4889,0.1222 -0.041,-0.5296 0.2444,-0.041 0,-0.4888 -0.2851,0.041 -0.041,-0.2445 z m -7.6996,0.082 0,0.7741 c -0.2653,-0.083 -0.4074,-0.289 -0.4074,-0.6518 0.1826,0 0.2999,-0.043 0.4074,-0.1223 z m 5.5404,0 0.4074,0.1223 -0.082,0.3666 -0.4481,-0.1222 0,-0.041 0.163,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6519 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2444 0,0.2852 -0.041,0.082 -0.2037,-0.041 0.041,-0.2037 0.2445,-0.3667 0.1629,-0.2852 -0.4481,-0.1222 0.5703,-0.2851 z m -18.8213,0.082 c 0.092,0.016 0.1761,0.041 0.2851,0.041 l 0,0.6519 -0.2444,-0.082 -0.041,0.1222 -0.1222,0 0,0.4481 0,0.082 0.4481,0.1222 0.041,-0.2037 0.163,0 -0.5296,0.7741 -0.2445,-0.326 -0.082,0.3667 0.2445,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.155,0.076 -0.2588,0.2271 -0.2852,0.4482 l -0.041,0.1222 -0.163,0 c 0,-0.03 0.01,-0.052 0,-0.082 l 0.082,-0.4481 -0.1629,-0.041 c -0.084,-0.4332 -0.1524,-0.7924 -0.2445,-1.0593 l 0.4482,-1.6295 z m -7.2923,0.4482 c 0.2126,0.1196 0.3124,0.3224 0.2852,0.611 l -0.2037,-0.1222 -0.082,-0.4888 z m 18.3325,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1371 -0.06,0.2831 -0.082,0.4074 -0.092,0.016 -0.1761,0.041 -0.2852,0.041 l 0,0.4888 -0.2444,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2852,0 0.1222,0.041 0,0.4074 -0.2037,0 0,0.2036 0.082,0.3667 c -0.1679,-0.1492 -0.2705,-0.4892 -0.2852,-1.0185 z m 25.3396,0.041 0.4481,0.1222 -0.1222,0.4074 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9355,0.041 c -0.044,0.05 -0.077,0.1097 -0.1222,0.1629 l -0.041,-0.1222 0.1629,-0.041 z m -0.8963,0.041 0.4482,0.9369 -0.2037,0.041 -0.081,-0.041 c 0.011,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2445,-0.082 -0.2037,-0.6925 0.2445,-0.041 z m 17.5178,0 0.4073,0.1222 -0.082,0.2444 -0.3666,-0.2444 0.041,-0.1222 z m 0.7332,0 0.2037,0.082 -0.1222,0.4073 -0.2037,-0.041 0.1222,-0.4481 z m 7.1294,0.082 0.082,0.1222 0.2851,0.082 0.082,-0.041 -0.2037,1.3444 -0.6925,2.5258 -0.2444,0.4888 -0.082,-0.3666 0.2036,-0.2852 -0.2036,-0.2037 -0.2445,0.082 -0.1629,-0.2851 0.2851,-0.1223 0.2037,0.041 0.041,-1.0592 0.2852,-0.9777 0.4074,0.082 0.1222,-0.5296 0.041,0 0,-0.082 c -0.1251,-0.2297 -0.1809,-0.5083 -0.2037,-0.8148 z m 3.0554,0.041 0.2444,0.082 -0.082,0.2444 0,0.041 -0.163,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4073,0.1222 -0.1222,0.3666 -0.2851,-0.4888 z m -10.6329,0.3259 0.041,0.1629 -0.1222,0.041 0,-0.1629 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3666 0.2037,0.041 -0.2445,0.1222 -0.1222,0.4889 -0.1629,-0.6111 0.2037,-0.4889 z m 27.4172,0 0.3667,0.082 c -0.05,0.1857 -0.024,0.3352 0,0.4481 l -0.3259,-0.082 c 0.053,-0.2 0.019,-0.3353 -0.041,-0.4481 z m -3.9516,0.082 0.041,0 c -0.023,0.1202 -0.051,0.2387 -0.082,0.3666 l -0.041,0 0.082,-0.3666 z m -17.314,0.041 0.2037,0.041 -0.2445,0.8147 -0.2037,-0.041 0.2445,-0.8148 z m 14.7474,0.041 c 0.1068,0.098 0.258,0.168 0.4074,0.2444 l -0.1629,0.3259 -0.163,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1096,-0.09 -0.1629,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.1629 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.5296 -0.4481,-0.1222 0.1222,-0.4074 z m -33.2429,0.3667 0.041,0.1222 -0.163,-0.041 0,-0.041 0.1222,-0.041 z m 6.7626,0.1629 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4515,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1708,0.032 -0.2445,0.041 l 0.2445,-0.8963 0.2037,-0.041 z m 1.5888,0.163 c 0,0.051 0,0.1083 0,0.1629 -0.1404,0.1712 -0.5033,0.2873 -1.0185,0.4074 l 0.082,-0.2444 0.937,-0.3259 z m 8.5959,0.1222 c 0.1067,0.1844 0.2374,0.3374 0.3666,0.4889 l 0,0.1222 0.163,0.041 c 0.068,0.068 0.1301,0.1436 0.2037,0.2037 l -0.163,0.6518 -0.2037,-0.041 c 0.071,-0.2668 -0.1676,-0.4926 -0.6111,-0.6111 l 0.2445,-0.8555 z m 1.0184,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5813,0.041 0.4481,0.1222 -0.041,0.2037 -0.4889,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1222,0.4481 0.2444,0.8963 -0.4481,0.7333 0.3259,-0.1223 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 -0.2037,-0.2444 -0.2444,-0.082 -0.082,0.4481 -0.2445,-0.041 0.6519,-2.4036 z m -1.2222,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5704 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6926,0.163 0.082,-0.2037 -0.6926,-0.2037 z m -28.6802,0.082 c 0.026,0 0.055,0 0.082,0 -0.1259,0.1796 -0.3023,0.3289 -0.5296,0.4481 l -0.041,-0.2037 c 0.1448,-0.1144 0.3062,-0.2068 0.4889,-0.2444 z m 13.3624,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2851,0.3259 l -0.2851,-0.082 0,-0.2444 z m -12.955,0.2037 0.041,0 0.3259,0.1222 c 0.028,0.1064 0.051,0.1975 0.082,0.2852 l -0.2037,0.774 -0.2037,-0.041 c 0.1427,-0.5334 0.011,-0.858 -0.2851,-0.937 l -0.2037,0.082 0.041,-0.1629 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5665,0.041 0.082,0.2444 -0.1223,-0.041 0.041,-0.2037 z m 13.4438,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.163,0.1629 0,-0.4888 z m 8.5552,0 0.3666,0 -0.041,0.1629 -0.4074,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0184,0 0.4074,0 0,0.2037 c -0.1951,0 -0.3609,0.037 -0.4889,0.082 l 0.082,-0.2852 z m -19.4324,0.082 0.1629,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8105,0.1222 0,0.5296 -0.041,0.041 -0.041,0.1629 -0.2445,0 0.2037,-0.6925 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1223 -0.2445,0 -0.2851,-0.041 -0.082,0.041 -0.2852,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2852 z m 3.0554,0.1629 -0.082,0.3667 -0.3667,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.044,0 c 0.6945,0.3642 0.9331,1.0147 0.6926,1.9148 l -0.4889,-0.1222 -0.1629,0.5296 0.3666,0.5703 -0.8555,1.2629 0.2037,0.041 -0.2444,0.1222 -0.082,0.2852 0.1629,1.3036 -0.5703,0.2445 0.2037,0.041 -0.3667,0.5703 c -0.1386,0.963 0.1611,1.5036 0.937,1.711 l -0.2444,0.163 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2037,-0.041 0.163,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.1629,-0.6111 0.2037,0.041 -0.082,0.4482 0.6926,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.2037,-0.8148 -0.4074,-0.1222 0.082,-0.3667 0.4481,0.1222 0.082,-0.3666 -0.4073,-0.1222 0.1629,-0.6111 c 0.3695,0.099 0.5984,-0.1382 0.8148,-0.6518 0.1069,-0.4 -0.01,-0.6148 -0.4481,-0.7333 l 0.1629,-0.6111 z m -24.5248,0.041 0.4889,0.1223 -0.4074,0.5703 -0.2444,-0.082 0.1629,-0.6111 z m 23.3027,0 c 0.1376,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.703,0.082 0.6518,0 0.2037,0.2445 0.163,0 -0.163,0.6111 -0.611,0 -0.2445,-0.8556 z m 5.7035,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8886,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2445,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6366,0.082 0.6518,0.3667 -0.2851,1.0185 -0.2037,-0.082 -0.2445,-0.937 0.082,-0.3667 z m 20.899,0 0.4889,0.1223 0.3667,1.1407 -0.1223,0.4481 -0.2037,-0.041 0.1223,-0.4481 -0.4482,-0.1223 -0.041,0.2037 0.2445,0.7333 -0.2445,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5703,0.2445 0.082,-0.3667 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5703,-0.3259 0.082,-0.2037 0.4073,-0.774 c 0.069,-0.5531 -0.1193,-0.879 -0.4888,-0.9777 l 0.1222,-0.3667 0.4889,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4481,-1.5888 z m -18.9843,0.041 0.4074,0.1223 -0.041,0.2037 -0.4074,-0.1223 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.058 0.1536,0.1175 0.2444,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2852,-0.5296 0,-0.041 z m -19.962,0.041 0.3259,0.4889 -0.2445,-0.2444 -0.2036,-0.041 0.1222,-0.2037 z m 1.0999,0.082 0.163,0.041 0,0.163 -0.163,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0838,0 c 0.044,0.1029 0.088,0.1838 0.1629,0.2037 l 0.2037,0.041 0,0.4482 -1.711,6.3552 -0.4889,-0.1222 0.2852,-0.1222 0.041,-0.2037 0.6926,-3.4628 0.2851,-0.1222 0.041,-1.0592 0.4889,-1.9555 z m 1.0184,0 0.2037,0.041 -0.2037,0.6519 -0.2036,-0.082 0.1629,-0.5704 0.041,-0.041 z m -15.6437,0.1223 0.041,0.4481 -0.1222,0.041 -0.082,-0.3259 0.163,-0.163 z m 12.792,0 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -9.5736,0.041 c 0.1346,0.034 0.3237,0.061 0.4889,0.082 l -0.1223,0.4888 -0.4481,-0.1629 0.082,-0.4074 z m -20.9805,0.3259 0.4888,0.1222 -0.082,0.2037 -0.1629,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5703 l -0.2037,-0.8148 0.041,-0.3259 z m 3.2998,0.041 0.4482,0.082 c -0.1069,0.4 -0.01,0.695 0.2851,0.774 l -0.041,0.2037 c -0.4433,-0.1185 -0.7027,-0.1037 -0.774,0.163 l -0.2037,-0.041 -0.082,-0.6111 0.3666,-0.5704 z m 16.8252,0.041 0.2851,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7698,0.1629 0.2037,0.041 -0.041,1.0593 -0.4074,-0.1223 0.2445,-0.9777 z m 20.125,0.2037 0.4482,0.163 -0.041,0.1629 -0.4889,-0.1222 0.082,-0.2037 z m 3.0962,0 0.2037,0.041 -0.4481,0.937 -0.2037,-0.041 0.2037,-0.8147 0.2444,-0.1223 z m -19.5139,0.1223 0.937,0.041 -0.1222,0.5703 -0.9778,0 0.163,-0.6111 z m 8.5959,0.1629 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2852,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1327,-0.4344 0.163,-0.6111 z m -4.3183,0.163 0.2037,0.041 -0.1223,0.3666 -0.2036,-0.041 0.1222,-0.3666 z m 32.3059,0 0.2037,0.041 c -0.107,0.4 -0.01,0.695 0.2852,0.774 l -1.4259,3.5035 0.2037,0.2445 -0.041,0.2037 -0.5296,0.8962 -0.2037,-0.041 0.1629,-1.4258 0.2445,-0.1222 0.1222,-0.4482 0.6926,-3.422 0.2851,-0.2037 z m -35.3613,0.1222 0.1222,0.8555 0.2037,0.1222 c -0.012,0.097 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1372 0.041,0.2037 l -0.3667,0.1629 c -0.01,-0.044 -0.031,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.163,-1.3444 z m 9.4514,0.041 0.6111,0.1629 -0.041,0.2037 -0.6926,0.082 0.1222,-0.4481 z m -4.8072,0.2444 0.2037,0.082 -0.163,0.5296 -0.2037,-0.041 0.163,-0.5703 z m 28.9653,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9777 z m -20.4916,0.1222 0.3666,0.5296 -0.1629,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.4121,0.5667 -0.8555,0.4481 0.1069,-0.4 0,-0.6555 -0.4482,-0.774 l 0.041,-0.2037 0.4074,0.1222 0.163,0.2444 c 0.08,-0.2999 0.4464,-0.4543 1.0999,-0.5296 z m 10.8365,0.2037 0.1222,0 0,0.1223 -0.1222,-0.1223 z m 13.1179,0 0.8963,0.2445 -0.4481,1.7517 c -0.2956,-0.079 -0.3768,-0.5444 -0.163,-1.3443 l -0.4481,-0.082 0.1629,-0.5704 z m -6.1515,0.041 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.5703 0.041,-0.163 z m -28.558,0.082 -0.2037,1.6296 -0.8148,0.2444 0.2445,-0.8962 c 0.449,-0.223 0.7308,-0.5469 0.774,-0.9778 z m 0.6926,0 0.2444,0.082 -0.082,0.3667 -0.2852,-0.082 0.1223,-0.3667 z m 21.8767,0.041 0.163,0.041 0,0.2445 -0.4074,0 0.2444,-0.2852 z m -9.5329,0.041 0.2037,0 0.163,0.2445 -0.2852,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9663,0.2445 0.4889,0.1222 -0.082,0.2444 -0.5296,0.937 -0.163,-0.2444 -0.2037,-0.082 -0.5296,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.6111,0.4481 l -0.1629,-0.2444 -0.2037,-0.041 -0.2445,0.1222 0.2037,-1.6296 0.6111,0.163 0.1222,-0.4074 c 0.7391,0.1975 1.1561,0.074 1.2629,-0.3259 z m 2.8517,0.1222 0.2037,0.082 -0.082,0.3666 -0.2444,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3666 -0.2444,-0.041 0.1222,-0.4074 z m 6.6405,0.041 0.2037,0.082 -0.082,0.4074 -0.2445,-0.041 0.1222,-0.4482 z m -9.2885,0.1222 0.2037,0.082 -0.2444,0.081 0.041,-0.1629 z m -0.041,0.2852 0.163,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2065 -0.13,0.3082 -0.3259,0.3666 l -0.5296,0.041 0,-0.1629 0,-0.041 0.8555,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1749,0.1108 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.1222 -0.2037,0.8148 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.2445 0.1222,-0.4481 c 0.1893,0.051 0.3495,-0.044 0.4889,-0.2444 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.099,0.3378 -0.3274,0.5985 -0.6519,0.7333 l -0.1222,-0.041 0.4482,-0.7741 z m 4.4405,0 -0.041,0.2037 -0.4889,0 0,-0.1223 c 0.2002,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m -26.847,0.082 0.4074,0.1222 -0.1222,0.4481 -0.4074,-0.1222 0.1222,-0.4481 z m 9.7366,0.1222 0.163,0 -0.163,0.5703 0,-0.5703 z m -11.9772,0.163 -0.082,0.3666 0.4074,0.1222 0.1222,-0.3666 -0.4481,-0.1222 z m 4.9702,0.041 0.6925,0.2036 -0.1222,0.3667 0.4481,0.1222 0.163,-0.6111 0.3259,0.3667 c -0.3478,0.1723 -0.5887,0.4467 -0.7333,0.8148 -0.062,0.027 -0.089,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1401,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2037,-0.041 c 0.072,-0.1147 0.1184,-0.2815 0.163,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2444 -0.4074,-0.1222 0.082,-0.2444 z m -14.4216,0.2036 0.1222,0.041 c -0.043,3e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2445 0.4482,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.163 z m 20.1658,0 0.1629,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.1629,0.2444 0.2037,0.041 c 0.1186,0.032 0.2233,0.042 0.3259,0.041 -0.1473,0.093 -0.295,0.1253 -0.4888,0.082 l -0.2037,0.6518 c 0.3876,0.088 0.6345,0.219 0.774,0.4482 l -0.4889,0.2444 0.4074,0.082 0.082,-0.2852 c 0.1221,0.2248 0.1522,0.5026 0.041,0.8555 l 0.6519,0.163 -0.3667,1.0999 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7517,2.4036 0.4481,-0.1222 0.2444,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2851,-0.3259 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.7812 0.2444,-0.041 -0.2852,0.9778 0.6519,0.1222 0.4073,-1.3037 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1222 0.2852,-0.041 0.082,-0.2037 -0.2444,-0.082 0.1629,-0.5703 -0.2037,-0.2852 0.082,-0.2037 0.2852,-0.082 z m 6.6811,0.041 0.2037,0.041 -0.041,0.1222 -0.1629,-0.163 z m 7.8626,0 0.041,0.1629 -0.2851,-0.082 0.2444,-0.082 z m -20.0435,0.1222 0.4482,0.774 -0.326,0.163 -0.1629,-0.041 0.041,-0.8963 z m -0.6925,0.041 0.2037,0.041 -0.1223,0.4481 -0.2037,-0.041 0.1223,-0.4481 z m 19.8805,0.1629 -0.082,0.2445 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3851,0.1223 0.082,0.1222 0,0.2852 -0.4481,-0.1223 0.1629,0 0.2037,-0.2851 z m 3.8702,0.1222 0.2444,0.082 0,0.2852 0,0.6518 0,0.1222 -0.3259,0.1222 -0.4074,-0.082 0.2852,-1.1407 0.041,0 c 0.064,-0.01 0.1028,-0.032 0.163,-0.041 z m -25.3803,0.1222 0.3666,0.4889 -0.4888,-0.1223 0.1222,-0.3666 z m 35.4021,0.041 0.2037,0.041 -0.1223,0.3666 -0.2037,-0.041 0.1223,-0.3666 z m -11.4477,0.1222 -0.041,0.2037 -0.774,0.082 -0.2037,-0.082 0,-0.041 1.0185,-0.1629 z m 6.4368,0 -0.041,0.2037 0.4074,0.082 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3666,0.082 -0.2444,0.6926 -0.3259,-0.081 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6068,0.082 0.2037,0.041 -0.3667,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2444,-0.5703 l 0.041,-0.3259 0.3667,-0.4889 z m 10.3069,0.082 0.2445,0.082 -0.1222,0.4482 -0.2852,-0.041 0.1629,-0.4889 z m 2.1185,0.041 0.2444,0.041 -0.082,0.2445 0.041,0.1629 c -0.01,0.1969 0.032,0.3372 0.1222,0.4482 l 0,0.082 -0.1629,0 -0.4074,0.4481 -0.2037,0 0.2444,-0.8555 0.163,-0.2852 -0.041,-0.041 0.082,-0.2444 z m 1.3851,0.041 0.2444,0.2852 0,0.2852 c -0.1625,-0.1175 -0.2809,-0.2535 -0.4074,-0.3667 l 0.163,-0.2037 z m -7.6997,0.2037 0.2852,0.041 -0.163,0.4889 -0.2444,-0.082 0.1222,-0.4481 z m 13.9735,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.1629 -0.2037,0 c 0.013,-0.1553 0.042,-0.3219 0.041,-0.4481 z m -16.54,0.082 -0.1222,0.3667 -0.041,1.4259 -0.6519,0.8147 0.3667,0.081 -0.4481,0.1223 -0.082,0.2444 0.2851,0.3259 -0.041,0.2037 -0.5703,0.6111 0.082,0.9777 -0.8555,1.4259 0.2852,0.2851 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8556 0.2851,0.2851 -1.0184,0.4482 c -0.1112,-0.2193 -0.218,-0.4175 -0.326,-0.6519 -0.01,-0.011 0,-0.03 0,-0.041 l 0.1223,-0.774 0.2851,0.082 0.6926,0.4481 c -0.2006,-0.6795 -0.5592,-1.0906 -1.1407,-1.2221 l 0.2037,-0.6926 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.081,-0.041 c 0.068,-0.2257 0.108,-0.4498 0.163,-0.6518 l 0.1629,-0.1222 0.041,-0.2037 -0.041,-0.1223 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.611 0.2166,-0.041 0.4501,-0.155 0.6926,-0.3667 -0.087,0.5222 -0.036,0.8328 0.2444,0.8963 l -0.3259,0.2037 -0.041,0.082 c -0.1805,0.1124 -0.3751,0.2434 -0.5296,0.3666 l -0.041,0.2444 0.4074,0.1223 -0.3259,1.6702 0.5703,0.1223 0.1222,-0.4074 0.4482,-0.2037 -0.2852,-0.2852 -0.2852,-0.082 0.082,-0.2037 1.5074,0.1222 0.2037,-0.6925 -0.5296,-0.1223 0.1222,-0.4073 0.5703,0.1222 0.3667,-1.1407 0.2444,-0.163 -0.2037,-0.041 0.4889,-1.548 0.3259,-0.1223 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3667 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.1629,0.2445 0.2037,0.082 0.3259,-0.1222 -0.041,0.1629 c -0.3961,0.037 -0.7256,0.1179 -0.9777,0.2037 l -0.041,0 -0.1629,-0.041 0.2851,-0.4481 0.2445,-0.082 z m -12.018,0.082 0.6111,0.1223 -0.1222,0.4074 -0.4889,-0.5297 z m 3.9517,0.1223 0.3259,0.082 -0.041,0.1629 -0.2852,0.082 0,-0.041 0,-0.2851 z m 4.8072,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8105,0.082 0.2852,0.082 -0.082,0.611 -0.3667,0.1223 0.041,-0.4074 0.1222,-0.4074 z m 29.5764,0.041 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -7.4552,0.3259 0.4074,0.1222 -0.082,0.4481 -0.4074,-0.2444 0.082,-0.3259 z m -26.358,0.041 0.4073,0.1222 -0.082,0.2037 -0.4073,-0.1222 0.082,-0.2037 z m 1.6702,0 0.2037,0.2444 -0.041,0.2037 -0.3259,-0.3259 0.163,-0.1222 z m 18.1696,0.041 c 0.1619,0.088 0.2757,0.1838 0.4889,0.2851 -0.019,0.058 -0.041,0.1397 -0.041,0.2037 l -0.5297,0 c 0.032,-0.1732 0.06,-0.336 0.082,-0.4888 z m -3.2591,0.2037 0.1629,0 0,0.041 -0.1629,-0.041 z m -12.1402,0.2037 -0.082,0.5703 -0.041,0.2444 -0.2852,-0.082 0.041,-0.611 0.3667,-0.1223 z m -3.2999,0.082 0.2445,0.041 -0.1222,0.4888 -0.2852,-0.041 0.1629,-0.4888 z m 10.7144,0.041 0.7333,0.1629 0,0.082 -0.082,0.2444 -0.082,0.1223 0,0.1629 0,0.041 -0.1223,0.2852 -0.082,0 -0.2036,-0.2852 c 0.017,-0.3233 -0.065,-0.5992 -0.163,-0.8148 z m 20.0027,0 c -0.1782,0.6666 0.096,1.3875 0.6926,2.1184 l 0.2444,-0.1222 0.163,0.2444 -0.041,0.163 c -0.2464,-0.066 -0.4957,0.012 -0.6926,0.1629 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3666,0.1222 c 0.1402,-0.4438 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1223 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5136 0.4453,-0.7099 0.8148,-0.6111 l 0.1222,-0.4074 -0.6111,-0.163 0.8555,-0.6518 z m 2.4036,0.041 0.326,0.4888 -0.1223,0.4482 -0.2851,-0.5704 0.082,-0.3666 z m -17.9658,0.082 0.2852,0.082 -0.1222,0.4074 -0.2445,-0.326 0.082,-0.1629 z m -14.2586,0.041 0.2852,0.041 -0.082,0.2037 c -0.1131,0.033 -0.218,0.087 -0.3259,0.1222 l 0.1222,-0.3667 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6925,0.082 c 0.022,-0.1067 0.02,-0.184 0.041,-0.2852 z m -3.9924,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.6769,0 0.2037,0.041 -0.2037,0.8147 -0.2037,-0.041 0.2037,-0.8147 z m -28.4357,0.1629 0.5703,0.1222 -0.2444,0.6926 -0.3667,-0.6111 0.041,-0.2037 z m 2.1591,0.041 -0.082,1.1407 0.6111,0.163 0.082,-1.1815 -0.6111,-0.1222 z m 19.5547,0.1222 0.1629,0.041 -0.1222,0.4482 -0.2037,-0.041 0,-0.041 0.041,0 0.1223,-0.4074 z m -13.4438,0.041 0.1222,0 0.2852,0.7333 -0.1223,0.163 -0.1629,0 -0.2037,-0.6111 c 0.01,-0.011 0,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.134 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.082,0.4889 -0.3259,0 0,-0.4889 z m 4.0331,0 0.2445,0.041 -0.041,0.163 -0.2445,-0.082 0.041,-0.1222 z m -25.7062,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.1723,0.082 -0.041,0.163 0.041,0.041 0,-0.2037 z m -21.5508,0.041 0.082,0 0,0.3259 -0.2037,-0.041 0.1222,-0.2851 z m -10.918,0.2445 c 0.2732,-0.046 0.6794,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3876,-0.088 -0.7501,0.1822 -0.937,0.774 l -0.5704,-0.8963 c 0.053,-0.1664 0.1749,-0.2802 0.4482,-0.3259 z m 14.0956,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.774,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.1549,0.041 0.4889,0.1222 -0.2852,1.0185 -0.3667,-0.4889 0.163,-0.6518 z m -17.9658,0.041 0.2444,0.041 -0.2852,0.082 0.041,-0.1222 z m 10.8365,0 0.2037,0.041 -0.041,0.1222 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2852 z m 9.5736,0.1222 -0.1222,0.082 -0.082,0.1629 0.2037,0.2445 0,-0.4889 z m -13.8104,0.082 0.4073,0.082 -0.3259,0.4481 -0.3259,-0.082 -0.041,-0.1629 0.2852,-0.2852 z m -10.4292,0.041 0.1222,0.081 0,0.2444 -0.1629,-0.041 c 0.032,-0.1024 0.017,-0.1886 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1222,0.6111 c -0.1738,-0.1302 -0.3351,-0.2839 -0.4889,-0.3667 -0.043,-0.2456 -0.071,-0.5151 -0.041,-0.8147 z m -8.5551,0.041 0.3666,0 0,0.2444 -0.3666,0 0,-0.2444 z m -16.4585,0.082 0.1629,0.041 -0.1222,0.4074 -0.2852,-0.082 0.082,-0.2852 0.163,-0.082 z m 4.1961,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.521,-0.509 -0.5296,-1.3036 z m 1.7925,0.1629 -0.2445,0.6926 0.6519,0.163 0.2037,-0.6926 -0.6111,-0.163 z m 3.0146,0.2445 c 0.537,0.1214 0.591,1.2374 0.163,3.2998 -0.149,0.2487 -0.3559,0.7021 -0.5703,1.1407 l -0.5704,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5932,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.1629,-1.6703 z m 9.6959,0.041 0.1222,0.1222 -0.2444,0.2852 -0.1222,0.4481 -0.1223,0 -0.2851,-0.082 -0.041,-0.4481 0.082,-0.1222 0.2444,0.2444 0.3667,-0.4481 z m 5.3775,0 c 1e-4,0.306 -0.1563,0.4481 -0.5703,0.4481 l 0,0.2037 0.4074,0 -0.3667,0.6518 -0.4074,-0.082 0.082,-0.082 0,-0.2851 -0.041,-0.041 0.4074,-0.7741 c 0.1595,-0.01 0.3126,-0.041 0.4889,-0.041 z m -13.4438,0.041 0.2852,0.041 -0.4482,1.2629 -0.082,0.3259 c 0.198,0.081 0.3667,0.1667 0.5297,0.2444 l -0.2445,0.4482 -0.1222,-0.2037 -0.3259,0.1629 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.1629,-0.4888 0.041,0.041 0.2852,0 0.1629,-1.3037 z m -8.1885,0.082 0.5703,0.1222 -0.1629,0.4074 -0.4074,-0.5296 z m 13.1586,0.082 0.082,0.082 -0.1629,-0.041 0.082,-0.041 z m 4.3591,0 0.3259,0 c -0.046,0.2542 -0.075,0.4486 -0.081,0.6518 l -0.6111,0 0.082,-0.5703 0.2852,-0.082 z m -3.1369,0.082 0.082,0.4888 c -0.2042,-0.1067 -0.3488,-0.235 -0.4481,-0.4074 l 0.3666,-0.082 z m -1.7518,0.082 -0.1222,0.4888 -0.1629,0 0,-0.4073 0.2851,-0.082 z m 18.0066,0.041 0.2037,0.041 -0.1629,0.6518 -0.2037,-0.082 0.1629,-0.6111 z m 0.6518,0 0.4889,0.1222 -0.4074,1.4666 -0.1629,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2445,0.041 l 0,-0.3667 0.3259,-1.2221 z m -21.2249,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5035,0.1222 c 0.081,0.036 0.1343,0.08 0.2037,0.1222 l -0.2444,0.041 0.041,-0.1629 z m -12.1809,0.082 0.2852,0.041 -0.2852,0.8963 -0.2852,-0.041 0.2852,-0.8963 z m 1.7925,0.1629 -0.1222,0.4482 0.6111,0.1222 -0.4889,-0.5704 z m 19.5954,0 c 0.045,0.041 0.1551,0.1195 0.2037,0.163 l -0.082,0.5296 -0.8963,2.8517 -0.5703,0.8148 0.3667,1.0592 -0.6519,-0.1629 -0.3666,2.0776 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.1629,-1.4666 0.4889,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.4074,-0.5703 0.3666,-0.1223 0.2445,0.041 0.082,-1.1406 0.3666,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1222,0.163 -0.1629,-0.041 0.041,-0.1222 z m 1.8333,0.1223 0.082,1.6295 0.4888,0.1222 0.2037,-0.2037 -0.2444,0.8148 c -0.1147,-0.1898 -0.1569,-0.2813 -0.2852,-0.4889 l -0.2037,0.082 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4074,-0.6518 0.4482,-1.2629 z m 0.5296,0 0.3666,0.082 0,0.082 -0.2444,0.3666 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.1629 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4073 z m 1.7925,0.2444 0.2037,0.082 0,1.0593 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.163,0.1222 l -0.3666,-0.082 0.3259,-1.2222 z m -32.1022,0.041 0.2444,0.082 -0.9777,3.0962 -0.2445,-0.041 0.9778,-3.1369 z m 29.5764,0.163 0.082,0.041 -0.163,0.6111 -0.2037,-0.041 0.1223,-0.4481 0.1629,-0.163 z m -14.0142,0.163 0.2037,0 0,0.4888 -0.2037,0 0,-0.4888 z m 11.6921,0.082 0.2037,0.082 0.041,0.2444 -0.2852,-0.2037 0.041,-0.1222 z m -24.2804,0.082 -0.1629,0.4481 0.611,0.1629 0.163,-0.4888 -0.6111,-0.1222 z m 27.1321,0.041 0.2037,0.041 0.041,0.6925 -0.4074,-0.1222 0.163,-0.6111 z m -29.0468,0.041 0.2852,0.041 -0.2037,0.6518 -0.2445,-0.082 0.163,-0.6111 z m 31.5726,0.2036 0.4074,0.1223 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.082 0.082,-1.1407 c -0.055,-0.012 -0.1121,0 -0.163,0 l 0.082,-0.2852 z m -19.5547,0.2445 0.041,0 0,0.4481 -0.2036,0 0.1629,-0.4481 z m -5.5404,0.041 0.6925,0.1629 -0.5703,1.1815 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9478,0.2037 0.4074,0 0,0.4888 0.2445,0 0.041,-0.041 -0.041,0.2852 -0.326,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3666,-0.082 -0.163,0.041 c 0.1409,-0.1216 0.2037,-0.2569 0.2037,-0.4481 z m 13.892,0 0.2444,0.041 0.1222,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1223,-0.4074 z m -11.8143,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2037,-0.2037 c -0.1035,0 -0.1645,0.01 -0.2444,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.7741,0 0.4888,0 0.163,0.041 -0.2445,0.774 -0.5296,0.3259 -0.2444,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2851,-0.082 -0.2851,-0.2851 0.1222,-0.3667 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.1223 0.041,-0.082 z m -22.5286,0.1629 0.6518,0.163 -0.4889,0.6111 -0.3666,-0.082 0.2037,-0.6926 z m 14.9511,0.1222 0.2037,0 0.3667,0.082 -0.4074,0.2037 -0.041,0.2037 0.041,0.1222 -0.163,0.041 -0.2036,0 0.2036,-0.6518 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.8213,0.163 0.2444,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.082 -0.2445,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2851,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2036,-0.082 0.1629,-0.4481 -0.5703,-0.1222 -0.041,0.2037 0.3259,0.8147 -0.3259,0.1223 c -0.1052,0.3329 -0.023,0.6072 0.2851,0.774 -0.041,0.1099 -0.074,0.22 -0.1222,0.3259 l -0.2444,0.082 0.1222,-0.4074 -0.5703,-0.1222 -0.2445,1.7518 c -0.1707,0.1743 -0.3679,0.3712 -0.5703,0.5296 l 0.2037,-0.2852 c 0.09,-0.6137 -0.1266,-0.9903 -0.6111,-1.0999 l 0.1222,-0.4074 0.6111,0.1222 0.1222,-0.2852 -0.3259,-0.2852 0.4481,-0.1222 0,-1.1814 0.5296,-1.7925 z m -27.3766,0.041 0.8148,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0184 0.1222,-0.4074 z m 2.4851,0.041 0.5703,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.0208,0.1222 0.2851,0.041 -0.2037,0.6926 -0.2851,-0.041 0.2037,-0.6926 z m -23.3027,0.041 0.2037,0 0,0.2037 -0.2444,-0.041 0.041,-0.163 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2852 -0.3667,1.3444 -0.041,0 0.4074,-1.3444 z m -11.4884,0.082 0.2444,0.082 -0.082,0.2037 -0.2851,0.1222 0.1222,-0.4074 z m 10.3069,0 0.041,0 c 0.027,0.1987 0.01,0.418 -0.041,0.6518 l -0.1629,-0.041 0.1629,-0.6111 z m 1.5889,0 0.1222,0.041 0,0.2037 -0.163,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.1629,0 -0.4481,0.4481 -0.2037,0 0.4889,-0.4481 z m 3.1369,0 0.2851,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.9028,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1384,-0.184 -0.2037,-0.2852 z m 10.7143,0.2037 -0.082,0.2852 -0.041,0.082 -0.041,0.1222 -0.163,-0.2037 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1466 -0.1222,-0.2037 z m -4.1554,0.041 0.6111,0.1222 -0.082,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.2222,0.082 -0.2037,0.6111 -1.2629,0 0.2444,-0.6926 z m 10.918,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2994,0.082 0.2851,0.4074 -0.2851,0.4481 -0.2445,-0.041 0.2445,-0.8148 z m 1.1406,0.3259 0.1223,0.6111 -0.2852,-0.082 0.1629,-0.5296 z m 4.1554,0.041 0.1222,0 c -0.064,0.204 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8962 -0.4074,0.4889 -0.2037,-0.041 0.3259,-1.1814 -0.4481,-0.1222 0.2444,-0.8148 0.4074,0.1222 0.082,-0.2852 z m -17.2325,0.041 0.3666,0 0,0.2852 -0.2444,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.163,0.5703 -0.2444,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.4073,0 -0.1222,0.6926 c -0.1459,0.1526 -0.3487,0.2496 -0.5703,0.3259 l -0.6111,-0.4482 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.414,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.4472,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7703,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4074 z m 21.4286,0 0.2852,0.1629 -0.082,0.2037 -0.2852,-0.041 0.082,-0.3259 z m -2.3221,0.082 0.2852,0.082 -0.2852,0 0,-0.082 z m -14.2993,0.3666 0.4888,0.5296 -0.2037,0.6519 -0.041,0 -0.2444,-0.3259 -0.5296,-0.1223 c -0.048,0.151 -0.1391,0.2794 -0.2444,0.3667 l -0.8555,-0.2444 c -0.047,-0.2319 -0.2222,-0.4009 -0.6111,-0.4889 l 0.041,-0.2037 0.5703,0.1222 0.2037,0.2444 c 0.1053,-0.3329 0.5689,-0.446 1.4259,-0.5296 z m 3.1776,0.326 0.3667,0.4481 -0.6519,-0.1222 0.2852,-0.3259 z m 21.6731,0 0.1222,0.2036 c -0.02,0.075 -0.087,0.1637 -0.1222,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3444,0.1222 0.2037,0.3666 -0.041,0.2037 -0.2445,-0.3666 c 0.023,-0.07 0.061,-0.132 0.082,-0.2037 z m -25.9099,0.4074 0.2444,0.041 -0.1222,0.4073 -0.2444,-0.041 0.1222,-0.4073 z m -1.5074,0.082 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1177 -0.1629,-0.163 z m -3.9109,0.082 c 0.1984,0.045 0.3656,0.1069 0.5296,0.1222 l 0.4889,0.6111 0,-0.4889 -0.1222,-0.1222 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2001 0.3052,0.427 0.4889,0.6518 l -0.326,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.2852,-0.041 -0.6518,0.2852 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4888,-0.4889 l 0.082,-0.2037 -0.3667,-0.082 c -0.1552,-0.1722 -0.3026,-0.3448 -0.4481,-0.5296 l 0.6518,0.1222 0.163,-0.4888 z m 11.7328,0.2444 0.4481,0 0,0.4889 -0.4481,0 0,-0.4889 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.4406,0.041 0.163,0.2852 -0.041,0.1629 -0.9778,0 -0.2851,0 0,-0.041 c 0.097,0.022 0.1954,0.061 0.2851,0.041 0.1795,-0.041 0.3597,-0.1964 0.4889,-0.4074 l 0.3667,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.157,0.2268 0.163,0.3666 l -0.6926,0 0.163,-0.2851 0.3666,-0.082 z m 17.1103,0.041 0.163,0.041 -0.041,0.1629 -0.163,-0.082 0.041,-0.1222 z m -21.1434,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2444,0.2852 l -0.3666,0 0,-0.2852 z m 11.692,0.4481 0.5296,0.1222 -0.082,0.2445 -0.5296,-0.1222 0.082,-0.2445 z m -13.0364,0.082 0.1629,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2851 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.163,0 -0.082,0.2445 -0.3667,0.2036 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2036 -0.1222,-0.2852 0,-0.082 z m 25.421,0.041 0.1222,0.4481 -0.1222,0.2852 0,-0.7333 z m -16.1733,0.163 -0.041,0.2037 -0.041,0.4888 -0.937,-0.1222 -0.082,-0.082 0.774,-0.3666 -0.3666,-0.082 0.6925,-0.041 z m -3.5036,0.041 -0.041,0.1222 -0.2851,-0.082 0.3259,-0.041 z m 4.7665,0 0.4481,0.082 0,0.041 0,0.2037 c -0.1904,-10e-5 -0.2989,0.048 -0.4074,0.1222 l -0.041,-0.4482 z m -2.5666,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2444,-0.2444 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2445 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7888,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.1629,0.2444 0.2852,0 0.163,-0.1222 0.2851,0.2852 -0.3259,0.3666 c -0.7618,0.018 -1.1993,0.1248 -1.2629,0.3259 l -0.082,0.2037 0.2852,0.082 0.5296,0 -0.2444,0.2852 c -0.3068,0 -0.7246,-0.1575 -1.1815,-0.3667 l 0.1223,-0.3259 -0.3667,-0.082 -0.3259,0.163 c -0.3254,-0.1839 -0.6735,-0.4253 -1.0592,-0.6926 0.5299,0.1199 0.9408,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.163 1.3851,0.163 l 0.082,0 0.1629,0.041 0.041,-0.163 0.1222,-0.1222 z m 1.9147,0.082 c 0.012,0.2781 0.1751,0.4716 0.6111,0.5703 l -0.041,0.1222 -0.163,0.082 c -0.4016,-0.033 -0.7787,-0.07 -1.0999,-0.082 0.1875,-0.1742 0.4654,-0.4655 0.6925,-0.6925 z m 25.1766,0 0.1222,0.041 -0.2444,1.0184 -0.1222,-0.041 0.2444,-1.0184 z m -10.9587,0.082 0.2444,0.082 -0.082,0.2851 -0.1629,0 0,-0.3666 z m -20.8176,0.1222 c 0.2965,0.3446 0.6324,0.7122 0.9777,1.0999 l -0.7333,-0.1629 c -0.2939,-0.2508 -0.5827,-0.5253 -0.8555,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2444 0.4481,0.7333 -0.3259,0 c -0.2313,-0.1353 -0.4738,-0.2499 -0.6925,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.4481,-0.082 z m 23.2212,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.4074,-1.3036 z m 11.2846,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2955,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.6769,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.3666,0 0.2037,-0.082 z m 29.169,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1196,-0.087 0.2149,-0.1918 0.326,-0.2852 z m 3.8295,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2036,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2444,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4889 -0.078,-0.08 -0.1398,-0.2017 -0.2037,-0.326 0.1572,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.1,0.5296 -0.1629,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2851 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1297,0.1454 0.2301,0.2561 0.3666,0.4074 l 0,0.2037 c -0.066,-0.043 -0.1389,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.1629,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2445,-0.163 l 0.163,-0.041 0.041,-0.1629 z m 10.0217,0.082 0.3667,0.2445 -0.082,0.082 -0.2037,0 c 0,-0.1208 -0.037,-0.2283 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.082 -0.2444,0.1223 -0.163,0 0,-0.2037 z m -3.0961,0.1223 0.4074,0.081 -0.4074,0 0,-0.081 z m 5.8256,0 0.2445,0.041 0.2444,0.2851 0.082,0 0,0.4074 c -0.3615,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1557,0 0.2445,0 l 0,-0.3259 z m -6.4774,0.3259 0.6518,0 0,0.4888 -1.0185,0 0.3667,-0.4888 z m 8.1885,0.041 0.2851,0.082 -0.041,0.1222 c -0.1062,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2445 z m 9.4107,0.041 c -0.02,0.2876 -0.042,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5703,-0.8148 z m -12.0588,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2444,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2444,-0.2444 z m -8.6366,0.1629 0.6518,0 0,0.2037 -0.6518,0.2037 0,-0.4074 z m 1.0185,0 0.4888,0 0,0.2037 -0.4888,0 0,-0.2037 z m 3.585,0 0.3666,0 -0.3666,0.4074 -0.4889,0 0.4889,-0.4074 z m -15.1549,0.2037 0.041,0 0,0.2037 -0.4481,0 0,-0.041 0.4074,-0.163 z m 3.3406,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 4.9702,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.081 0.041,0 -0.1629,0.4889 -0.5296,-0.1222 0.041,-0.082 c 0.1754,-0.071 0.4149,-0.2009 0.611,-0.2852 z m 5.2961,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2444,-0.1222 z m -32.6319,0.2852 0.6519,0 0,0.2444 -0.6519,0 0,-0.2444 z m 2.9332,0 0.3667,0 -0.3667,0.5296 0,-0.5296 z m -3.5442,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.3292,0 0.611,0 1.0185,0.2852 1.2222,-0.2852 1.3036,0 0,0.4889 -5.1738,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.6035,0 -0.4482,0.4889 -0.2037,-0.2037 -1.0184,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5703,0 0,0.2852 -0.5703,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.1629 0.041,-0.041 z m -30.5134,0.2852 1.0184,0 0,0.2037 -1.0184,0 0,-0.2037 z"
+           id="path6116"
+           transform="matrix(0.61596339,0,0,0.61596335,-145.60766,407.39447)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.22999998;fill:#8ae234;fill-opacity:1;stroke:none;display:inline;filter:url(#filter4332);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+           d="m -104.31687,974.2719 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2037,0 -0.2037,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.1079,0.10817 0.1629,0.16295 l 0,0.16296 -0.2444,-0.0815 c -0.024,-0.006 -0.057,-10e-4 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61108 -0.4074,0.0815 0,3.87019 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85552 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2036,-0.0815 0,11.12172 0.1629,-1.1814 0.1222,0.041 0,1.0184 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2444,0.3667 l -0.2037,-0.2444 -0.082,0 -0.163,-0.6519 0,0.5704 -0.041,0 -0.2444,0.1222 0,0.8962 0.2851,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1222 0,0.2444 -0.3667,0 0,0.8556 -0.2851,0.082 0,0.2037 0.2851,-0.082 0,0.082 c 0.4141,0 0.5704,-0.1422 0.5704,-0.4482 l -0.2037,-0.2037 0.5296,0 -0.1222,0.082 -0.082,0.2445 0.1222,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3813,0 c 0.2347,-0.6383 0.527,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.2445,-0.3259 0.082,-0.2445 -0.2444,0.082 -0.6518,0 -0.3259,0.1223 0,-0.041 -0.3667,-0.082 -0.2852,0.2037 -0.4481,-0.2037 0,-0.2445 1.0592,0 0,-0.2037 -0.2037,-0.2037 0,-0.2444 0.4889,0.163 -0.082,0.2037 0.5703,0.1222 0.2852,-0.041 0.6111,0.2037 -0.082,0.2444 0.2852,0.082 0.5703,-0.041 0.6518,0.2444 0,0.2037 c -0.3219,10e-5 -0.8162,0.3865 -1.3851,1.1815 l 18.576905,0 c 0.082,-0.08 0.1635,-0.1631 0.2445,-0.2445 0.212,0.076 0.504,0.165 0.7333,0.2445 l 1.4666,0 -0.2445,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5296,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1356,0.056 0.2037,0.082 l -0.041,0.082 1.3037,0 0.3666,-0.2445 -0.041,0.2445 2.5666,0 0.082,-0.2445 0.2444,0.041 -0.082,0.2037 0.4481,0 0,-1.3444 -0.082,0.2445 -0.2444,-0.041 0.1222,-0.4074 0.2037,0.082 0,-9.044 -0.1222,-0.041 0.1222,-0.5704 0,-1.711 -0.2852,0.082 -0.041,0.2037 0.2037,0.3259 -0.6111,1.0999 -0.2037,-0.041 0.937,-3.5035 0,-1.58882 -0.2851,0.12222 -0.041,1.05921 -0.6519,2.36289 -0.5703,0.2851 1.1814,-4.39976 0.3667,0.57034 0,-1.34438 -0.163,-0.0407 0.163,-0.57035 0,-1.83324 c -0.2598,-0.39209 -0.5239,-0.78278 -0.8148,-1.14069 l 0.8148,0.0407 0,-1.22217 -0.2037,0.85552 -0.2445,-0.0815 0.326,-1.18143 0.1222,0.0407 0,-3.54428 -0.082,0.28517 -0.4482,-0.12222 0.5297,-2.03694 0,-7.98482 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2851,-0.16296 0.082,-0.28517 c -0.3162,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.0999,0 2.811,1.18142 -0.1223,0.40739 0.2852,-0.16295 0.6926,0.20369 -0.4889,0.81478 -0.2037,-0.0407 -0.1629,-0.28517 -0.2445,-0.0407 -0.3666,0.12222 0.1222,-0.40739 0.3666,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.2852,0.2037 -0.2444,-0.0407 -0.6926,-0.48887 -0.5703,0.36665 -1.5481,-1.2629 -1.8333,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54807 0.2037,0.0407 -0.1629,0.69256 -0.4482,-0.12221 -0.082,0.20369 c 0.3277,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4482,0.12222 -0.1222,0.40738 -0.4482,-0.12221 -0.1222,0.40739 0.4481,0.12221 -0.1629,0.69256 c -0.4097,-0.10951 -0.6971,0.12321 -0.937,0.69256 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.163,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.2037 l 0.5296,0.16296 0.163,-0.65182 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2851,-0.16295 0.082,-0.28518 -0.2037,-1.46659 0.6519,-0.24444 -0.2445,-0.0815 0.4482,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2851,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6926,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2445,-0.0407 0.163,-0.65182 -0.937,0 0.2444,0.48886 -0.081,0.44813 -0.3666,-0.57034 0.082,-0.36665 -0.4481,0 -0.8556,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2851,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18142 0.3666,-1.42586 -0.4888,0 -0.6111,2.36285 -0.2444,0 0.611,-2.36285 -2.6072,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9988,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62502 -0.7741,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5704,-0.0815 0,-0.28517 c 0,-0.20089 -0.2546,-0.36699 -0.7741,-0.48887 l -0.041,-0.20369 -0.9777,0 c 0.001,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13728 -0.624,-0.21604 -1.0185,-0.28517 l -1.711,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.729505,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.257605,12.83274 0,-0.93699 -0.041,0.0407 -0.1629,0.61109 0.2037,0.28517 z m -34.342905,-12.75127 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12222 z m 13.484605,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.295505,0.36665 0,0.48887 -0.4482,0 0.4482,-0.48887 z m 7.821805,0 0.082,0.0407 0.2037,0.89625 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.151605,0.0407 0.4481,0 0,0.28516 -0.4481,0 0,-0.28516 z m 5.214605,0 0.2037,0 0,0.28516 -0.2037,0 0,-0.28516 z m -2.974005,0.28516 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24444 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24444 z m 13.036505,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8143,0.0407 0.4481,0.12221 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48886 z m -5.8257,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6518,-0.65182 1.0999,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.774,3.87019 -0.2852,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2851,-0.28517 1.3851,-5.21458 z m -17.721405,0.2037 0.244505,0 0.041,0.16295 -0.082,0.0407 -0.122305,0 -0.082,-0.20369 z m 14.543805,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.820805,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855005,0 0,0.5296 -0.4888,0 0.4888,-0.5296 z m 24.3619,0.16295 c -0.074,0.27639 0.1417,0.51308 0.5703,0.65182 l 0,-0.5296 -0.5703,-0.12222 z m -6.0701,0.32591 0.4481,0.12222 -0.3666,1.30364 -0.4482,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6519,0.20369 0,0.28518 -0.8556,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8333,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.12222 -0.4073,-1.30364 0.1222,-0.48887 0.2444,0.0407 -0.1222,0.48887 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81478 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4917,0.12222 0.2444,0.0407 0.1223,0.48887 -0.326,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.740405,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3037,0 0.8147,0 c -0.012,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3036,0 0.3667,0 0.4073,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.292305,0 0.6518,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1434,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4481,-0.12222 z m 10.144,0.36665 0.4889,0.12222 0.4074,0.57034 -0.6519,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.2037 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7285,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.229305,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.862605,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.0592,0 0.8148,0 0,0.24443 -0.8148,0 0,-0.24443 z m 22.3656,0.0407 0.4482,0.12221 0.2851,0.28517 0.082,-0.40738 0.2445,0.0407 -0.1223,0.44812 -0.2037,-0.0815 0.163,0.28518 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.002205,0.0407 0.2851,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7258,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.980105,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12222 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.163,0.28518 l -0.3667,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5522,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3666,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32592 0.163,-0.16295 z m -3.503505,0.0815 0.081,0.44812 -0.4481,0.12222 -0.041,-0.16295 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2852,1.0667 0.7124,1.54315 1.303705,1.38512 l 0.082,0.16295 -0.163005,0.24444 -0.2444,-0.12222 c -0.5964,0.73087 -0.8708,1.45178 -0.6926,2.11842 l -0.8555,-0.65182 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.587805,0.24443 0.4482,0.12222 -0.082,0.24443 -0.4482,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.5514,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2212,0.0407 0.4481,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.1629,1.46659 -0.4074,0.57035 0.2037,0.24443 -0.3259,0.2037 0.3666,0.57034 -0.2852,0.12222 -0.2444,-0.0407 -0.041,1.14069 -0.3259,1.14068 -0.4481,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1223,0.0815 0.163,0.0407 c 0.083,0.20379 0.1422,0.44083 0.163,0.69256 l -0.041,0.2037 -0.163,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54808 0.774,-2.85172 0.4481,-0.81478 -0.2851,-1.05921 0.5296,0.16296 0.3259,-2.07769 z m -28.435805,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.2852,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.163,0 -0.2037,0.28517 -0.2037,0 0.3667,-0.61108 1.2629,-0.2037 z m 4.807205,0 0.163,0.65183 -0.2037,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.088605,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1634,-0.13004 0.2444,-0.20369 z m 32.591105,0.40738 1.5074,1.34439 -0.1222,0.44812 -0.5296,-0.16295 -0.4889,1.79251 -0.2037,-0.0407 0.4074,-2.48507 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.7741,0 -0.1223,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4172,0.12222 0.041,0 0.2037,0.2037 -0.163,0.0407 -0.082,-0.24443 z m 3.422,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4074,0.12222 c -0.1395,0.12918 -0.3455,0.16298 -0.6519,0.16295 l -0.2036,0 0,-0.20369 0.4888,-0.24443 z m -4.6443,0.0407 0.6519,0.20369 0,0.44813 c -0.4141,0 -0.6518,0.1829 -0.6519,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4477,0.0407 0.3259,0.61109 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.2037 z m -18.0881,0.0407 0.5704,0.28518 0.6518,2.36285 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85552 0.041,0.65182 0.2851,0.12222 -0.3666,0.57034 -1.1814,-4.3998 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2851,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.1629,-0.65182 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36285 -0.2852,-0.16295 -0.8148,-3.05542 z m -7.821805,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.7759,0.20744 -1.0756,0.74803 -0.937,1.71104 l 0.3667,0.57034 -0.2037,0.0407 0.5703,0.24443 -0.1629,1.30365 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.5704,0.85552 c -0.141,0.11253 -0.2864,0.23952 -0.4482,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81477 -0.4481,0.12221 -0.2037,-0.81477 0.4074,-0.12222 -0.1222,-0.44813 -0.6518,0.2037 0.082,0.44812 -0.2037,0.0407 -0.163,-0.61108 c 0.1174,-0.74568 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61109 0.2037,-0.0407 1.3444,-2.03695 z m 31.328205,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28137 -0.041,0.2037 0.2852,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6926,2.64802 c -0.6159,-0.32291 -0.8481,-0.90564 -0.6111,-1.79251 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48887 0.082,-1.18142 -0.5703,-0.12222 -0.6926,2.68876 0.2445,0.28518 -0.3667,0.12221 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08429 -0.2444,1.50733 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12222 -0.4481,-0.12222 -0.163,-0.93699 0.5704,-0.48887 0,-0.12222 c 0.055,0.0879 0.1486,0.1672 0.2851,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2445,-1.87399 0.3666,-0.5296 0.7333,-3.62576 0.2444,-0.89625 -0.4481,-0.12222 -0.3666,1.34438 -0.3667,0.12222 0.2444,0.28517 -0.1222,0.48887 -0.5296,-0.16296 0.8148,-3.09615 z m -9.207,0.12221 0.2037,0.0407 -0.2444,0.89626 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01848 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81478 -0.2037,0.0407 -0.2445,-0.77404 0.2445,-0.0815 z m -6.722005,0.0407 0.041,0 0.1223,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.261405,0.0407 0.2445,0.0407 -0.2037,0.69256 -0.2037,-0.0407 0.1629,-0.69256 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48886 -0.082,-0.36665 0.2852,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1892,-0.0178 0.3783,-0.0562 0.5296,-0.0815 z m -11.7327,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.132,0.12222 0.7741,0.20369 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24443 z m -8.7181,0.0407 0.5704,0.16296 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -15.4807,0.0407 0,0.61109 0.4481,0 c 0,0.33785 0.036,0.62662 0.1222,0.81477 -0.2101,0.0427 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.3667,-0.40739 -0.6518,0.2037 c 0,-0.11015 -0.034,-0.20771 -0.082,-0.28518 l -0.2444,-0.89625 1.3443,-0.16296 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.65182 c 0.3992,-0.22119 0.701,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.1937 0.2037,0.28517 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2852,0.32591 l 0.041,0.16295 -0.2037,-0.20369 -0.2445,0.12222 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3666,0.0815 0.041,-0.20369 -0.2851,-0.52961 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.2037 -0.7741,-0.2037 -0.4481,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2416,3e-5 0.4327,0.0164 0.6111,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40739 z m 16.2956,0 0.2444,0.0815 -0.2444,0.89626 -0.2445,-0.0815 0.2445,-0.89626 z m -19.9621,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.5481,0.0815 0.2445,0.28517 -0.2037,0.36665 -0.163,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.510605,0.12222 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.836005,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.662205,0.0407 0.5297,0.937 0.041,0.16295 -0.2037,0.28518 0.774005,1.83325 -0.529605,0.32591 -0.2852,-1.50734 -0.1222,-0.44813 -0.2444,-0.12222 -0.163,-1.42586 0.2037,-0.0407 z m -0.8962,0.0407 1.1407,4.23685 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6926,-3.4628 -0.041,-0.20369 -0.2851,-0.12222 0.4888,-0.12222 z m 19.880605,0.0815 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -7.7812,0.0815 0.6519,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.326,0.16296 l -0.3259,-0.0815 0,-0.28517 z m -9.2069,0.12222 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24444 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8138,0.0815 0.3667,0 c -0.095,0.17535 -0.2074,0.27297 -0.3667,0.28517 l 0,-0.28517 z m 7.1293,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.5073,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61109 -0.1222,0.40738 -0.4481,-0.12221 0.2444,-0.89626 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56117 0.6518,0.69256 l -0.2444,0.89626 c -0.1374,-0.16028 -0.2848,-0.28993 -0.4482,-0.40739 l 0.041,-0.20369 -0.4481,-0.12222 0.2445,-0.89626 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.1222,-0.0407 0.163,-0.0815 z m -15.602905,0.16296 0.082,0.16295 0.3259,2.9332 0.4074,-0.12222 -0.1223,-0.36665 0.6111,0.24444 c -0.4434,0.11851 -0.6365,0.41476 -0.5296,0.81477 l 0.2444,0.12222 -0.2444,0.7333 0.041,0.20369 0.4481,-0.12221 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44813 -0.3666,1.14069 -0.3667,-0.0815 c -0.056,0.0711 -0.069,0.13431 -0.1222,0.20369 l -0.4481,-1.58881 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16295 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93699 l -0.4481,-0.77404 -0.041,-0.16295 0.5704,-0.36665 z m 31.165205,0 0.5296,0.12221 -0.2037,0.69256 -0.5296,-0.12221 0.2037,-0.69256 z m -28.924605,0.28517 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.725705,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9067,0 0.5296,0.12221 -0.1223,0.48887 0.4482,0.12222 0.1629,-0.69256 0.4482,0.57034 -0.5704,0.81478 -0.1629,1.87398 -0.4482,0.52961 -0.2444,-0.0407 c 0.5137,-1.92153 0.4109,-2.92097 -0.2444,-3.09615 l 0.2037,-0.69256 z m -20.0436,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.7925,0 0.2037,0 c 0.1369,0.16132 0.1866,0.38537 0.163,0.65183 l -0.1222,0 -0.2445,-0.65183 z m -2.5665,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5476,0.16296 0.2444,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.3259,-0.24443 l -0.041,-0.28517 z m -7.1701,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.0815 0.4074,0.12222 -0.3259,0 -0.081,-0.12222 z m -6.7219,0.12222 0.2037,0.0815 -0.082,1.22217 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48887 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6253,0.0407 0.3259,0.0815 -0.163,0.65182 -0.2037,-0.0815 -0.041,-0.52961 0.082,-0.12222 z m -15.3586,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1222,0.16295 0.082,0.28518 -0.3259,-0.40739 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.1629,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24444 c -0.1412,0.67657 -0.1364,1.03083 0.1222,1.09995 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.4482,-0.0815 c -0.206,-0.77059 -0.1475,-1.24298 0.1222,-1.34439 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.7333 0.2852,0.0815 -0.326,0.12221 -0.082,0.24444 0.2445,0.28517 -0.082,0.16296 -0.4074,0.57034 0.041,0.85552 -0.6518,1.30364 0.2444,0.28517 -0.4889,-0.16295 0.3667,-1.34439 -1.1814,0.7333 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79803 -0.2037,-0.85551 l 0.2852,-0.16296 0.041,-0.20369 0.2037,-1.30364 c 0.1374,-0.1299 0.2764,-0.27149 0.4074,-0.40739 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2445,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.2444,0.0407 0.082,-0.36665 0.3667,-0.16296 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.19121 0.2037,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.32591 l 0.2852,0.0815 0.2851,-1.05921 c 0.1085,-0.19992 0.2227,-0.4049 0.3259,-0.61108 l -0.1222,-0.16296 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2445,-0.24444 z m -22.162005,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.432005,0.2037 0.4888,0.12221 -0.4073,0.937 c -0.091,-0.13612 -0.2088,-0.26481 -0.3667,-0.36665 l 0.2852,-0.69256 z m -10.8773,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9777,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.1629,0.65182 -0.2852,-0.57034 0.041,-0.16296 z m 23.9137,0.0407 c 0.452,0.27924 0.6049,0.76826 0.4074,1.50734 l -0.5296,1.05921 c -0.1997,1.12234 -0.2914,1.89101 -0.2851,2.40359 l -0.163,-0.0407 0.041,-0.77404 0.1222,-0.48886 -0.3666,-0.77404 0.8962,-2.11842 -0.1222,-0.77404 z m -21.836,0.12222 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.0995,0 0.041,0 -0.163,0.57034 c -0.021,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.9621,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16296 z m -4.114605,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6257,0 c 0.1218,0.0561 0.225305,0.11426 0.407405,0.16295 l -0.082,0.36665 -0.162905,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.124505,0.0815 0.2445,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1222,-0.48886 z m -25.4618,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69256 l -0.4481,-0.77403 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1478,0.0407 0.2852,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8556,0 0.5703,0 0,0.0815 -0.3666,0.57035 0.1222,0.16295 -0.6111,-0.16295 c 0.107,-0.16059 0.1904,-0.4143 0.2852,-0.65183 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.081,0.16295 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0828 0.016,-0.15377 0.041,-0.24444 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48886 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2445,-0.0407 0,-0.48886 -0.2852,0.0407 -0.041,-0.24444 z m -7.6996,0.0815 0,0.77404 c -0.2652,-0.0831 -0.4074,-0.28894 -0.4074,-0.65182 0.1827,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.5405,0 0.4074,0.12222 -0.082,0.36665 -0.4482,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24444 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2444,-0.36665 0.163,-0.28517 -0.4482,-0.12222 0.5704,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2852,0.0407 l 0,0.65182 -0.2445,-0.0815 -0.041,0.12222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.163,0 -0.5296,0.77403 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.1222,0.20369 c -0.155,0.0761 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2444,-1.05921 l 0.4481,-1.62955 z m -7.2923,0.44813 c 0.2126,0.11967 0.3124,0.32245 0.2852,0.61108 l -0.2037,-0.12222 -0.082,-0.48886 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.2037 0.082,0.36665 c -0.1679,-0.14918 -0.2705,-0.48918 -0.2852,-1.01848 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.935505,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.8962,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.517705,0 0.4074,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.7333,0 0.2037,0.0815 -0.1223,0.40739 -0.2036,-0.0407 0.1222,-0.44813 z m 7.1293,0.0815 0.082,0.12222 0.2851,0.0815 0.081,-0.0407 -0.2037,1.34439 -0.6925,2.52581 -0.2444,0.48886 -0.082,-0.36665 0.2036,-0.28517 -0.2036,-0.20369 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12221 0.2037,0.0407 0.041,-1.05921 0.2852,-0.97773 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.1629,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4074,0.12222 -0.1223,0.36665 -0.2851,-0.48887 z m -10.632905,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48887 z m 27.417305,0 0.3666,0.0815 c -0.05,0.18576 -0.024,0.33527 0,0.44813 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44813 z m -3.9517,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23874 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2445,0.81477 -0.2037,-0.0407 0.2445,-0.81478 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4073,0.24443 l -0.1629,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36665 z m -21.917605,0.16295 0.082,0 c 0.01,0.0632 0,0.14342 0,0.2037 l -0.082,-0.2037 z m 32.468905,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.242905,0.36665 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1223,-0.0407 z m 6.762705,0.16296 0.2036,0.0815 -0.7333,2.81098 -0.2036,-0.0815 0.7333,-2.81098 z m 9.4514,0 -0.2037,0.81478 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89625 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2374,0.33745 0.3666,0.48887 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.2037 l -0.163,0.65182 -0.2037,-0.0407 c 0.071,-0.26674 -0.1676,-0.49256 -0.611,-0.61108 l 0.2444,-0.85552 z m 1.0185,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4889,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44812 0.2444,0.89626 -0.4481,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2444,-0.0407 0.6518,-2.40359 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24444 0.6926,0.16295 0.082,-0.20369 -0.6926,-0.2037 z m -28.680205,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.1796 -0.3023,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1448,-0.11438 0.3062,-0.20677 0.4889,-0.24443 z m 13.362405,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.955005,0.20369 0.041,0 0.3259,0.12222 c 0.029,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77404 -0.2036,-0.0407 c 0.1426,-0.53338 0.01,-0.85798 -0.2852,-0.937 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.081,0 0,-0.0407 z m -2.5665,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.443805,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0184,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4888,0.0815 l 0.082,-0.28517 z m -19.432405,0.0815 0.163,0.0407 -0.082,0.32592 -0.082,-0.36665 z m 13.810505,0.12221 0,0.52961 -0.041,0.0407 -0.041,0.16295 -0.2444,0 0.2036,-0.69256 0.1223,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3666,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9332,1.0147 0.6926,1.91472 l -0.4889,-0.12221 -0.1629,0.5296 0.3666,0.57035 -0.8555,1.2629 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30364 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57034 c -0.1386,0.96298 0.1611,1.5036 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03694 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.2629 l 0.1629,-0.61109 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44812 -0.4074,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12221 0.082,-0.36665 0.4482,0.12221 0.082,-0.36665 -0.4074,-0.12221 0.1629,-0.61109 c 0.3696,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.4 -0.01,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61108 z m -24.5248,0.0407 0.4889,0.12221 -0.4074,0.57035 -0.2444,-0.0815 0.1629,-0.61108 z m 23.3027,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40739 -0.3259,-0.5296 0,-0.0407 z m -16.703,0.0815 0.6519,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.2445,-0.85552 z m 5.7035,0.2037 0.082,0 c -0.036,0.16125 -0.082,0.31655 -0.1222,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.8886,0.0407 0,0.16295 -0.082,0.24444 -0.2036,0 0.041,-0.2037 0.2444,-0.20369 z m -7.7403,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.6367,0.0815 0.6518,0.36665 -0.2851,1.01847 -0.2037,-0.0815 -0.2445,-0.937 0.082,-0.36665 z m 20.8991,0 0.4888,0.12222 0.3667,1.14069 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.4481,-0.12222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.12221 c -0.1069,0.40004 0.086,0.69627 0.5296,0.81478 l -0.5704,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.9332 -0.082,0.16295 -0.5703,-0.32591 0.082,-0.20369 0.4074,-0.77404 c 0.069,-0.55307 -0.1194,-0.87896 -0.4889,-0.97774 l 0.1222,-0.36665 0.4889,0.12222 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09995 0.4481,-1.58882 z m -18.9844,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4073,-0.12221 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2851,-0.52961 0,-0.0407 z m -19.962005,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.2037 z m 1.0999,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.083805,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2036,0.0407 0,0.44813 -1.711,6.35526 -0.4889,-0.12221 0.2852,-0.12222 0.041,-0.20369 0.6926,-3.46281 0.2852,-0.12222 0.041,-1.05921 0.4888,-1.95546 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6438,0.12222 0.041,0.44812 -0.1222,0.0407 -0.082,-0.32591 0.163,-0.16295 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48887 -0.4482,-0.16296 0.082,-0.40739 z m -20.980505,0.32592 0.4889,0.12221 -0.082,0.2037 -0.163,1.38512 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81477 0.041,-0.32591 z m 3.2998,0.0407 0.4482,0.0815 c -0.1069,0.39999 -0.01,0.69501 0.2851,0.77404 l -0.041,0.20369 c -0.4433,-0.11854 -0.7027,-0.10371 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3667,-0.57035 z m 16.825205,0.0407 0.2852,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.7697,0.16296 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12222 0.2444,-0.97773 z m 20.125,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0961,0 0.2037,0.0407 -0.4481,0.937 -0.2037,-0.0407 0.2037,-0.81478 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57034 -0.9778,0 0.163,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2851,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1326,-0.43446 0.1629,-0.61109 z m -4.318305,0.16296 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.305905,0 0.2037,0.0407 c -0.1069,0.40001 -0.01,0.69504 0.2852,0.77404 l -1.4259,3.50354 0.2037,0.24443 -0.041,0.2037 -0.5296,0.89625 -0.2037,-0.0407 0.163,-1.42586 0.2444,-0.12221 0.1222,-0.44813 0.6926,-3.42207 0.2852,-0.20369 z m -35.361305,0.12222 0.1222,0.85551 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18349 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3667,0.1646 c -0.01,-0.0436 -0.032,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34438 z m 9.451405,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1222,-0.44813 z m -4.807205,0.24444 0.2037,0.0815 -0.163,0.5296 -0.2036,-0.0407 0.1629,-0.57034 z m 28.965305,0 0.2037,0.0407 -0.2851,1.01847 -0.2037,-0.0815 0.2851,-0.97773 z m -20.4916,0.12221 0.3666,0.52961 -0.1629,0.61108 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.40001 -0.4121,0.56665 -0.8555,0.44812 0.107,-0.40002 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12222 0.1629,0.24443 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8365,0.2037 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8963,0.24443 -0.4481,1.75177 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34438 l -0.4481,-0.0815 0.1629,-0.57034 z m -6.1515,0.0407 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.57035 0.041,-0.16295 z m -28.558005,0.0815 -0.2037,1.62955 -0.8147,0.24443 0.2444,-0.89625 c 0.4491,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2851,-0.0815 0.1222,-0.36665 z m 21.876805,0.0407 0.1629,0.0407 0,0.24444 -0.4074,0 0.2445,-0.28518 z m -9.5329,0.0407 0.2037,0 0.1629,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9664,0.24444 0.4889,0.12221 -0.082,0.24444 -0.5296,0.93699 -0.163,-0.24443 -0.2037,-0.0815 -0.5296,0.28517 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.1629,-0.24443 -0.2037,-0.0407 -0.244405,0.12221 0.203605,-1.62955 0.6111,0.16296 0.1222,-0.40739 c 0.7391,0.19754 1.1561,0.0741 1.263,-0.32591 z m 2.8517,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.862605,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.640505,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0407 0.1223,-0.44813 z m -9.288505,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.725205,0.0815 c 0,0.20653 -0.1299,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.8555,-0.20369 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.5481,0 0.4074,0 0.082,0.12221 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.24443 0.1223,-0.44813 c 0.1892,0.0506 0.3495,-0.044 0.4888,-0.24443 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59857 -0.6518,0.7333 l -0.1223,-0.0407 0.4482,-0.77404 z m 4.4405,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1223,0.44813 -0.4073,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57035 0,-0.57035 z m -11.9773,0.16296 -0.082,0.36665 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.3259,0.36665 c -0.3477,0.17232 -0.5887,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44387 -0.02,-0.72709 -0.4074,-0.81478 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24443 z m -14.4216,0.20369 0.1223,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1223,0 l 0,-0.0407 z m -13.729005,0.24443 0.4482,0.0815 -0.082,0.2037 -0.4074,-0.12222 0.041,-0.16296 z m 20.165805,0 0.1629,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24444 0.2036,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.326,0.0407 -0.1474,0.0926 -0.2951,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21898 0.774,0.44813 l -0.4888,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.122,0.22481 0.1522,0.50258 0.041,0.85552 l 0.6518,0.16295 -0.3667,1.09995 -0.6111,-0.12222 0,2.11839 -1.3443,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2444,0.082 -0.1222,0.4074 -0.2851,-0.041 -0.2852,-0.3259 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.78118 0.2444,-0.0407 -0.2851,0.97774 0.6518,0.12221 0.4074,-1.30364 -0.4482,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2851,0 0.041,-0.12222 0.2851,-0.0407 0.082,-0.20369 -0.2444,-0.0815 0.163,-0.57034 -0.2037,-0.28518 0.082,-0.20369 0.2851,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12222 -0.163,-0.16296 z m 7.8626,0 0.041,0.16296 -0.2852,-0.0815 0.2444,-0.0815 z m -20.043605,0.12222 0.4482,0.77404 -0.3259,0.16295 -0.163,-0.0407 0.041,-0.89625 z m -0.6925,0.0407 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44812 z m 19.880605,0.16295 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2851,-0.12222 z m -1.3852,0.12222 0.082,0.12221 0,0.28518 -0.4481,-0.12222 0.163,0 0.2037,-0.28517 z m 3.8702,0.12221 0.2445,0.0815 0,0.28517 0,0.65183 0,0.12221 -0.326,0.12222 -0.4073,-0.0815 0.2851,-1.14069 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.380305,0.12222 0.3667,0.48887 -0.4889,-0.12222 0.1222,-0.36665 z m 35.402105,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12222 -0.041,0.20369 -0.7741,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16295 z m 6.4367,0 -0.041,0.20369 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12221 z m -27.172805,0.24443 0,0.20369 -0.4074,0.2037 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.136905,0 0.3666,0.0815 -0.2444,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.606805,0.0815 0.2037,0.0407 -0.3666,1.34438 c -0.019,-0.29822 -0.091,-0.48679 -0.2445,-0.57034 l 0.041,-0.32592 0.3667,-0.48886 z m 10.307005,0.0815 0.2444,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.163,-0.48886 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24444 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28517 -0.041,-0.0407 0.082,-0.24444 z m 1.3851,0.0407 0.2444,0.28518 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4074,-0.36665 l 0.163,-0.2037 z m -7.6996,0.2037 0.2851,0.0407 -0.1629,0.48886 -0.2445,-0.0815 0.1223,-0.44813 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.540005,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6518,0.81478 0.3666,0.0815 -0.4481,0.1222 -0.082,0.2445 0.2852,0.3259 -0.041,0.2037 -0.5704,0.6111 0.082,0.9777 -0.8555,1.4259 0.2852,0.2851 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8555 0.2851,0.2852 -1.0184,0.4481 c -0.1112,-0.2192 -0.218,-0.4174 -0.3259,-0.6518 0,-0.011 0.01,-0.03 0,-0.041 l 0.1222,-0.774 0.2851,0.082 0.6926,0.4481 c -0.2006,-0.6795 -0.5592,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6925 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.108,-0.4498 0.163,-0.6518 l 0.1629,-0.1223 0.041,-0.20272 -0.041,-0.12221 c 0.059,-0.23984 0.045,-0.41042 0.082,-0.61109 0.2166,-0.0412 0.4501,-0.15496 0.6926,-0.36665 -0.087,0.52224 -0.036,0.8328 0.2444,0.89626 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.1125 -0.3751,0.2435 -0.5296,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.3259,1.6703 0.5703,0.1223 0.1222,-0.4074 0.4482,-0.2037 -0.2852,-0.2852 -0.2852,-0.082 0.082,-0.2037 1.5074,0.1222 0.2037,-0.6925 -0.5296,-0.1223 0.1222,-0.4074 0.5703,0.1223 0.3667,-1.14079 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54808 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.035905,0 0.163,0.24444 0.2037,0.0815 0.3259,-0.12221 -0.041,0.16295 c -0.3962,0.0368 -0.7257,0.11789 -0.9778,0.2037 l -0.041,0 -0.1629,-0.0407 0.2852,-0.44813 0.2444,-0.0815 z m -12.018,0.0815 0.6111,0.12222 -0.1222,0.40739 -0.4889,-0.52961 z m 3.9517,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.366705,0.12222 0.041,-0.40739 0.122305,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4074,0.12222 -0.082,0.44813 -0.4074,-0.24444 0.082,-0.32591 z m -26.358005,0.0407 0.4074,0.12222 -0.082,0.20369 -0.4074,-0.12221 0.082,-0.2037 z m 1.6703,0 0.2037,0.24443 -0.041,0.2037 -0.3259,-0.32591 0.1629,-0.12222 z m 18.169505,0.0407 c 0.1619,0.0875 0.2758,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.2037 l -0.5296,0 c 0.031,-0.17322 0.06,-0.33608 0.082,-0.48887 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24444 -0.285205,-0.0815 0.041,-0.61108 0.366705,-0.12222 z m -3.299805,0.0815 0.2444,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.163,-0.48886 z m 10.714305,0.0407 0.7333,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1222,0.28518 -0.082,0 -0.2037,-0.28518 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81477 z m 20.0028,0 c -0.1782,0.66667 0.096,1.38755 0.6925,2.11845 l 0.2445,-0.1222 0.1629,0.2444 -0.041,0.1629 c -0.2463,-0.066 -0.4957,0.012 -0.6925,0.163 -0.042,-0.016 -0.074,-0.03 -0.1223,-0.041 l -0.3666,0.1222 c 0.1402,-0.4439 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5135 0.4453,-0.70982 0.8148,-0.61104 l 0.1222,-0.40739 -0.6111,-0.16295 0.8556,-0.65182 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44813 -0.2852,-0.57035 0.082,-0.36665 z m -17.9659,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2445,-0.32591 0.082,-0.16296 z m -14.258605,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.766005,0 0.7333,0 -0.082,0.2037 -0.6926,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6768,0 0.2037,0.0407 -0.2037,0.81478 -0.2037,-0.0407 0.2037,-0.81478 z m -28.4357,0.16295 0.5703,0.12222 -0.2444,0.69256 -0.3666,-0.61108 0.041,-0.2037 z m 2.1592,0.0407 -0.082,1.1407 0.611,0.163 0.082,-1.18148 -0.611,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40739 z m -13.4438,0.0407 0.1222,0 0.2852,0.73328 -0.1222,0.163 -0.163,0 -0.2037,-0.61111 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48887 -0.3259,0 0,-0.48887 z m 4.0332,0 0.2444,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12222 z m -25.706305,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.172405,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28518 z m -10.918005,0.24444 c 0.2732,-0.0456 0.679405,-0.0134 1.181405,0.0407 l -0.1222,0.40734 c -0.3876,-0.088 -0.750105,0.1822 -0.937005,0.7741 l -0.5704,-0.8963 c 0.053,-0.16642 0.175,-0.28026 0.4482,-0.32588 z m 14.095605,0.0407 0.3259,0 -0.1222,0.20374 -0.2037,0 0,-0.20374 z m 0.7741,0 0.082,0 0,0.20374 -0.041,0 -0.041,-0.20374 z m 15.1548,0.0407 0.4889,0.12222 -0.2852,1.01852 -0.3666,-0.4889 0.1629,-0.65184 z m -17.9658,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12414 z m 10.8365,0 0.2037,0.0407 -0.041,0.12224 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.28518 z m 9.5737,0.12224 -0.1223,0.082 -0.082,0.1629 0.2037,0.2445 0,-0.4889 z m -13.8105,0.082 0.4074,0.082 -0.3259,0.4481 -0.326,-0.082 -0.041,-0.1629 0.2852,-0.2852 z m -10.4292,0.041 0.1222,0.082 0,0.2444 -0.1629,-0.041 c 0.032,-0.1024 0.017,-0.1886 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1222,0.6111 c -0.1738,-0.1302 -0.3351,-0.2839 -0.4889,-0.3667 -0.043,-0.2456 -0.071,-0.5151 -0.041,-0.8148 z m -8.5551,0.041 0.3666,0 0,0.2444 -0.3666,0 0,-0.2444 z m -16.458505,0.082 0.1629,0.041 -0.1222,0.4074 -0.2852,-0.082 0.082,-0.2852 0.163,-0.082 z m 4.196105,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.521,-0.509 -0.5296,-1.3036 z m 1.7925,0.1629 -0.2444,0.6926 0.6518,0.163 0.2037,-0.6926 -0.6111,-0.163 z m 3.0147,0.2445 c 0.5369,0.1214 0.591,1.2374 0.1629,3.2998 -0.149,0.2487 -0.3559,0.7021 -0.5703,1.1407 l -0.5704,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5932,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.1629,-1.6703 z m 9.6958,0.041 0.1222,0.1222 -0.2444,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1223 0.2444,0.2445 0.3667,-0.4482 z m 5.3775,0 c 10e-5,0.306 -0.1563,0.4481 -0.5703,0.4481 l 0,0.2037 0.4074,0 -0.3667,0.6518 -0.4073,-0.081 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.4073,-0.774 c 0.1596,-0.01 0.3126,-0.041 0.4889,-0.041 z m -13.4438,0.041 0.2852,0.041 -0.4481,1.2629 -0.082,0.3259 c 0.1979,0.081 0.3666,0.1667 0.5296,0.2444 l -0.2445,0.4481 -0.1222,-0.2037 -0.3259,0.163 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.1629,-0.4888 0.041,0.041 0.2852,0 0.163,-1.3037 z m -8.188505,0.082 0.5704,0.1222 -0.163,0.4074 -0.4074,-0.5296 z m 13.158705,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.359,0 0.3259,0 c -0.047,0.2542 -0.075,0.4486 -0.082,0.6518 l -0.611,0 0.082,-0.5704 0.2851,-0.082 z m -3.1369,0.082 0.082,0.4888 c -0.2042,-0.1067 -0.3488,-0.235 -0.4481,-0.4074 l 0.3666,-0.082 z m -1.7517,0.082 -0.1223,0.4888 -0.1629,0 0,-0.4074 0.2852,-0.082 z m 18.0065,0.041 0.2037,0.041 -0.1629,0.6518 -0.2037,-0.082 0.1629,-0.6111 z m 0.6519,0 0.4888,0.1222 -0.4074,1.4666 -0.1629,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2445,0.041 l 0,-0.3667 0.326,-1.2221 z m -21.225,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.1343,0.08 0.2036,0.1222 l -0.2444,0.041 0.041,-0.163 z m -12.181,0.082 0.2852,0.041 -0.2852,0.8962 -0.2851,-0.041 0.2851,-0.8962 z m 1.7925,0.1629 -0.1222,0.4482 0.6111,0.1222 -0.4889,-0.5704 z m 19.5954,0 c 0.045,0.041 0.1551,0.1195 0.2037,0.163 l -0.082,0.5296 -0.8962,2.8517 -0.5704,0.8148 0.3667,1.0592 -0.6518,-0.163 -0.3667,2.0777 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.163,-1.4666 0.4888,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.4074,-0.5703 0.3667,-0.1223 0.2444,0.041 0.082,-1.1406 0.3666,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1223,0.163 -0.163,-0.041 0.041,-0.1222 z m 1.8333,0.1222 0.082,1.6296 0.4889,0.1222 0.2036,-0.2037 -0.2444,0.8148 c -0.1147,-0.1898 -0.1569,-0.2813 -0.2852,-0.4889 l -0.2037,0.081 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4073,-0.6518 0.4481,-1.2629 z m 0.5296,0 0.3666,0.082 0,0.082 -0.2444,0.3667 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.163 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4074 z m 1.7925,0.2444 0.2037,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.1629,0.1223 l -0.3667,-0.082 0.3259,-1.2222 z m -32.102205,0.041 0.2444,0.082 -0.9777,3.0962 -0.2444,-0.041 0.9777,-3.1369 z m 29.576405,0.163 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4482 0.1629,-0.1629 z m -14.0142,0.1629 0.2037,0 0,0.4889 -0.2037,0 0,-0.4889 z m 11.6921,0.082 0.2037,0.082 0.041,0.2445 -0.2852,-0.2037 0.041,-0.1222 z m -24.2804,0.082 -0.1629,0.4482 0.6111,0.1629 0.1629,-0.4888 -0.6111,-0.1223 z m 27.1321,0.041 0.2037,0.041 0.041,0.6926 -0.4074,-0.1222 0.163,-0.6111 z m -29.046805,0.041 0.285205,0.041 -0.2037,0.6519 -0.244505,-0.082 0.163,-0.6111 z m 31.572605,0.2037 0.4074,0.1223 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.081 0.082,-1.1407 c -0.055,-0.013 -0.1121,0 -0.163,0 l 0.082,-0.2852 z m -19.5546,0.2445 0.041,0 0,0.4481 -0.2037,0 0.1629,-0.4481 z m -5.5405,0.041 0.6925,0.1629 -0.5703,1.1815 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9479,0.2037 0.4073,0 0,0.4888 0.2445,0 0.041,-0.041 -0.041,0.2852 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3667,-0.082 -0.1629,0.041 c 0.1408,-0.1216 0.2037,-0.2569 0.2037,-0.4481 z m 13.8919,0 0.2444,0.041 0.1223,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1222,-0.4074 z m -11.8143,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2036,-0.2037 c -0.1036,0 -0.1645,0.01 -0.2445,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.7741,0 0.4888,0 0.163,0.041 -0.2444,0.774 -0.5296,0.3259 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3666 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.1223 0.041,-0.082 z m -22.528605,0.1629 0.6518,0.163 -0.4888,0.6111 -0.3667,-0.082 0.2037,-0.6926 z m 14.951205,0.1222 0.2037,0 0.3666,0.082 -0.4074,0.2037 -0.041,0.2037 0.041,0.1222 -0.1629,0.041 -0.2037,0 0.2037,-0.6518 z m 20.0028,0.041 0.2036,0.041 -0.041,0.2037 -0.2036,-0.041 0.041,-0.2037 z m -18.8214,0.163 0.2444,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.081 -0.2445,-0.081 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2037,-0.082 0.1629,-0.4481 -0.5703,-0.1222 -0.041,0.2037 0.3259,0.8147 -0.3259,0.1222 c -0.1051,0.333 -0.023,0.6073 0.2852,0.7741 -0.04,0.1099 -0.074,0.22 -0.1223,0.3259 l -0.2444,0.082 0.1222,-0.4074 -0.5703,-0.1222 -0.2445,1.7518 c -0.1707,0.1743 -0.3679,0.3712 -0.5703,0.5296 l 0.2037,-0.2852 c 0.09,-0.6138 -0.1266,-0.9904 -0.6111,-1.1 l 0.1222,-0.4074 0.6111,0.1223 0.1222,-0.2852 -0.3259,-0.2852 0.4481,-0.1222 0,-1.1814 0.5297,-1.7925 z m -27.376505,0.041 0.8147,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0185 0.1223,-0.4073 z m 2.485,0.041 0.5704,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.020805,0.1222 0.2851,0.041 -0.2036,0.6926 -0.2852,-0.041 0.2037,-0.6926 z m -23.3027,0.041 0.2037,0 0,0.2037 -0.2444,-0.041 0.041,-0.163 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2852 -0.3667,1.3443 -0.041,0 0.4074,-1.3443 z m -11.4884,0.082 0.2445,0.081 -0.082,0.2037 -0.2852,0.1222 0.1222,-0.4074 z m 10.307,0 0.041,0 c 0.027,0.1987 0.01,0.418 -0.041,0.6518 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.163,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.163,0 -0.4482,0.4481 -0.2037,0 0.4889,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.326,0 0.1223,-0.4481 z m -22.447105,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.165705,0 0.5296,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.902805,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1384,-0.184 -0.2037,-0.2852 z m 10.714305,0.2037 -0.082,0.2851 -0.041,0.082 -0.041,0.1222 -0.163,-0.2036 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1466 -0.1222,-0.2037 z m -4.1554,0.041 0.6111,0.1222 -0.082,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.2222,0.082 -0.2037,0.6111 -1.2629,0 0.2444,-0.6926 z m 10.918,0.041 0.6519,0 0,0.2037 -0.1223,0 -0.611,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2994,0.081 0.2852,0.4074 -0.2852,0.4481 -0.2445,-0.041 0.2445,-0.8148 z m 1.1407,0.3259 0.1222,0.6111 -0.2852,-0.082 0.163,-0.5296 z m 4.1553,0.041 0.1223,0 c -0.064,0.2039 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1223,0.4074 0.041,0.8962 -0.4074,0.4889 -0.2036,-0.041 0.3259,-1.1814 -0.4482,-0.1223 0.2445,-0.8147 0.4074,0.1222 0.082,-0.2852 z m -17.2325,0.041 0.3666,0 0,0.2851 -0.2444,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.1629,0.5703 -0.2445,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.4074,0 -0.1223,0.6925 c -0.1459,0.1527 -0.3487,0.2497 -0.5703,0.3259 l -0.6111,-0.4481 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.4141,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.447105,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4074 z m 21.428605,0 0.2852,0.1629 -0.082,0.2037 -0.2851,-0.041 0.082,-0.3259 z m -2.3221,0.082 0.2852,0.082 -0.2852,0 0,-0.082 z m -14.2993,0.3666 0.4889,0.5296 -0.2037,0.6518 -0.041,0 -0.2445,-0.3259 -0.5296,-0.1222 c -0.048,0.151 -0.1391,0.2794 -0.2444,0.3667 l -0.8555,-0.2445 c -0.047,-0.2318 -0.222205,-0.4008 -0.611105,-0.4888 l 0.041,-0.2037 0.570305,0.1222 0.2037,0.2444 c 0.1053,-0.3329 0.569,-0.446 1.4259,-0.5296 z m 3.1776,0.3259 0.3667,0.4482 -0.6518,-0.1223 0.2851,-0.3259 z m 21.6731,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.1637 -0.1222,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3444,0.1222 0.2037,0.3667 -0.041,0.2037 -0.2444,-0.3667 c 0.023,-0.07 0.061,-0.1319 0.082,-0.2037 z m -25.909905,0.4074 0.2444,0.041 -0.1222,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -1.5073,0.081 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1176 -0.163,-0.1629 z m -3.911,0.082 c 0.1984,0.045 0.3656,0.107 0.5296,0.1222 l 0.4889,0.6111 0,-0.4888 -0.1222,-0.1223 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2002 0.3052,0.4271 0.4889,0.6519 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.2852,-0.041 -0.6518,0.2852 0.041,0.6111 c -0.1698,-0.1506 -0.3285,-0.3246 -0.4889,-0.4889 l 0.082,-0.2037 -0.3667,-0.082 c -0.1551,-0.1722 -0.3025,-0.3448 -0.4481,-0.5296 l 0.6518,0.1222 0.163,-0.4889 z m 11.732805,0.2445 0.4481,0 0,0.4888 -0.4481,0 0,-0.4888 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.4406,0.041 0.163,0.2851 -0.041,0.163 -0.9777,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1964 0.4888,-0.4074 l 0.3667,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.157,0.2267 0.163,0.3666 l -0.6926,0 0.163,-0.2852 0.3666,-0.082 z m 17.1104,0.041 0.1629,0.041 -0.041,0.1629 -0.1629,-0.082 0.041,-0.1222 z m -21.1435,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2444,0.2851 l -0.3666,0 0,-0.2851 z m 11.692,0.4481 0.5297,0.1222 -0.082,0.2444 -0.5297,-0.1222 0.082,-0.2444 z m -13.0364,0.082 0.163,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.163,0 -0.082,0.2444 -0.3667,0.2037 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2037 -0.1222,-0.2851 0,-0.082 z m 25.421,0.041 0.1223,0.4481 -0.1223,0.2852 0,-0.7333 z m -16.1733,0.1629 -0.041,0.2037 -0.041,0.4889 -0.937,-0.1222 -0.082,-0.082 0.7741,-0.3667 -0.3667,-0.082 0.6926,-0.041 z m -3.5035,0.041 -0.041,0.1223 -0.2852,-0.082 0.3259,-0.041 z m 4.7664,0 0.4481,0.082 0,0.041 0,0.2037 c -0.1904,0 -0.2989,0.048 -0.4074,0.1223 l -0.041,-0.4482 z m -2.5665,0.041 -0.1223,0.4482 -0.611,-0.082 -0.2445,-0.2445 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7887,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.163,0.2445 0.2851,0 0.163,-0.1222 0.2852,0.2851 -0.326,0.3667 c -0.7618,0.018 -1.1993,0.1247 -1.2629,0.3259 l -0.082,0.2037 0.2852,0.082 0.5296,0 -0.2444,0.2852 c -0.3068,0 -0.7246,-0.1575 -1.1814,-0.3667 l 0.1222,-0.3259 -0.366705,-0.082 -0.3259,0.163 c -0.3253,-0.184 -0.6735,-0.4253 -1.0592,-0.6926 0.53,0.1199 0.9408,0.021 1.2222,-0.2852 0.452005,0.097 0.896405,0.163 1.385105,0.163 l 0.082,0 0.1629,0.041 0.041,-0.163 0.1223,-0.1222 z m 1.9147,0.082 c 0.012,0.2782 0.1751,0.4717 0.6111,0.5704 l -0.041,0.1222 -0.1629,0.082 c -0.4017,-0.033 -0.7787,-0.07 -1.1,-0.082 0.1875,-0.1742 0.4654,-0.4655 0.6926,-0.6926 z m 25.1766,0 0.1223,0.041 -0.2445,1.0185 -0.1222,-0.041 0.2444,-1.0185 z m -10.9587,0.082 0.2444,0.082 -0.082,0.2852 -0.1629,0 0,-0.3666 z m -20.817605,0.1223 c 0.2965,0.3446 0.6324,0.7122 0.9778,1.0999 l -0.7333,-0.1629 c -0.294,-0.2508 -0.5828,-0.5253 -0.8556,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2444 0.4481,0.7333 -0.3259,0 c -0.2313,-0.1353 -0.4738,-0.2499 -0.6925,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.4481,-0.082 z m 23.221205,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.4074,-1.3036 z m 11.2846,0.1222 -0.2037,0.4074 0.082,-0.326 0.1223,-0.082 z m -16.2955,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.676905,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.3666,0 0.2037,-0.082 z m 29.169105,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1195,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1697,0.1008 -0.2445,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4888 -0.078,-0.08 -0.1398,-0.2017 -0.2037,-0.3259 0.1573,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2852 l 0.7333,-0.041 z m -4.929405,0.1222 c 0.1297,0.1453 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.043 -0.139,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2444,-0.163 l 0.1629,-0.041 0.041,-0.1629 z m 10.021805,0.082 0.3666,0.2444 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.037,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6405,0 0.4073,0 0,0.082 -0.2444,0.1222 -0.1629,0 0,-0.2036 z m -3.0962,0.1222 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2444,0.2852 0.081,0 0,0.4074 c -0.3615,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1558,0 0.2445,0 l 0,-0.3259 z m -6.4775,0.3259 0.6518,0 0,0.4889 -1.0185,0 0.3667,-0.4889 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1223 c -0.1063,0.015 -0.2176,0.027 -0.3259,0.041 l 0.082,-0.2445 z m 9.4107,0.041 c -0.02,0.2877 -0.042,0.5617 0.041,0.7741 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4482 0.5703,-0.8147 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2445 -0.2445,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2445,-0.2445 z m -8.6367,0.163 0.6518,0 0,0.2037 -0.6518,0.2037 0,-0.4074 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.4074 -0.4888,0 0.4888,-0.4074 z m -15.154805,0.2037 0.041,0 0,0.2037 -0.4482,0 0,-0.041 0.4074,-0.163 z m 3.3405,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 4.970205,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.1629,0.4889 -0.5296,-0.1223 0.041,-0.082 c 0.1755,-0.071 0.4149,-0.2008 0.6111,-0.2851 z m 5.2961,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2445,-0.1222 z m -32.631805,0.2852 0.6518,0 0,0.2444 -0.6518,0 0,-0.2444 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.329205,0 0.6111,0 1.0184,0.2852 1.2222,-0.2852 1.3036,0 0,0.4889 -5.1738,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.6035,0 -0.4481,0.4889 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5703,0 0,0.2852 -0.5703,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.163 0.041,-0.041 z m -30.513405,0.2852 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6192"
+           transform="matrix(0.61596339,0,0,0.61596335,-151.19575,407.39447)" />
+        <g
+           inkscape:export-ydpi="600"
+           inkscape:export-xdpi="600"
+           inkscape:export-filename="/Volumes/partage/private/marketing/Design/ChartesGraphiques/ModelWriter/png/logo_modelwriter_HD.png"
+           id="g4593"
+           transform="matrix(0.39217453,0,0,0.39217453,-362.40312,1081.9433)">
+          <g
+             id="g4324"
+             transform="matrix(1.0083233,0,0,1.0083233,11.632425,-451.09721)">
+            <text
+               sodipodi:linespacing="125%"
+               id="text4326"
+               y="108.4253"
+               x="102.82677"
+               style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:47.02912903px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none"
+               xml:space="preserve"><tspan
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1"
+                 y="108.4253"
+                 x="102.82677"
+                 id="tspan4328"
+                 sodipodi:role="line"><tspan
+                   id="tspan4330"
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1">M</tspan><tspan
+                   id="tspan4332"
+                   style="font-size:43.5675621px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1">ODEL</tspan></tspan></text>
+            <text
+               xml:space="preserve"
+               style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:47.02912903px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+               x="240.09686"
+               y="124.76314"
+               id="text4334"
+               sodipodi:linespacing="125%"><tspan
+                 sodipodi:role="line"
+                 id="tspan4336"
+                 x="240.09686"
+                 y="124.76314"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px"><tspan
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#faa542;fill-opacity:1"
+                   id="tspan4338">W</tspan><tspan
+                   style="font-size:43.5675621px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.36148632px;fill:#faa542;fill-opacity:1"
+                   id="tspan4340">RITER</tspan></tspan></text>
+          </g>
+          <g
+             id="g4400"
+             transform="translate(24.224454,-101.5825)">
+            <g
+               transform="matrix(0.62138123,0.05946504,-0.05946504,0.62138123,93.923956,-868.76894)"
+               id="g4376">
+              <path
+                 d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329"
+                 id="path4378"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="ccscscscsc"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+              <path
+                 d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702"
+                 id="path4380"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="ccccscc"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+            </g>
+            <g
+               style="fill:#faa542;fill-opacity:1"
+               id="g4394"
+               transform="matrix(-0.62138123,-0.05946504,0.05946504,-0.62138123,366.91998,366.23079)">
+              <path
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+                 sodipodi:nodetypes="ccscscscsc"
+                 inkscape:connector-curvature="0"
+                 id="path4396"
+                 d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329" />
+              <path
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+                 sodipodi:nodetypes="ccccscc"
+                 inkscape:connector-curvature="0"
+                 id="path4398"
+                 d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702" />
+            </g>
+          </g>
+        </g>
+        <g
+           inkscape:export-ydpi="93.669357"
+           inkscape:export-xdpi="93.669357"
+           inkscape:export-filename="/Volumes/partage/private/marketing/Design/ChartesGraphiques/ModelWriter/png/icon_128.png"
+           id="g3818"
+           transform="matrix(0.58553362,0,0,0.58553362,-418.33156,1069.921)">
+          <rect
+             style="fill:none;stroke:none"
+             id="rect3816"
+             width="122.98579"
+             height="122.98579"
+             x="273.0769"
+             y="-419.00171" />
+          <g
+             id="g3801"
+             transform="translate(1.3533681e-6,0)">
+            <g
+               transform="matrix(0.90875687,0,0,0.90875687,-253.10201,-1142.0467)"
+               id="g4342">
+              <text
+                 sodipodi:linespacing="125%"
+                 id="text4344"
+                 y="875.41772"
+                 x="587.49329"
+                 style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.81373978px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+                 xml:space="preserve"><tspan
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.41145706px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.5px"
+                   y="875.41772"
+                   x="587.49329"
+                   id="tspan4346"
+                   sodipodi:role="line"><tspan
+                     id="tspan4348"
+                     style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.41145706px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.5px;fill:#5a5a5a;fill-opacity:1">M</tspan><tspan
+                     id="tspan4350"
+                     style="font-size:49.33833313px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.5px;fill:#5a5a5a;fill-opacity:1" /></tspan></text>
+              <text
+                 xml:space="preserve"
+                 style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.81373978px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+                 x="648.72882"
+                 y="893.41772"
+                 id="text4352"
+                 sodipodi:linespacing="125%"><tspan
+                   sodipodi:role="line"
+                   id="tspan4354"
+                   x="648.72882"
+                   y="893.41772"
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.41145706px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.5px"><tspan
+                     style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.41145706px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.5px;fill:#faa542;fill-opacity:1"
+                     id="tspan4356">W</tspan><tspan
+                     style="font-size:49.33833313px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.5px;fill:#faa542;fill-opacity:1"
+                     id="tspan4358" /></tspan></text>
+            </g>
+            <path
+               d="m 363.53356,-386.66715 c 0.21985,-0.24774 0.34382,-0.58056 0.37191,-0.99847 -2.25132,-9.42388 -3.98336,-19.6953 -7.8058,-28.4784 -0.52775,-1.21266 -1.10577,0.93766 -1.11125,1.52325 0.26633,5.10755 2.05196,19.08234 0.12471,21.21918 -1.81932,2.01724 -15.11778,2.82144 -21.21317,3.31672 -0.58076,0.0751 -2.64136,1.07154 -1.4535,1.36715 9.23289,2.29766 20.22956,2.01571 30.04403,2.45343 0.50749,0.008 0.82323,-0.15512 0.9698,-0.32028 l 0.0733,-0.0826"
+               id="path4412"
+               inkscape:connector-curvature="0"
+               sodipodi:nodetypes="ccscscscsc"
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+            <path
+               d="m 351.03347,-396.42974 c -0.31271,0.3397 -0.73863,0.57516 -1.27782,0.7064 -9.2053,-7.29966 -22.46679,-12.20281 -44.06858,-3.72725 -0.43495,0.018 -0.44393,-0.19949 -0.45293,-0.41693 14.2234,-8.25312 24.19603,-10.06871 35.02824,-7.66511 5.68643,1.26178 13.21636,6.77394 10.87534,10.98966 l -0.10419,0.11323"
+               id="path4414"
+               inkscape:connector-curvature="0"
+               sodipodi:nodetypes="ccccscc"
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+            <path
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+               sodipodi:nodetypes="ccscscscsc"
+               inkscape:connector-curvature="0"
+               id="path4418"
+               d="m 305.60606,-328.35047 c -0.21985,0.24774 -0.34382,0.58056 -0.37191,0.99847 2.25132,9.42388 3.98336,19.6953 7.8058,28.4784 0.52775,1.21266 1.10577,-0.93766 1.11125,-1.52325 -0.26633,-5.10755 -2.05196,-19.08234 -0.12471,-21.21918 1.81932,-2.01724 15.11778,-2.82144 21.21317,-3.31672 0.58076,-0.0751 2.64136,-1.07154 1.4535,-1.36715 -9.23289,-2.29766 -20.22956,-2.01571 -30.04403,-2.45343 -0.50749,-0.008 -0.82323,0.15512 -0.9698,0.32028 l -0.0733,0.0826" />
+            <path
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+               sodipodi:nodetypes="ccccscc"
+               inkscape:connector-curvature="0"
+               id="path4420"
+               d="m 318.10615,-318.58788 c 0.31271,-0.3397 0.73863,-0.57516 1.27782,-0.7064 9.2053,7.29966 22.46679,12.20281 44.06858,3.72725 0.43495,-0.018 0.44393,0.19949 0.45293,0.41693 -14.2234,8.25312 -24.19603,10.06871 -35.02824,7.66511 -5.68643,-1.26178 -13.21636,-6.77394 -10.87534,-10.98966 l 0.10419,-0.11323" />
+          </g>
+        </g>
+      </g>
+      <g
+         id="g5598"
+         inkscape:export-filename="/home/development/git/ModelWriter/Source/releng/eu.modelwriter.product/icons/about.png"
+         inkscape:export-xdpi="204"
+         inkscape:export-ydpi="204">
+        <rect
+           transform="scale(-1,1)"
+           y="827.34698"
+           x="439.36868"
+           height="192.37003"
+           width="150"
+           id="rect3860-2"
+           style="fill:url(#linearGradient5557);fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:export-filename="Z:\private\marketing\Design\Produits\UMLDesigner\aboutscreen\png\aboutscreen_UML.png"
+           inkscape:export-xdpi="90"
+           inkscape:export-ydpi="90" />
+        <rect
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="display:inline;overflow:visible;visibility:visible;opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;filter:url(#filter3614-7);enable-background:accumulate"
+           id="rect6106-9"
+           width="39.10931"
+           height="39.10931"
+           x="-223.4366"
+           y="1050.7064"
+           transform="matrix(0.61596339,0,0,0.61596335,-404.11482,325.55658)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.30051804px;line-height:125%;font-family:'karabinE.';-inkscape-font-specification:'karabinE.';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.49142857;fill:#ef2929;fill-opacity:1;stroke:none;filter:url(#filter3558-1)"
+           d="m -92.403025,1026.3635 -2.5665,0.4889 0,1.3444 0.5703,-0.6111 0.6519,0 0,0.2037 -1.2222,0.4074 0,2.0777 0.2037,0 -0.2037,0.2851 0,0.8556 c -0.1242,0.1133 -0.1889,0.1892 -0.2852,0.2851 l 0,0.4889 c 0.096,-0.046 0.1848,-0.06 0.2852,-0.1222 l 0,0.7333 -0.2852,0.2444 0,8.5552 0.6111,2.2406 0.082,0.5704 c -0.028,0.081 -0.061,0.1677 -0.082,0.2444 0.066,0.049 0.108,0.1082 0.163,0.1629 l 0,0.163 -0.2445,-0.082 c -0.024,-0.01 -0.057,-10e-4 -0.082,0 0.036,-0.1266 0.062,-0.2569 0.1222,-0.3666 l -0.1629,-0.6111 -0.4074,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8555 c -0.09,0.2617 -0.1903,0.5021 -0.2852,0.6925 l 0,0.9778 0.2444,0.082 -0.041,0.1629 -0.2037,-0.082 0,11.1217 0.163,-1.1814 0.1222,0.041 0,1.0185 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2445,0.3667 l -0.2036,-0.2445 -0.082,0 -0.163,-0.6518 0,0.5703 -0.041,0 -0.2444,0.1223 0,0.8962 0.2851,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1222 0,0.2444 -0.3667,0 0,0.8555 -0.2851,0.082 0,0.2037 0.2851,-0.082 0,0.082 c 0.4141,10e-5 0.5704,-0.1421 0.5704,-0.4481 l -0.2037,-0.2037 0.5296,0 -0.12221,0.082 -0.082,0.2444 0.1222,0 0,0.082 0.2037,0.2445 0,0.2851 -1.0185,0 0,0.2445 3.3813,0 c 0.2347,-0.6384 0.527,-0.9778 0.937,-0.9778 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.24451,-0.3259 0.082,-0.2444 -0.2444,0.082 -0.6518,0 -0.32591,0.1222 0,-0.041 -0.3667,-0.082 -0.28521,0.2037 -0.44809,-0.2037 0,-0.2444 1.05921,0 0,-0.2037 -0.20371,-0.2037 0,-0.2444 0.48889,0.1629 -0.082,0.2037 0.57029,0.1222 0.28521,-0.041 0.61109,0.2037 -0.082,0.2445 0.2852,0.082 0.5703,-0.041 0.65179,0.2444 0,0.2037 c -0.3219,0 -0.81629,0.3865 -1.38509,1.1814 l 18.5769,0 c 0.082,-0.08 0.16341,-0.163 0.24451,-0.2444 0.212,0.076 0.504,0.1649 0.73329,0.2444 l 1.4666,0 -0.2445,-0.4074 1.1407,0.082 0.20371,0.082 -0.041,0.163 -0.52958,0.082 0.73329,0 7.86261,0 0.041,-0.163 c 0.061,0.031 0.13559,0.056 0.2037,0.082 l -0.041,0.082 1.30359,0 0.36671,-0.2444 -0.041,0.2444 2.5665,0 0.082,-0.2444 0.2445,0.041 -0.082,0.2037 0.44809,0 0,-1.3444 -0.082,0.2444 -0.24441,-0.041 0.12221,-0.4074 0.20371,0.082 0,-9.044 -0.12221,-0.041 0.12221,-0.5703 0,-1.7111 -0.28522,0.082 -0.041,0.2037 0.2037,0.3259 -0.61109,1.1 -0.20371,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0593 -0.6518,2.3628 -0.5703,0.2852 1.18141,-4.3998 0.36671,0.5703 0,-1.3443 -0.163,-0.041 0.163,-0.5704 0,-1.8332 c -0.25982,-0.3921 -0.52391,-0.7828 -0.8148,-1.1407 l 0.8148,0.041 0,-1.2222 -0.20371,0.8555 -0.24451,-0.082 0.32592,-1.1814 0.1223,0.041 0,-3.5443 -0.082,0.2852 -0.44821,-0.1222 0.52959,-2.037 0,-7.9848 -0.041,0.1222 -0.8147,0 -0.6519,-0.3666 -0.8147,0 0.041,-0.2037 -0.326,-0.5296 0.082,-0.2852 0.2037,0.041 0.8556,0.774 0.28511,-0.1629 0.082,-0.2852 c -0.3162,-0.3875 -1.75491,-1.0888 -4.31831,-2.0777 l -1.0999,0 2.811,1.1815 -0.1223,0.4073 0.28521,-0.1629 0.69259,0.2037 -0.48888,0.8148 -0.20371,-0.041 -0.16291,-0.2852 -0.2445,-0.041 -0.36659,0.1222 0.12221,-0.4074 0.36658,-0.1629 0,-0.041 -0.2444,-0.2852 -0.2444,-0.082 -0.2852,0.2037 -0.2444,-0.041 -0.6926,-0.4889 -0.5703,0.3667 -1.5481,-1.2629 -1.8333,0 -0.082,0.3259 -0.2444,-0.041 0.082,-0.2852 -3.2998,0 1.0184,1.5481 0.2037,0.041 -0.1629,0.6925 -0.4482,-0.1222 -0.082,0.2037 c 0.3277,0.088 0.5625,0.5585 0.6926,1.3851 l -0.1629,0.6926 -0.2445,-0.082 0.1222,-0.4481 -0.7333,-0.2037 -0.1629,0.4481 0.4888,0.1222 -0.2444,0.8963 -0.4889,-0.1222 -0.2036,0.937 0.4481,0.1222 -0.1222,0.4074 -0.4482,-0.1223 -0.1222,0.4074 0.4481,0.1222 -0.1629,0.6926 c -0.4097,-0.1095 -0.6971,0.1232 -0.937,0.6926 -0.022,0.084 -0.038,0.1751 -0.041,0.2444 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.09 -0.01,-0.1889 0,-0.2852 l 0.2037,0 0,-0.2037 -0.163,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.2037 l 0.5296,0.1629 0.163,-0.6518 -0.4074,-0.6111 0.937,-1.3851 -0.2037,-0.041 0.2852,-0.1629 0.082,-0.2852 -0.2037,-1.4666 0.6518,-0.2444 -0.2444,-0.082 0.4481,-0.6111 c 0.1537,-1.0675 -0.199,-1.6848 -1.0592,-1.9148 l 0.2851,-0.1629 0.082,-0.2444 -1.5888,0 0,0.082 0.6926,0.1629 -0.937,0.7333 c 0.085,-0.3163 0.049,-0.6402 -0.041,-0.9777 l -1.5888,0 -0.2037,0.6925 -0.2445,-0.041 0.163,-0.6518 -0.937,0 0.2444,0.4889 -0.082,0.4481 -0.3666,-0.5703 0.082,-0.3667 -0.4481,0 -0.8555,3.0962 c -0.097,-0.045 -0.1796,-0.077 -0.2852,-0.1222 l -0.041,0 -0.163,-0.2445 0.2852,-0.1222 0.082,-1.1814 0.3666,-1.4259 -0.4888,0 -0.6111,2.3629 -0.2444,0 0.611,-2.3629 -2.6072,0 -0.041,0.163 0.4481,0.1222 -0.2852,1.0592 c -0.9988,-0.3794 -1.8221,-0.6518 -2.4443,-0.6518 -0.1476,0.3742 -0.4355,0.625 -0.7741,0.774 -0.016,-0.069 -0.022,-0.1337 -0.041,-0.2037 l -0.041,-0.2037 0.5704,-0.082 0,-0.2851 c 0,-0.2009 -0.2546,-0.367 -0.774,-0.4889 l -0.041,-0.2037 -0.9778,0 c 10e-4,0.014 0,0.027 0,0.041 l 0,0.2444 c -0.2787,-0.1373 -0.624,-0.216 -1.0185,-0.2852 l -1.711,0 0,0.163 -0.2444,0.082 -0.081,-0.2444 -0.5296,0 0.041,0.1222 -0.163,0.1629 -0.082,-0.2851 -2.7295,0 -0.2037,0.9777 -0.3259,0 0,-0.4889 c 0.085,-0.1761 0.1553,-0.3574 0.2037,-0.4888 l -2.4036,0 z m 36.2576,12.8328 0,-0.937 -0.041,0.041 -0.1629,0.6111 0.2037,0.2851 z m -34.3428,-12.7513 -0.2852,0.4481 -0.4889,0.082 0.082,-0.2851 0,-0.1222 0.6926,-0.1223 z m 13.4845,0.041 0.4482,0.1222 -0.041,0.2445 -0.4482,-0.1223 0.041,-0.2444 z m -16.2955,0.3667 0,0.4888 -0.4481,0 0.4481,-0.4888 z m 7.8218,0 0.082,0.041 0.2037,0.8962 c -0.2224,-0.02 -0.4372,-0.045 -0.611,-0.082 l 0.2036,-0.6518 -0.041,-0.163 0.163,-0.041 z m 1.4666,0 0.4074,0.4888 -0.4074,0 0,-0.4888 z m -2.5665,0.1629 0.082,0.2852 -0.1222,0.041 c -0.071,-0.079 -0.082,-0.1896 -0.082,-0.2852 l 0.1222,-0.041 z m -6.1516,0.041 0.4482,0 0,0.2852 -0.4482,0 0,-0.2852 z m 5.2146,0 0.2037,0 0,0.2852 -0.2037,0 0,-0.2852 z m -2.9739,0.2852 c 0,0 0.038,0 0.041,0 l 0,0.2444 -0.163,0 c 0.038,-0.069 0.088,-0.1795 0.1222,-0.2444 z m 13.0364,0 0.2037,0.082 -0.163,0.6518 -0.3259,-0.5703 0.2852,-0.163 z m 11.8143,0.041 0.4481,0.1222 -0.1222,0.4889 -0.4889,-0.1222 0.163,-0.4889 z m -5.8257,0.1629 0.2444,0.041 -0.1629,1.5889 -0.2852,0.1629 -0.1222,0.4889 -0.5296,2.5258 -0.6518,-0.6518 1.0999,-2.6481 -0.2444,-0.2851 0.082,-0.2037 0.5703,-1.0185 z m 0.9777,0.041 0.5704,0.1223 -0.2852,0.1629 -0.082,0.2037 -0.774,3.8702 -0.2852,0.163 -0.082,1.1406 -0.2037,0.7741 -0.5703,0 0.1629,-0.5704 c 0.2449,-0.096 0.4481,-0.2128 0.4481,-0.3666 l -0.2851,-0.2852 1.3851,-5.2146 z m -17.7214,0.2037 0.2445,0 0.041,0.163 -0.082,0.041 -0.1222,0 -0.082,-0.2037 z m 14.5438,0.1223 0.2037,0.041 -0.082,0.4481 -0.2444,-0.082 0.1222,-0.4074 z m 12.6291,0.041 0.2037,0.082 -0.082,0.4073 -0.2445,-0.082 0.1222,-0.4073 z m -29.8209,0.041 0.6518,0 0,0.2036 -0.6518,0 0,-0.2036 z m -2.0777,0.2036 1.0592,0 c -0.029,0.098 -0.082,0.1887 -0.1222,0.2852 l -0.937,0 0,-0.2852 z m 11.855,0 0,0.5297 -0.4888,0 0.4888,-0.5297 z m 24.3619,0.163 c -0.074,0.2764 0.1417,0.5131 0.5703,0.6518 l 0,-0.5296 -0.5703,-0.1222 z m -6.0701,0.3259 0.4481,0.1222 -0.3666,1.3037 -0.4482,-0.1222 0,-1.1815 0.3667,-0.1222 z m -17.0696,0.4481 0,0.4889 -0.2037,0 -1.6703,0.2444 c 0.035,-0.1863 0.075,-0.3749 0.082,-0.5703 l 1.7925,-0.163 z m 0.3667,0 0.6518,0.2037 0,0.2852 -0.8555,0 0.2037,-0.2852 0,-0.2037 z m 1.0184,0 0.041,0 0.2852,0.4482 -0.041,0.041 -0.2852,0 0,-0.4889 z m 1.8333,0 -0.082,0.326 -0.2852,0.041 0.1222,-0.326 c 0.073,-0.01 0.1596,-0.036 0.2444,-0.041 z m 10.2662,0 0.6518,0.3667 -0.082,0.2037 -0.4481,0.8555 c -0.076,0.6131 0.1199,0.9905 0.5296,1.1 l -0.1222,0.4073 -0.5296,-0.1222 -0.082,0.2852 0.2444,0.2852 -0.3667,0.1222 0.041,1.1814 -0.4888,1.7925 -0.5296,-0.1222 -0.4074,-1.3036 0.1222,-0.4889 0.2444,0.041 -0.1222,0.4889 0.4481,0.1222 0.041,-0.2037 -0.2851,-0.8148 0.2851,-0.1222 c 0.1186,-0.4435 -0.079,-0.7649 -0.5703,-0.8963 l 0.6518,-0.2851 -0.1222,0.4074 0.4889,0.1222 0.3666,-3.2184 0.041,-0.2037 z m -20.4917,0.1223 0.2445,0.041 0.1222,0.4888 -0.3259,-0.082 0,-0.3666 -0.041,-0.082 z m -7.7404,0.082 0.4482,0 -0.4482,0.5296 0,-0.5296 z m 1.3037,0 0.8148,0 c -0.013,0.016 -0.028,0.025 -0.041,0.041 -0.2573,0.2054 -0.343,0.304 -0.5704,0.4888 l -0.2037,-0.2444 0,-0.2852 z m 1.3036,0 0.3667,0 0.4074,0 0,0.2037 -0.082,-0.082 -0.4889,0.1222 0,0.2444 -0.082,0.041 -0.2037,-0.2444 -0.082,0 0.1629,-0.2852 z m 1.1407,0 0.6111,0 -0.041,0.2851 -0.5703,0 0,-0.2851 z m 7.2923,0 0.6518,0 -0.082,0.2444 0.1222,0.4481 -0.2852,0.041 -0.4073,-0.6518 0,-0.082 z m 1.2629,0 0.2037,0 0.082,0.2444 -0.2037,0.041 -0.082,-0.2852 z m 21.1434,0 0.8148,0 0.2445,0.041 -0.082,0.2036 -1.1,0.163 0.1222,-0.4074 z m -12.9142,0.082 0.2037,0.082 -0.082,0.4073 -0.2444,-0.082 0.1222,-0.4073 z m 5.2553,0 -0.082,0.2036 0.4889,0.1223 0.041,-0.2037 -0.4481,-0.1222 z m 10.144,0.3666 0.4889,0.1222 0.4074,0.5704 -0.6518,0.3259 0.2851,0.082 -0.6111,1.0184 c -0.3276,-0.088 -0.3629,-0.3713 -0.2444,-0.8147 l 0.2852,-0.163 0.041,-0.2037 0,-0.937 z m -1.3851,0.2852 0.2444,0.081 0.041,0.7333 -0.4481,-0.1222 0.163,-0.6926 z m -25.5025,0.041 0,0.4074 -0.2852,0 -0.082,-0.3259 0.3666,-0.082 z m 23.9137,0.041 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4482 z m -24.7285,0.082 0.082,0.2851 -0.2444,0 0,-0.2444 0.1629,-0.041 z m -8.2293,0.041 1.0185,0 c -0.101,0.084 -0.1917,0.1658 -0.2852,0.2444 l -0.7333,0 0,-0.2444 z m 2.0777,0 0.4481,0 0,0.2444 -0.611,0 0.1629,-0.2444 z m 7.8626,0 0,0.2444 -0.2037,0 -0.041,-0.163 0.2445,-0.082 z m 3.748,0 0.4074,0 0,0.2444 -0.4074,0 0,-0.2444 z m 1.0592,0 0.8148,0 0,0.2444 -0.8148,0 0,-0.2444 z m 22.3656,0.041 0.4482,0.1222 0.2851,0.2852 0.081,-0.4074 0.2445,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1629,0.2852 -0.1222,0.4888 c -0.3277,-0.088 -0.616,0.1421 -0.774,0.7333 l -0.3667,-0.611 0.3667,-1.3037 z m -31.0022,0.041 0.2851,0.2037 -0.2037,0.082 -0.082,-0.2852 z m -4.7257,0.082 0.041,0.082 -0.1223,0 c 0.027,-0.031 0.054,-0.05 0.082,-0.082 z m 31.98,0.041 0.5296,0.1629 -0.041,0.2037 -0.5296,-0.1222 0.041,-0.2444 z m -20.4917,0.041 0.3667,0 0,0.2851 -0.3667,0 0,-0.2851 z m 3.5443,0 0.2037,0 c 0.2933,0.1 0.5027,0.2543 0.6518,0.4888 l -0.082,0.1223 c 0.049,0.098 0.1129,0.1884 0.163,0.2851 l -0.3667,0 0,0.2445 0.5296,0.082 c 0.074,0.1378 0.168,0.2723 0.2445,0.4074 l -1.7925,0 0,-0.2037 c 0.5521,10e-5 0.8147,-0.2236 0.8147,-0.5296 l -0.3666,-0.4074 0,-0.4889 z m -9.2885,0.041 0.1223,0.4481 -0.2037,0.041 -0.082,-0.3259 0.1629,-0.163 z m -3.5035,0.082 0.082,0.4481 -0.4481,0.1222 -0.041,-0.1629 0.3259,-0.041 0,-0.326 0.082,-0.041 z m 1.6296,0.041 c 0.2851,1.0667 0.7124,1.5431 1.3036,1.3851 l 0.082,0.163 -0.163,0.2444 -0.2444,-0.1222 c -0.5964,0.7308 -0.8708,1.4517 -0.6926,2.1184 l -0.8555,-0.6518 0.6111,-0.163 -0.1222,-0.4074 c -0.3695,0.099 -0.5984,-0.098 -0.8148,-0.6111 l 0.9777,-0.7333 -0.4481,-0.9369 -0.041,-0.163 0.4074,-0.1222 z m 23.5878,0.2444 0.4481,0.1222 -0.082,0.2445 -0.4481,-0.1223 0.082,-0.2444 z m -14.9512,0.082 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.082 -0.041,0.163 -0.2037,-0.041 0.2444,-0.2037 z m -10.5514,0.041 c 0.1566,0.1293 0.3291,0.2464 0.5704,0.3667 l 0,-0.163 0.082,0.3667 0,0.082 -0.4482,0.1222 -0.2037,-0.7741 z m 23.2212,0.041 0.4481,0.1222 0,0.9778 -0.2852,0.1222 -0.041,0.2037 -0.1629,1.4666 -0.4074,0.5703 0.2037,0.2445 -0.3259,0.2036 0.3666,0.5704 -0.2852,0.1222 -0.2444,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4481,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.057 0.041,0.082 l -0.1222,0.082 0.1629,0.041 c 0.083,0.2038 0.1422,0.4408 0.163,0.6925 l -0.041,0.2037 -0.163,-0.2444 -0.2852,-0.082 -0.041,0.041 0.2445,-1.5481 0.774,-2.8517 0.4481,-0.8148 -0.2851,-1.0592 0.52959,0.163 0.32591,-2.0777 z m -28.4358,0.041 -0.041,0.4481 -0.2851,0.082 -0.2852,-0.1629 -0.2037,0.081 0.3667,0.4889 -0.4889,0.611 -0.3259,-0.4888 c 0.071,-0.017 0.1278,-0.041 0.2037,-0.041 l 0,-0.4889 -0.163,0 -0.2037,0.2852 -0.2037,0 0.3667,-0.6111 1.2629,-0.2037 z m 4.8072,0 0.163,0.6518 -0.2037,0.041 -0.2037,-0.611 0.2444,-0.082 z m -7.0885,0.2852 0.2037,0 0,0.2852 -0.2037,0.2444 -0.2445,0 0,-0.3259 c 0.078,-0.065 0.1634,-0.1301 0.2445,-0.2037 z m 32.5911,0.4074 1.5073,1.3444 -0.1222,0.4481 -0.5296,-0.163 -0.4889,1.7925 -0.2037,-0.041 0.4074,-2.485 -0.2852,0.1222 -0.3259,-0.082 0.041,-0.937 z m 4.4812,0 0.7741,0 -0.1222,0.4074 -0.6926,-0.2037 0.041,-0.2037 z m -27.4172,0.1222 0.041,0 0.2037,0.2037 -0.163,0.041 -0.082,-0.2444 z m 3.422,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.1629 c -0.014,0.06 -0.024,0.099 -0.041,0.163 l 0.4074,0.1222 c -0.1395,0.1292 -0.3455,0.163 -0.6518,0.163 l -0.2037,0 0,-0.2037 0.4888,-0.2445 z m -4.6442,0.041 0.6518,0.2037 0,0.4482 c -0.414,0 -0.6518,0.1829 -0.6518,0.4888 l -0.163,0 c 0,-0.4589 -0.1313,-0.7332 -0.4074,-0.7333 l 0,-0.2037 0.5704,-0.2037 z m 11.4476,0.041 0.3259,0.6111 -0.041,0.2037 -0.3259,-0.6111 0.041,-0.2037 z m -18.0881,0.041 0.5704,0.2852 0.6518,2.3629 0,0.082 -0.3667,-0.5296 -0.2037,0 0.5704,0.8555 0.041,0.6518 0.2852,0.1222 -0.3667,0.5704 -1.1814,-4.3998 z m 15.4401,0 0.2444,0.041 -0.2852,1.1 -0.2444,-0.041 0.2852,-1.1 z m -7.0886,0.1223 0.5703,0.2037 0,0.2444 -0.774,0 0.2037,-0.2444 0,-0.2037 z m -9.2885,0.2037 0.4889,0.4888 0.041,0.163 -0.4889,0.1222 -0.1629,-0.6518 0.1222,-0.1222 z m 1.9962,0.1222 0.3259,0.3259 0,0.082 0.082,0.041 0.2037,0.2444 -0.1629,0.163 0.6518,2.3628 -0.2852,-0.1629 -0.8147,-3.0554 z m -7.8218,0.082 0.082,0.3666 -0.2037,0.041 -0.082,-0.3666 0.2037,-0.041 z m 2.4443,0.2037 -0.082,0.611 0.082,0.2445 0.2444,0.1629 c -0.7759,0.2075 -1.0756,0.7481 -0.937,1.7111 l 0.3667,0.5703 -0.2037,0.041 0.5703,0.2444 -0.1629,1.3037 0.082,0.2852 0.2444,0.1222 -0.2037,0.041 0.5704,0.8555 c -0.141,0.1125 -0.2864,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4073,-0.1223 -0.2036,-0.8147 -0.4482,0.1222 -0.2037,-0.8148 0.4074,-0.1222 -0.1222,-0.4481 -0.6518,0.2036 0.082,0.4482 -0.2037,0.041 -0.163,-0.6111 c 0.1174,-0.7457 0.3563,-1.1839 0.6519,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.163,-0.6111 0.2037,-0.041 1.3444,-2.0369 z m 31.3282,0.2037 0.2444,0.041 0.2445,0.2851 0.2851,-0.1222 0.6926,0.163 0.4481,2.2813 -0.041,0.2037 0.2852,0.082 0.2852,-0.1222 0.2444,0.041 -0.6926,2.6481 c -0.6158,-0.323 -0.8481,-0.9057 -0.611,-1.7926 l -0.2037,-0.082 0.2851,-0.1222 0.1223,-0.4888 0.082,-1.1815 -0.5704,-0.1222 -0.6925,2.6888 0.2444,0.2852 -0.3667,0.1222 -0.041,0.2037 0.2037,2.1999 -0.8147,0 c -0.1161,0.5673 -0.1894,1.0843 -0.2445,1.5073 -0.1694,0.1076 -0.2849,0.3972 -0.4074,0.8555 l -0.3259,0.1222 -0.4481,-0.1222 -0.163,-0.937 0.5704,-0.4888 0,-0.1223 c 0.055,0.088 0.1486,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2036 0.2444,-1.874 0.3666,-0.5296 0.7333,-3.6258 0.2445,-0.8963 -0.4482,-0.1222 -0.3666,1.3444 -0.3667,0.1222 0.2445,0.2852 -0.1222,0.4889 -0.5296,-0.163 0.8147,-3.0961 z m -9.207,0.1222 0.2037,0.041 -0.2444,0.8962 -0.2852,0.163 -0.2037,-0.082 0.5296,-1.0185 z m 6.0701,0 0.2037,0.041 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -24.9729,0.082 0.2037,0.8148 -0.2037,0.041 -0.2445,-0.7741 0.2445,-0.082 z m -6.7219,0.041 0.041,0 0.1222,0.4481 -0.2037,0.041 -0.041,-0.1222 c 0.028,-0.1061 0.05,-0.2304 0.082,-0.3259 0,-0.013 0,-0.028 0,-0.041 z m 34.2614,0.041 0.2444,0.041 -0.2037,0.6925 -0.2037,-0.041 0.163,-0.6925 z m -26.5618,0.041 0.1222,0.4481 -0.3259,0.4889 -0.082,-0.3667 0.2852,-0.5703 z m 13.892,0.082 0,0.041 -0.3259,0.2037 -0.2037,-0.041 c 0.011,-0.041 -0.01,-0.084 0,-0.1222 0.1891,-0.018 0.3782,-0.056 0.5296,-0.082 z m -11.7328,0.2444 0.1222,0.1222 -0.2037,0.082 -0.041,-0.1629 0.1222,-0.041 z m 27.1321,0.1222 0.774,0.2037 -0.041,0.2445 -0.774,-0.2037 0.041,-0.2445 z m -8.7182,0.041 0.5704,0.163 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2445 z m -15.4807,0.041 0,0.6111 0.4481,0 c 0,0.3379 0.036,0.6266 0.1222,0.8148 -0.2101,0.043 -0.4005,0.095 -0.5703,0.1629 l 0,-0.041 -0.3667,-0.4073 -0.6518,0.2036 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2444,-0.8963 1.3443,-0.1629 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.6518 c 0.3992,-0.2211 0.701,-0.4734 0.8148,-0.774 0.071,0.093 0.1312,0.1937 0.2037,0.2852 l -0.3667,0.041 0,0.4481 0.4074,0 0.2445,0.2852 0.1629,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2852,0.326 l 0.041,0.1629 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2445,0.1222 -0.081,0.163 -0.6518,-0.1223 c -0.065,-0.1287 -0.1069,-0.2443 -0.1222,-0.3666 l 0.3259,0 0.3666,0.082 0.041,-0.2037 -0.2851,-0.5296 c -0.2712,-0.072 -0.5058,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.163 c -0.064,0 -0.1437,-0.01 -0.2037,0 l -0.5296,-0.6111 -1.0592,0.2037 -0.7741,-0.2037 -0.4481,0.4481 -0.163,-0.2444 0,-0.2037 c 0.2416,0 0.4327,0.016 0.6111,0 0.5354,-0.049 0.7741,-0.1779 0.7741,-0.4074 z m 16.2956,0 0.2444,0.082 -0.2444,0.8963 -0.2445,-0.082 0.2445,-0.8963 z m -19.9621,0.4074 0,0.4481 0.4074,0 0,-0.4481 -0.4074,0 z m -1.548,0.082 0.2444,0.2852 -0.2037,0.3666 -0.163,-0.5296 0,-0.082 0.1223,-0.041 z m -10.5107,0.1222 0.041,0.3259 -0.1629,0.041 0.1222,-0.3666 z m 21.8361,0 0.1629,0 0,0.2445 -0.1629,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.774,1.8333 -0.5296,0.3259 -0.2852,-1.5073 -0.1222,-0.4482 -0.2444,-0.1222 -0.163,-1.4258 0.2037,-0.041 z m -0.8963,0.041 1.1407,4.2369 -0.3259,-0.082 0,-0.082 -0.2852,-0.163 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4888,-0.1222 z m 19.8806,0.082 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2233,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.981,0.2445 0.2444,0.041 -0.1629,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8137,0.082 0.3666,0 c -0.096,0.1753 -0.2074,0.2729 -0.3666,0.2852 l 0,-0.2852 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7257,0.082 0.3259,0.6111 -0.1222,0.4073 -0.4481,-0.1222 0.2444,-0.8962 z m 1.0185,0.2851 0.2037,0.041 c -0.079,0.2957 0.1603,0.5612 0.6518,0.6926 l -0.2444,0.8963 c -0.1374,-0.1603 -0.2848,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4482,-0.1222 0.2445,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4482 -0.1629,-0.082 0.082,-0.4074 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.065 -0.1747,-0.1266 -0.2444,-0.2037 z m -7.4144,0.1223 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1223,-0.041 0.163,-0.081 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.611,0.2444 c -0.4434,0.1186 -0.6364,0.4148 -0.5296,0.8148 l 0.2445,0.1222 -0.2445,0.7333 0.041,0.2037 0.4482,-0.1222 -0.1223,-0.4481 0.2037,-0.041 0.1223,0.4481 -0.3667,1.1407 -0.3666,-0.082 c -0.056,0.071 -0.069,0.1343 -0.1223,0.2037 l -0.4481,-1.5888 0.041,-1.1 -0.3259,-0.081 0.2037,-0.2851 -0.041,-0.2445 -0.4889,0.1222 -0.082,-0.1629 0,-0.082 0,-0.163 c 0.3324,-0.117 0.5134,-0.4115 0.4482,-0.937 l -0.4482,-0.774 -0.041,-0.163 0.5704,-0.3666 z m 31.1652,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1222,0.3666 -0.2037,0.041 -0.1222,-0.3666 0.2037,-0.041 z m 8.5144,0.041 0.2037,0.082 -0.2444,0 0.041,-0.082 z m 16.9067,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.1629,-0.6926 0.4482,0.5704 -0.5704,0.8148 -0.1629,1.8739 -0.4482,0.5297 -0.2444,-0.041 c 0.5137,-1.9216 0.411,-2.921 -0.2444,-3.0962 l 0.2037,-0.6926 z m -20.0436,0.082 0.2037,0 -0.1222,0.4481 -0.1629,0 0,-0.2037 0.082,-0.2444 z m 1.7926,0 0.2037,0 c 0.1368,0.1613 0.1865,0.3854 0.1629,0.6518 l -0.1222,0 -0.2444,-0.6518 z m -2.5666,0.1222 0.2037,0.3667 -0.2852,-0.082 0.082,-0.2852 z m 12.5476,0.163 0.2444,0.082 0.2852,0.2037 -0.163,0.2444 c -0.1007,-0.099 -0.2133,-0.1792 -0.3259,-0.2444 l -0.041,-0.2852 z m -7.1701,0.1629 0.2852,0 c 0,0.072 0.024,0.1466 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1222 -0.3259,0 -0.082,-0.1222 z m -6.7219,0.1222 0.2037,0.082 -0.082,1.2222 -0.082,0.2037 -0.2037,-0.082 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2852 z m 14.6253,0.041 0.3259,0.082 -0.163,0.6519 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3586,0.041 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.163 0.1222,0 0.1223,0.1629 0.082,0.2852 -0.3259,-0.4074 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.1629,0 0.041,-0.2037 z m -5.2553,0.1629 -0.041,0.2445 c -0.1412,0.6766 -0.1364,1.0308 0.1222,1.0999 l -0.2444,0.2037 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.163,-0.5703 0.4482,-0.081 c -0.206,-0.7706 -0.1475,-1.243 0.1222,-1.3444 z m 1.874,0 0.041,0.1223 0.082,-0.082 0.163,0.6518 0,0.1222 -0.4889,0.7333 0.2852,0.082 -0.3259,0.1222 -0.082,0.2445 0.2444,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8555 -0.6518,1.3037 0.2444,0.2852 -0.4888,-0.163 0.3666,-1.3444 -1.1814,0.7333 0.2444,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6925 c 0.08,-0.4994 0.011,-0.798 -0.2037,-0.8555 l 0.2852,-0.1629 0.041,-0.2037 0.2037,-1.3037 c 0.1374,-0.1299 0.2764,-0.2714 0.4074,-0.4074 l 0.4481,0.326 c -0.053,-0.2116 -0.1577,-0.3754 -0.2444,-0.5296 0.051,-0.055 0.1128,-0.1065 0.1629,-0.163 l 0.2445,0.041 0.082,-0.3667 0.3666,-0.1629 -0.1629,-0.163 c 0.072,-0.092 0.1339,-0.1912 0.2036,-0.2851 l 0.7333,0.041 0.163,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.1351,-0.2161 0.2037,-0.3259 l 0.2852,0.082 0.2852,-1.0593 c 0.1084,-0.1999 0.2226,-0.4049 0.3259,-0.611 l -0.1223,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4889,0 c 0.012,-0.071 0.03,-0.1354 0.041,-0.2037 l 0.2445,-0.2444 z m -22.1619,0.041 0.082,0.2852 -0.082,0 0,-0.2852 z m 30.4319,0.2037 0.4889,0.1223 -0.4074,0.9369 c -0.091,-0.1361 -0.2088,-0.2648 -0.3667,-0.3666 l 0.2852,-0.6926 z m -10.8773,0.163 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9778,0.041 0.4073,0.1222 -0.041,0.163 -0.2037,0.041 -0.1629,-0.2852 c 0.01,0 -0.01,-0.038 0,-0.041 z m -8.3923,0.3259 0.4074,0.082 -0.1629,0.6518 -0.2852,-0.5703 0.041,-0.163 z m 23.9138,0.041 c 0.4519,0.2792 0.6049,0.7683 0.4074,1.5073 l -0.5297,1.0593 c -0.1997,1.1223 -0.2914,1.891 -0.2851,2.4035 l -0.163,-0.041 0.041,-0.774 0.1222,-0.4889 -0.3666,-0.774 0.8962,-2.1184 -0.1222,-0.7741 z m -21.8361,0.1222 0.2445,0 0,0.2037 -0.2445,0 0,-0.2037 z m 12.0995,0 0.041,0 -0.163,0.5704 c -0.02,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.9621,0.041 0.2037,0.041 0.1222,0.2444 -0.3666,-0.1222 0.041,-0.1629 z m -4.1146,0.2037 0.041,0.2037 -0.2852,0.5296 -0.041,-0.1629 0.2852,-0.5704 z m 3.6258,0 c 0.1217,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.163,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2444,0.082 -0.1222,0.4889 -0.2445,-0.082 0.1223,-0.4889 z m -25.4618,0.082 c 0.1305,0.01 0.2859,0.02 0.4481,0.041 l -0.1222,0.3667 c -0.2956,-0.079 -0.55,0.1592 -0.6926,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2132,-0.256 0.4889,-0.2852 l 0.3666,0 -0.041,-0.041 z m 14.0141,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1477,0.041 0.2851,0 -0.1222,0.5296 -0.2444,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5703,0 0,0.082 -0.3666,0.5704 0.1222,0.1629 -0.6111,-0.1629 c 0.107,-0.1606 0.1904,-0.4143 0.2852,-0.6519 z m 1.0592,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2406,0 0.4889,0 -0.1222,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.1629 0.041,0.4482 -0.163,0.041 c -0.1808,-0.2054 -0.2427,-0.4948 -0.2037,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.016,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.326,0 -0.041,0.2037 -0.2445,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4889,0.1222 -0.041,-0.5296 0.2445,-0.041 0,-0.4888 -0.2852,0.041 -0.041,-0.2445 z m -7.6996,0.082 0,0.7741 c -0.2652,-0.083 -0.4074,-0.289 -0.4074,-0.6519 0.1827,1e-4 0.3,-0.043 0.4074,-0.1222 z m 5.5405,0 0.4074,0.1222 -0.082,0.3667 -0.4482,-0.1222 0,-0.041 0.163,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6518 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2445 0,0.2851 -0.041,0.082 -0.2037,-0.041 0.041,-0.2036 0.2444,-0.3667 0.163,-0.2852 -0.4482,-0.1222 0.5704,-0.2852 z m -18.8214,0.082 c 0.092,0.016 0.1762,0.041 0.2852,0.041 l 0,0.6518 -0.2444,-0.082 -0.041,0.1223 -0.1223,0 0,0.4481 0,0.082 0.4482,0.1222 0.041,-0.2037 0.1629,0 -0.5296,0.774 -0.2444,-0.3259 -0.082,0.3667 0.2444,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.155,0.076 -0.2587,0.227 -0.2852,0.4481 l -0.041,0.1223 -0.1629,0 c 0,-0.03 0.01,-0.052 0,-0.082 l 0.082,-0.4482 -0.163,-0.041 c -0.084,-0.4331 -0.1524,-0.7924 -0.2444,-1.0592 l 0.4481,-1.6295 z m -7.2922,0.4481 c 0.2126,0.1197 0.3123,0.3225 0.2851,0.6111 l -0.2037,-0.1222 -0.082,-0.4889 z m 18.3324,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1372 -0.06,0.2832 -0.082,0.4074 -0.092,0.016 -0.1761,0.041 -0.2851,0.041 l 0,0.4889 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2852,0 0.1222,0.041 0,0.4074 -0.2037,0 0,0.2037 0.082,0.3667 c -0.1678,-0.1492 -0.2705,-0.4892 -0.2851,-1.0185 z m 25.3396,0.041 0.4481,0.1223 -0.1222,0.4073 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9355,0.041 c -0.044,0.049 -0.077,0.1097 -0.1222,0.163 l -0.041,-0.1222 0.163,-0.041 z m -0.8962,0.041 0.4481,0.937 -0.2037,0.041 -0.082,-0.041 c 0.011,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.082 -0.2037,-0.6925 0.2444,-0.041 z m 17.5177,0 0.4074,0.1223 -0.082,0.2444 -0.3667,-0.2444 0.041,-0.1223 z m 0.7333,0 0.2037,0.082 -0.1222,0.4074 -0.2037,-0.041 0.1222,-0.4481 z m 7.1293,0.082 0.082,0.1222 0.2852,0.082 0.082,-0.041 -0.2037,1.3444 -0.6926,2.5258 -0.2444,0.4889 -0.082,-0.3666 0.2037,-0.2852 -0.2037,-0.2037 -0.2445,0.082 -0.1629,-0.2852 0.2851,-0.1222 0.2037,0.041 0.041,-1.0592 0.2852,-0.9777 0.4074,0.082 0.1222,-0.5297 0.041,0 0,-0.082 c -0.1251,-0.2296 -0.1809,-0.5083 -0.2037,-0.8147 z m 3.0554,0.041 0.2444,0.082 -0.082,0.2445 0,0.041 -0.1629,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4074,0.1222 -0.1222,0.3667 -0.2852,-0.4889 z m -10.6329,0.3259 0.041,0.163 -0.1222,0.041 0,-0.163 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3667 0.2037,0.041 -0.2444,0.1222 -0.1222,0.4889 -0.163,-0.6111 0.2037,-0.4889 z m 27.4173,0 0.3666,0.082 c -0.05,0.1858 -0.025,0.3353 0,0.4482 l -0.3259,-0.082 c 0.053,-0.2001 0.019,-0.3354 -0.041,-0.4482 z m -3.9517,0.082 0.041,0 c -0.023,0.1203 -0.051,0.2388 -0.082,0.3667 l -0.041,0 0.082,-0.3667 z m -17.314,0.041 0.2037,0.041 -0.2444,0.8148 -0.2037,-0.041 0.2444,-0.8148 z m 14.7475,0.041 c 0.1067,0.099 0.2579,0.168 0.4074,0.2445 l -0.163,0.3259 -0.163,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1096,-0.09 -0.1629,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.163 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4688,0 0.3259,0.5296 -0.4481,-0.1222 0.1222,-0.4074 z m -33.2429,0.3666 0.041,0.1223 -0.1629,-0.041 0,-0.041 0.1222,-0.041 z m 6.7627,0.163 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4514,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1708,0.032 -0.2444,0.041 l 0.2444,-0.8963 0.2037,-0.041 z m 1.5888,0.1629 c 0,0.051 0,0.1084 0,0.163 -0.1404,0.1712 -0.5033,0.2872 -1.0185,0.4074 l 0.082,-0.2444 0.937,-0.326 z m 8.5959,0.1223 c 0.1067,0.1843 0.2375,0.3374 0.3667,0.4888 l 0,0.1222 0.1629,0.041 c 0.068,0.069 0.1302,0.1437 0.2037,0.2037 l -0.163,0.6519 -0.2036,-0.041 c 0.071,-0.2668 -0.1677,-0.4926 -0.6111,-0.6111 l 0.2444,-0.8555 z m 1.0185,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5812,0.041 0.4481,0.1222 -0.041,0.2037 -0.4888,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1222,0.4481 0.2445,0.8963 -0.4482,0.7333 0.3259,-0.1223 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 -0.2037,-0.2444 -0.2444,-0.082 -0.082,0.4481 -0.2444,-0.041 0.6518,-2.4036 z m -1.2222,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5704 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2036,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6926,0.163 0.082,-0.2037 -0.6926,-0.2037 z m -28.6801,0.082 c 0.026,0 0.055,0 0.082,0 -0.126,0.1796 -0.3024,0.3289 -0.5296,0.4481 l -0.041,-0.2037 c 0.1447,-0.1144 0.3061,-0.2068 0.4888,-0.2444 z m 13.3623,0.2037 c 0.1273,0.1138 0.2392,0.2232 0.2852,0.3259 l -0.2852,-0.082 0,-0.2445 z m -12.9549,0.2037 0.041,0 0.3259,0.1222 c 0.028,0.1064 0.051,0.1975 0.082,0.2851 l -0.2037,0.7741 -0.2037,-0.041 c 0.1426,-0.5334 0.011,-0.858 -0.2852,-0.937 l -0.2037,0.082 0.041,-0.163 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5666,0.041 0.082,0.2444 -0.1222,-0.041 0.041,-0.2037 z m 13.4438,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.1629,0.1629 0,-0.4888 z m 8.5552,0 0.3666,0 -0.041,0.1629 -0.4073,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0185,0 0.4074,0 0,0.2036 c -0.1952,10e-5 -0.3609,0.036 -0.4889,0.082 l 0.082,-0.2851 z m -19.4325,0.082 0.163,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8105,0.1222 0,0.5296 -0.041,0.041 -0.041,0.1629 -0.2444,0 0.2037,-0.6925 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1222 -0.2444,0 -0.2852,-0.041 -0.082,0.041 -0.2852,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2851 z m 3.0554,0.1629 -0.082,0.3667 -0.3666,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.0441,0 c 0.6944,0.3642 0.9331,1.0147 0.6925,1.9148 l -0.4888,-0.1223 -0.163,0.5296 0.3666,0.5704 -0.8555,1.2629 0.2037,0.041 -0.2444,0.1222 -0.082,0.2852 0.1629,1.3036 -0.5703,0.2445 0.2037,0.041 -0.3667,0.5703 c -0.1386,0.963 0.1611,1.5036 0.937,1.711 l -0.2444,0.163 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2037,-0.041 0.163,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.1629,-0.6111 0.2037,0.041 -0.082,0.4482 0.6926,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.2037,-0.8148 -0.4074,-0.1222 0.082,-0.3667 0.4482,0.1222 0.082,-0.3666 -0.4074,-0.1222 0.1629,-0.6111 c 0.3696,0.099 0.5984,-0.1382 0.8148,-0.6518 0.1069,-0.4 0,-0.6148 -0.4481,-0.7333 l 0.1629,-0.6111 z m -24.5248,0.041 0.4888,0.1223 -0.4074,0.5703 -0.2444,-0.082 0.163,-0.6111 z m 23.3026,0 c 0.1376,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.7029,0.082 0.6518,0 0.2037,0.2445 0.1629,0 -0.1629,0.6111 -0.6111,0 -0.2444,-0.8556 z m 5.7034,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8887,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2444,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6367,0.082 0.6519,0.3667 -0.2852,1.0185 -0.2037,-0.082 -0.2444,-0.937 0.082,-0.3667 z m 20.8991,0 0.4888,0.1223 0.3667,1.1406 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 -0.4481,-0.1222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5704,0.2444 0.082,-0.3666 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5703,-0.3259 0.082,-0.2037 0.4074,-0.774 c 0.069,-0.5531 -0.1194,-0.879 -0.4889,-0.9777 l 0.1222,-0.3667 0.4889,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4481,-1.5889 z m -18.9843,0.041 0.4074,0.1223 -0.041,0.2036 -0.4074,-0.1222 0.041,-0.2037 z m 11.2032,0 0.1629,0 c 0.066,0.059 0.1536,0.1174 0.2444,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2851,-0.5296 0,-0.041 z m -19.9621,0.041 0.3259,0.4889 -0.2444,-0.2444 -0.2037,-0.041 0.1222,-0.2037 z m 1.1,0.082 0.1629,0.041 0,0.163 -0.1629,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0837,0 c 0.044,0.1029 0.088,0.1838 0.163,0.2037 l 0.2037,0.041 0,0.4482 -1.7111,6.3552 -0.4888,-0.1222 0.2851,-0.1222 0.041,-0.2037 0.6926,-3.4628 0.2852,-0.1222 0.041,-1.0592 0.4888,-1.9555 z m 1.0185,0 0.2037,0.041 -0.2037,0.6519 -0.2037,-0.082 0.1629,-0.5704 0.041,-0.041 z m -15.6437,0.1222 0.041,0.4482 -0.1222,0.041 -0.082,-0.3259 0.1629,-0.163 z m 12.792,0 0.2037,0.041 -0.1223,0.3667 -0.2037,-0.041 0.1223,-0.3667 z m -9.5737,0.041 c 0.1347,0.034 0.3237,0.061 0.4889,0.082 l -0.1222,0.4889 -0.4481,-0.1629 0.082,-0.4074 z m -20.9805,0.326 0.4889,0.1222 -0.082,0.2037 -0.163,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5704 l -0.2037,-0.8147 0.041,-0.3259 z m 3.2999,0.041 0.4481,0.082 c -0.1069,0.3999 -0.01,0.695 0.2852,0.774 l -0.041,0.2037 c -0.4434,-0.1186 -0.7027,-0.1037 -0.7741,0.1629 l -0.2037,-0.041 -0.082,-0.611 0.3667,-0.5704 z m 16.8251,0.041 0.2852,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7697,0.1629 0.2037,0.041 -0.041,1.0592 -0.4074,-0.1222 0.2444,-0.9777 z m 20.125,0.2037 0.4481,0.163 -0.041,0.1629 -0.4889,-0.1222 0.082,-0.2037 z m 3.0961,0 0.2037,0.041 -0.4481,0.937 -0.2037,-0.041 0.2037,-0.8148 0.2444,-0.1222 z m -19.5139,0.1222 0.937,0.041 -0.1222,0.5704 -0.9777,0 0.1629,-0.6111 z m 8.5959,0.163 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.326,0 0,0.2037 -0.3667,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2851,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1326,-0.4345 0.1629,-0.6111 z m -4.3183,0.1629 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m 32.3059,0 0.2037,0.041 c -0.1069,0.4 -0.01,0.6951 0.2852,0.7741 l -1.4259,3.5035 0.2037,0.2444 -0.041,0.2037 -0.5296,0.8963 -0.2037,-0.041 0.163,-1.4259 0.2444,-0.1222 0.1222,-0.4481 0.6926,-3.4221 0.2852,-0.2037 z m -35.3613,0.1222 0.1222,0.8556 0.2037,0.1222 c -0.012,0.096 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1371 0.041,0.2036 l -0.3666,0.163 c -0.01,-0.044 -0.031,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.1629,-1.3444 z m 9.4514,0.041 0.6111,0.163 -0.041,0.2037 -0.6926,0.082 0.1223,-0.4481 z m -4.8072,0.2445 0.2037,0.082 -0.1629,0.5296 -0.2037,-0.041 0.1629,-0.5703 z m 28.9654,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9778 z m -20.4917,0.1222 0.3667,0.5296 -0.163,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.412,0.5666 -0.8555,0.4481 0.107,-0.4 -0.01,-0.6555 -0.4481,-0.7741 l 0.041,-0.2036 0.4074,0.1222 0.1629,0.2444 c 0.08,-0.3 0.4464,-0.4543 1.1,-0.5296 z m 10.8365,0.2037 0.1223,0 0,0.1222 -0.1223,-0.1222 z m 13.118,0 0.8962,0.2444 -0.4481,1.7518 c -0.2956,-0.079 -0.3768,-0.5444 -0.163,-1.3444 l -0.4481,-0.082 0.163,-0.5703 z m -6.1516,0.041 0.2852,0.5296 -0.041,0.2037 -0.2852,-0.5704 0.041,-0.1629 z m -28.558,0.082 -0.2036,1.6296 -0.8148,0.2444 0.2444,-0.8963 c 0.4491,-0.2229 0.7308,-0.5468 0.774,-0.9777 z m 0.6926,0 0.2444,0.082 -0.082,0.3666 -0.2851,-0.082 0.1222,-0.3666 z m 21.8768,0.041 0.1629,0.041 0,0.2444 -0.4074,0 0.2445,-0.2851 z m -9.5329,0.041 0.2037,0 0.1629,0.2444 -0.2851,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9664,0.2444 0.4889,0.1222 -0.082,0.2445 -0.5296,0.937 -0.163,-0.2445 -0.2036,-0.082 -0.5297,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.611,0.4482 l -0.163,-0.2445 -0.2037,-0.041 -0.2444,0.1222 0.2037,-1.6295 0.6111,0.1629 0.1222,-0.4073 c 0.739,0.1975 1.156,0.074 1.2629,-0.326 z m 2.8518,0.1222 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1222,-0.4074 z m 6.6404,0.041 0.2037,0.082 -0.082,0.4074 -0.2445,-0.041 0.1223,-0.4481 z m -9.2885,0.1223 0.2037,0.082 -0.2444,0.082 0.041,-0.163 z m -0.041,0.2851 0.163,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2066 -0.1299,0.3083 -0.3259,0.3667 l -0.5296,0.041 0,-0.163 0,-0.041 0.8555,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1749,0.1109 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.1223 -0.2037,0.8147 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.1629,-0.2444 0.1222,-0.4481 c 0.1892,0.051 0.3495,-0.044 0.4889,-0.2445 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.098,0.3379 -0.3274,0.5986 -0.6518,0.7333 l -0.1222,-0.041 0.4481,-0.774 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.1222 c 0.2001,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3667 -0.2037,-0.041 0.082,-0.3667 z m -26.8469,0.082 0.4074,0.1223 -0.1222,0.4481 -0.4074,-0.1222 0.1222,-0.4482 z m 9.7366,0.1223 0.1629,0 -0.1629,0.5703 0,-0.5703 z m -11.9773,0.1629 -0.082,0.3667 0.4074,0.1222 0.1223,-0.3667 -0.4482,-0.1222 z m 4.9702,0.041 0.6925,0.2037 -0.1222,0.3667 0.4482,0.1222 0.1629,-0.6111 0.3259,0.3666 c -0.3477,0.1724 -0.5886,0.4468 -0.7333,0.8148 -0.062,0.026 -0.089,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1402,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2037,-0.041 c 0.071,-0.1146 0.1184,-0.2814 0.163,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2445 -0.4074,-0.1223 0.082,-0.2444 z m -14.4215,0.2037 0.1222,0.041 c -0.043,2e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2444 0.4481,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.1629 z m 20.1657,0 0.163,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.163,0.2445 0.2037,0.041 c 0.1185,0.032 0.2232,0.042 0.3259,0.041 -0.1474,0.093 -0.2951,0.1253 -0.4889,0.082 l -0.2037,0.6518 c 0.3876,0.088 0.6345,0.219 0.774,0.4481 l -0.4888,0.2444 0.4074,0.082 0.082,-0.2851 c 0.1221,0.2248 0.1522,0.5026 0.041,0.8555 l 0.6518,0.1629 -0.3666,1.1 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2445,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2852,-0.326 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.7811 0.2445,-0.041 -0.2852,0.9777 0.6518,0.1222 0.4074,-1.3036 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1223 0.2852,-0.041 0.082,-0.2036 -0.2445,-0.082 0.163,-0.5704 -0.2037,-0.2852 0.082,-0.2037 0.2852,-0.082 z m 6.6812,0.041 0.2037,0.041 -0.041,0.1222 -0.163,-0.1629 z m 7.8626,0 0.041,0.163 -0.2852,-0.082 0.2444,-0.082 z m -20.0435,0.1223 0.4481,0.774 -0.3259,0.1629 -0.163,-0.041 0.041,-0.8962 z m -0.6926,0.041 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.041 0.1222,-0.4481 z m 19.8806,0.1629 -0.082,0.2444 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3852,0.1222 0.082,0.1222 0,0.2852 -0.4481,-0.1222 0.163,0 0.2037,-0.2852 z m 3.8702,0.1222 0.2445,0.082 0,0.2852 0,0.6518 0,0.1223 -0.3259,0.1222 -0.4074,-0.082 0.2851,-1.1407 0.041,0 c 0.064,-0.01 0.1028,-0.032 0.163,-0.041 z m -25.3803,0.1223 0.3667,0.4888 -0.4889,-0.1222 0.1222,-0.3666 z m 35.4021,0.041 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -11.4476,0.1222 -0.041,0.2037 -0.7741,0.081 -0.2037,-0.081 0,-0.041 1.0185,-0.163 z m 6.4367,0 -0.041,0.2037 0.4074,0.081 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3666,0.082 -0.2444,0.6926 -0.3259,-0.082 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6068,0.082 0.2037,0.041 -0.3666,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2445,-0.5703 l 0.041,-0.326 0.3667,-0.4888 z m 10.307,0.082 0.2444,0.082 -0.1222,0.4481 -0.2852,-0.041 0.163,-0.4888 z m 2.1184,0.041 0.2444,0.041 -0.082,0.2444 0.041,0.163 c -0.01,0.1969 0.032,0.3372 0.1222,0.4481 l 0,0.082 -0.1629,0 -0.4074,0.4482 -0.2037,0 0.2444,-0.8556 0.163,-0.2851 -0.041,-0.041 0.081,-0.2445 z m 1.3851,0.041 0.2444,0.2852 0,0.2852 c -0.1625,-0.1175 -0.2809,-0.2535 -0.4073,-0.3667 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2851,0.041 -0.1629,0.4889 -0.2444,-0.082 0.1222,-0.4481 z m 13.9734,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.1629 -0.2037,0 c 0.013,-0.1554 0.042,-0.3219 0.041,-0.4482 z m -16.54,0.082 -0.1222,0.3667 -0.041,1.4258 -0.65179,0.8148 0.36659,0.082 -0.44809,0.1222 -0.082,0.2445 0.2852,0.3259 -0.041,0.2037 -0.57039,0.611 0.082,0.9778 -0.8555,1.4258 0.2852,0.2852 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8555 0.2852,0.2852 -1.0185,0.4481 c -0.1112,-0.2192 -0.218,-0.4175 -0.3259,-0.6518 -0.01,-0.011 0,-0.03 0,-0.041 l 0.1222,-0.774 0.2852,0.082 0.6925,0.4481 c -0.2005,-0.6795 -0.5592,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6925 c 0.015,-0.046 0.027,-0.077 0.041,-0.1223 l 0.1223,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.1079,-0.4497 0.1629,-0.6518 l 0.163,-0.1222 0.041,-0.2037 -0.041,-0.1222 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.6111 0.2165,-0.041 0.45,-0.1549 0.6925,-0.3666 -0.087,0.5222 -0.036,0.8328 0.2445,0.8962 l -0.3259,0.2037 -0.041,0.082 c -0.1806,0.1124 -0.3752,0.2435 -0.5297,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.3259,1.6703 0.57039,0.1222 0.12221,-0.4074 0.44808,-0.2037 -0.2852,-0.2851 -0.28511,-0.082 0.082,-0.2037 1.5073,0.1222 0.2037,-0.6926 -0.52959,-0.1222 0.1222,-0.4074 0.57039,0.1222 0.3666,-1.1406 0.2444,-0.163 -0.2037,-0.041 0.4889,-1.5481 0.3259,-0.1222 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3667 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.163,0.2444 0.2037,0.082 0.3259,-0.1222 -0.041,0.163 c -0.3962,0.037 -0.7257,0.1179 -0.9778,0.2037 l -0.041,0 -0.16291,-0.041 0.28521,-0.4482 0.24441,-0.082 z m -12.01791,0.082 0.611,0.1222 -0.12221,0.4074 -0.48879,-0.5296 z m 3.9516,0.1222 0.3259,0.082 -0.041,0.163 -0.2851,0.082 0,-0.041 0,-0.2852 z m 4.80719,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8105,0.082 0.2852,0.082 -0.082,0.6111 -0.36659,0.1222 0.041,-0.4074 0.12221,-0.4074 z m 29.5765,0.041 0.2036,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1223,-0.3667 z m -7.4553,0.3259 0.40741,0.1223 -0.082,0.4481 -0.40741,-0.2445 0.082,-0.3259 z m -26.35799,0.041 0.4074,0.1223 -0.082,0.2036 -0.40741,-0.1222 0.082,-0.2037 z m 1.6703,0 0.2037,0.2445 -0.041,0.2037 -0.3259,-0.3259 0.1629,-0.1223 z m 18.16949,0.041 c 0.1619,0.088 0.2758,0.1839 0.4889,0.2852 -0.019,0.058 -0.041,0.1396 -0.041,0.2037 l -0.52959,0 c 0.031,-0.1732 0.06,-0.3361 0.082,-0.4889 z m -3.2591,0.2037 0.16301,0 0,0.041 -0.16301,-0.041 z m -12.1402,0.2037 -0.082,0.5704 -0.041,0.2444 -0.2851,-0.082 0.041,-0.6111 0.3666,-0.1222 z m -3.2998,0.082 0.2444,0.041 -0.1222,0.4889 -0.2852,-0.041 0.163,-0.4889 z m 10.7143,0.041 0.73329,0.163 0,0.082 -0.082,0.2444 -0.082,0.1222 0,0.163 0,0.041 -0.12221,0.2852 -0.082,0 -0.2037,-0.2852 c 0.017,-0.3233 -0.065,-0.5992 -0.163,-0.8148 z m 20.00279,0 c -0.17819,0.6667 0.096,1.3876 0.6925,2.1184 l 0.24451,-0.1222 0.1629,0.2445 -0.041,0.1629 c -0.2463,-0.066 -0.4957,0.012 -0.6925,0.163 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3667,0.1222 c 0.1402,-0.4439 0.062,-0.7271 -0.32591,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5135 0.4453,-0.7098 0.8148,-0.611 l 0.1222,-0.4074 -0.611,-0.163 0.8555,-0.6518 z m 2.4036,0.041 0.32591,0.4889 -0.1222,0.4481 -0.28521,-0.5703 0.082,-0.3667 z m -17.9659,0.082 0.2852,0.082 -0.1222,0.4074 -0.2444,-0.3259 0.082,-0.163 z m -14.2586,0.041 0.2852,0.041 -0.082,0.2037 c -0.1131,0.033 -0.21799,0.087 -0.3259,0.1222 l 0.1222,-0.3666 z m 15.76599,0 0.7333,0 -0.082,0.2037 -0.69259,0.082 c 0.022,-0.1067 0.02,-0.1839 0.041,-0.2852 z m -3.99239,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.67679,0 0.20371,0.041 -0.20371,0.8148 -0.2037,-0.041 0.2037,-0.8148 z m -28.4357,0.163 0.5704,0.1222 -0.2445,0.6926 -0.3666,-0.6111 0.041,-0.2037 z m 2.15921,0.041 -0.082,1.1407 0.6111,0.1629 0.082,-1.1814 -0.6111,-0.1222 z m 19.5546,0.1222 0.16301,0.041 -0.12221,0.4481 -0.2037,-0.041 0,-0.041 0.041,0 0.1222,-0.4074 z m -13.4438,0.041 0.12221,0 0.2852,0.7333 -0.1222,0.1629 -0.163,0 -0.20371,-0.611 c 0,-0.011 -0.01,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.1341 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.082,0.4889 -0.3259,0 0,-0.4889 z m 4.03319,0 0.24441,0.041 -0.041,0.1629 -0.2444,-0.082 0.041,-0.1222 z m -25.70619,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.17229,0.082 -0.041,0.163 0.041,0.041 0,-0.2037 z m -21.55089,0.041 0.082,0 0,0.3259 -0.20371,-0.041 0.12221,-0.2852 z m -10.918,0.2444 c 0.27319,-0.046 0.6794,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3876,-0.088 -0.75,0.1822 -0.937,0.7741 l -0.5704,-0.8939 c 0.053,-0.1665 0.1749,-0.2803 0.44821,-0.3259 z m 14.0956,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.77409,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.15481,0.041 0.48889,0.1222 -0.2852,1.0185 -0.3666,-0.4889 0.16291,-0.6518 z m -17.9658,0.041 0.24441,0.041 -0.28511,0.082 0.041,-0.1222 z m 10.8365,0 0.2037,0.041 -0.041,0.1222 -0.24441,0.1223 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2852 z m 9.5737,0.1222 -0.1222,0.082 -0.082,0.163 0.20361,0.2444 0,-0.4888 z m -13.8105,0.082 0.40741,0.082 -0.32591,0.4482 -0.3259,-0.082 -0.041,-0.163 0.28511,-0.2851 z m -10.4292,0.041 0.1223,0.082 0,0.2445 -0.16301,-0.041 c 0.032,-0.1025 0.017,-0.1886 0.041,-0.2852 z m 13.8513,0.041 0.611,0.5297 0.041,0.041 -0.1222,0.611 c -0.1738,-0.1301 -0.3351,-0.2838 -0.48879,-0.3666 -0.043,-0.2456 -0.071,-0.5152 -0.041,-0.8148 z m -8.5552,0.041 0.36659,0 0,0.2445 -0.36659,0 0,-0.2445 z m -16.4585,0.082 0.16291,0.041 -0.12221,0.4074 -0.2851,-0.082 0.082,-0.2851 0.1629,-0.082 z m 4.1961,0.2037 0.5296,0.1223 0,1.1814 c -0.3391,-0.077 -0.521,-0.5091 -0.5296,-1.3037 z m 1.79251,0.163 -0.24441,0.6926 0.6518,0.1629 0.2037,-0.6926 -0.61109,-0.1629 z m 3.01469,0.2444 c 0.53689,0.1214 0.591,1.2375 0.1629,3.2999 -0.149,0.2487 -0.3558,0.702 -0.57029,1.1407 l -0.5704,-0.1223 -0.52959,-1.3443 c 0.3877,0.088 0.5932,-0.086 0.73329,-0.5296 l 0.082,-1.1815 0.20371,0.2445 0.65189,0.1629 -0.163,-1.6703 z m 9.6958,0.041 0.1222,0.1222 -0.24441,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1222 0.2445,0.2444 0.3666,-0.4481 z m 5.3776,0 c 0,0.306 -0.1563,0.4482 -0.5704,0.4482 l 0,0.2036 0.40741,0 -0.36659,0.6519 -0.40741,-0.082 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.40741,-0.774 c 0.1595,-0.01 0.3126,-0.041 0.4888,-0.041 z m -13.4439,0.041 0.2852,0.041 -0.44809,1.2629 -0.082,0.3259 c 0.198,0.081 0.36659,0.1667 0.52959,0.2445 l -0.2444,0.4481 -0.1223,-0.2037 -0.3259,0.163 -0.24441,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.163,-0.4889 0.041,0.041 0.2851,0 0.16301,-1.3036 z m -8.1885,0.082 0.5704,0.1222 -0.163,0.4074 -0.40741,-0.5296 z m 13.1587,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.359,0 0.32591,0 c -0.046,0.2543 -0.075,0.4487 -0.082,0.6518 l -0.611,0 0.082,-0.5703 0.2851,-0.082 z m -3.13689,0.082 0.082,0.4889 c -0.2042,-0.1068 -0.34879,-0.235 -0.44809,-0.4074 l 0.3667,-0.082 z m -1.75171,0.082 -0.1222,0.4889 -0.163,0 0,-0.4074 0.2852,-0.082 z m 18.00661,0.041 0.2036,0.041 -0.1629,0.6518 -0.2037,-0.082 0.163,-0.611 z m 0.6518,0 0.48879,0.1222 -0.40729,1.4666 -0.16301,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2444,0.041 l 0,-0.3666 0.32591,-1.2222 z m -21.22501,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.13431,0.08 0.20371,0.1223 l -0.24451,0.041 0.041,-0.163 z m -12.181,0.082 0.2852,0.041 -0.2852,0.8963 -0.28511,-0.041 0.28511,-0.8963 z m 1.7926,0.163 -0.1223,0.4481 0.6111,0.1222 -0.4888,-0.5703 z m 19.5954,0 c 0.045,0.041 0.155,0.1195 0.20361,0.163 l -0.082,0.5296 -0.8962,2.8517 -0.5704,0.8148 0.36671,1.0592 -0.6518,-0.163 -0.36671,2.0777 -0.52959,-0.1222 0,-0.9777 0.32591,-0.1223 0.082,-0.2037 0.163,-1.4666 0.48889,-0.5703 -0.1223,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.40741,-0.5704 0.36671,-0.1222 0.2444,0.041 0.082,-1.1407 0.3667,-1.1407 0.5296,0.1222 0.1629,-0.611 z m 1.2629,0.082 0.1222,0.163 -0.163,-0.041 0.041,-0.1223 z m 1.8332,0.1222 0.082,1.6296 0.48889,0.1222 0.20371,-0.2037 -0.2445,0.8148 c -0.1147,-0.1898 -0.1569,-0.2814 -0.28511,-0.4889 l -0.2037,0.082 c -0.022,-0.018 -0.056,-0.024 -0.082,-0.041 l -0.4074,-0.6518 0.4481,-1.2629 z m 0.5296,0 0.3667,0.082 0,0.082 -0.2445,0.3667 -0.24441,-0.082 0.12221,-0.4482 z m 3.78869,0.163 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4074 z m 1.7925,0.2444 0.20371,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.11671,0.064 -0.16291,0.1222 l -0.3667,-0.082 0.3259,-1.2221 z m -32.1022,0.041 0.2444,0.081 -0.9777,3.0962 -0.2444,-0.041 0.9777,-3.1369 z m 29.5764,0.163 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4482 0.1629,-0.1629 z m -14.0141,0.1629 0.20361,0 0,0.4889 -0.20361,0 0,-0.4889 z m 11.692,0.082 0.20371,0.082 0.041,0.2444 -0.2852,-0.2036 0.041,-0.1223 z m -24.28039,0.082 -0.16291,0.4481 0.6111,0.163 0.1629,-0.4889 -0.61109,-0.1222 z m 27.1321,0.041 0.2037,0.041 0.041,0.6926 -0.40741,-0.1222 0.163,-0.6111 z m -29.0468,0.041 0.28521,0.041 -0.20371,0.6518 -0.2444,-0.082 0.1629,-0.611 z m 31.5726,0.2037 0.40741,0.1222 -0.082,1.0592 -0.082,0.326 -0.24441,-0.082 0.082,-1.1407 c -0.055,-0.013 -0.1121,-0.01 -0.163,0 l 0.082,-0.2852 z m -19.5546,0.2444 0.041,0 0,0.4482 -0.2037,0 0.1629,-0.4482 z m -5.5405,0.041 0.6926,0.163 -0.5704,1.1814 -0.3259,0.4482 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.081,-0.1223 z m 5.9479,0.2037 0.40741,0 0,0.4889 0.2444,0 0.041,-0.041 -0.041,0.2852 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.36671,-0.082 -0.1629,0.041 c 0.1408,-0.1216 0.2037,-0.2569 0.2037,-0.4482 z m 13.8919,0 0.2445,0.041 0.1222,0.7333 -0.082,0.2445 -0.4074,-0.6111 0.1222,-0.4074 z m -11.81421,0.2037 0.082,0 -0.2037,0.8963 -0.082,0.041 -0.2037,-0.2037 c -0.1036,0 -0.1645,0.01 -0.2445,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.774,0 0.4889,0 0.1629,0.041 -0.2444,0.7741 -0.5296,0.3259 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3666 z m 2.85171,0 0.6518,0 -0.082,0.2037 -0.611,-0.1222 0.041,-0.082 z m -22.5286,0.163 0.6518,0.1629 -0.4888,0.6111 -0.3667,-0.082 0.2037,-0.6925 z m 14.9512,0.1222 0.2037,0 0.3666,0.082 -0.40741,0.2037 -0.041,0.2037 0.041,0.1222 -0.1629,0.041 -0.2037,0 0.2037,-0.6518 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.82141,0.163 0.24441,0.041 -0.041,0.2037 -0.2851,0.041 0.082,-0.2852 z m 6.19231,0 0.2852,0.041 -0.041,0.082 -0.2444,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.20371,-0.082 0.16291,-0.4481 -0.5703,-0.1223 -0.041,0.2037 0.32591,0.8148 -0.32591,0.1222 c -0.1051,0.333 -0.023,0.6072 0.28521,0.7741 -0.041,0.1099 -0.074,0.22 -0.12221,0.3259 l -0.2445,0.082 0.12221,-0.4074 -0.5703,-0.1222 -0.24441,1.7517 c -0.1708,0.1744 -0.368,0.3713 -0.57039,0.5296 l 0.2037,-0.2851 c 0.09,-0.6138 -0.12649,-0.9904 -0.61109,-1.1 l 0.1222,-0.4074 0.61109,0.1223 0.12221,-0.2852 -0.32591,-0.2852 0.44821,-0.1222 0,-1.1814 0.52959,-1.7925 z m -27.3765,0.041 0.81471,0.4073 -0.32591,1.1 -0.28511,-0.082 -0.3259,-1.0185 0.1222,-0.4074 z m 2.485,0.041 0.5704,0.1222 -0.081,0.2037 -0.5296,-0.1223 0.041,-0.2036 z m 32.02081,0.1222 0.2852,0.041 -0.2037,0.6925 -0.28521,-0.041 0.20371,-0.6925 z m -23.3026,0.041 0.2037,0 0,0.2037 -0.2445,-0.041 0.041,-0.163 z m 10.1439,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2851 -0.36659,1.3444 -0.041,0 0.4073,-1.3444 z m -11.48839,0.082 0.2445,0.082 -0.082,0.2037 -0.2852,0.1223 0.1222,-0.4074 z m 10.307,0 0.041,0 c 0.027,0.1988 0.01,0.4181 -0.041,0.6519 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.1629,-0.041 0.041,-0.2037 z m -16.33631,0.1223 0.163,0 -0.4482,0.4481 -0.2037,0 0.48889,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.081 -0.082,0.3259 -0.6111,-0.1222 0.081,-0.2852 z m -18.90279,0.081 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.13829,-0.184 -0.2037,-0.2852 z m 10.71429,0.2037 -0.082,0.2851 -0.041,0.082 -0.041,0.1222 -0.1629,-0.2037 0.3259,-0.2851 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1467 -0.1222,-0.2037 z m -4.1553,0.041 0.611,0.1222 -0.082,0.2444 -0.611,-0.163 0.082,-0.2036 z m 7.94399,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.22221,0.082 -0.20371,0.611 -1.26289,0 0.2444,-0.6925 z m 10.9181,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.081,-0.041 z m 14.2993,0.082 0.28521,0.4073 -0.28521,0.4482 -0.2444,-0.041 0.2444,-0.8148 z m 1.14071,0.3259 0.1222,0.611 -0.28521,-0.082 0.16301,-0.5296 z m 4.15539,0.041 0.12221,0 c -0.064,0.2039 -0.057,0.392 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8962 -0.4074,0.4889 -0.20371,-0.041 0.32591,-1.1815 -0.44809,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.082,-0.2852 z m -17.2326,0.041 0.3667,0 0,0.2851 -0.2445,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.1629,0.5703 -0.2445,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.40741,0 -0.1222,0.6925 c -0.146,0.1527 -0.3488,0.2497 -0.5704,0.3259 l -0.61109,-0.4481 c 0.097,0.029 0.20249,0.064 0.3259,0.082 0.4141,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.44709,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2036 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4073 z m 21.42871,0 0.2851,0.1629 -0.082,0.2037 -0.2851,-0.041 0.082,-0.3259 z m -2.3222,0.082 0.28521,0.082 -0.28521,0 0,-0.082 z m -14.2993,0.3666 0.48889,0.5296 -0.2037,0.6518 -0.041,0 -0.2445,-0.3259 -0.52959,-0.1222 c -0.048,0.151 -0.1391,0.2794 -0.24441,0.3667 l -0.8555,-0.2445 c -0.047,-0.2318 -0.22209,-0.4008 -0.61109,-0.4888 l 0.041,-0.2037 0.5704,0.1222 0.2036,0.2444 c 0.1053,-0.3329 0.569,-0.446 1.4259,-0.5296 z m 3.1776,0.3259 0.3667,0.4482 -0.65179,-0.1223 0.2851,-0.3259 z m 21.67309,0 0.12221,0.2037 c -0.02,0.075 -0.087,0.1637 -0.12221,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.34439,0.1222 0.20371,0.3667 -0.041,0.2037 -0.2444,-0.3667 c 0.023,-0.07 0.061,-0.1319 0.082,-0.2037 z m -25.9099,0.4074 0.24441,0.041 -0.1222,0.4074 -0.24441,-0.041 0.1222,-0.4074 z m -1.5073,0.082 0.20371,0.041 -0.041,0.1222 c -0.061,-0.042 -0.10221,-0.1176 -0.163,-0.1629 z m -3.91099,0.082 c 0.1984,0.045 0.3656,0.107 0.5296,0.1222 l 0.48889,0.6111 0,-0.4888 -0.1222,-0.1223 c 0.17359,-0.011 0.33159,-0.066 0.44809,-0.1222 0.1559,0.2002 0.3052,0.4271 0.48889,0.6519 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.28521,-0.041 -0.65179,0.2852 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.48889,-0.4889 l 0.082,-0.2037 -0.3666,-0.082 c -0.1552,-0.1722 -0.30259,-0.3448 -0.4482,-0.5296 l 0.6518,0.1222 0.163,-0.4888 z m 11.7328,0.2445 0.4482,0 0,0.4888 -0.4482,0 0,-0.4888 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.44051,0.041 0.16291,0.2851 -0.041,0.163 -0.97771,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1964 0.4888,-0.4074 l 0.3667,-0.041 z m -0.73329,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.19989,0.041 c 0.1,0.077 0.15689,0.2268 0.1629,0.3666 l -0.69259,0 0.163,-0.2852 0.3667,-0.082 z m 17.11031,0.041 0.1629,0.041 -0.041,0.1629 -0.1629,-0.082 0.041,-0.1222 z m -21.14351,0.041 0.12221,0 c 0.1262,0.063 0.21979,0.1547 0.2445,0.2851 l -0.36671,0 0,-0.2851 z m 11.6921,0.4481 0.5296,0.1222 -0.082,0.2444 -0.5296,-0.1222 0.082,-0.2444 z m -13.0365,0.082 0.163,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.16301,0 -0.082,0.2444 -0.3666,0.2037 -0.1223,0.041 0,-0.082 0.1223,0.041 0.041,-0.2037 -0.1223,-0.2851 0,-0.082 z m 25.4211,0.041 0.1222,0.4481 -0.1222,0.2852 0,-0.7333 z m -16.1734,0.163 -0.041,0.2036 -0.041,0.4889 -0.937,-0.1222 -0.081,-0.082 0.77409,-0.3667 -0.3667,-0.082 0.6926,-0.041 z m -3.50351,0.041 -0.041,0.1222 -0.28521,-0.082 0.32591,-0.041 z m 4.7664,0 0.44821,0.082 0,0.041 0,0.2036 c -0.19051,0 -0.299,0.048 -0.40741,0.1223 l -0.041,-0.4482 z m -2.5665,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2445,-0.2445 -0.082,0.2037 -0.28511,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2851,0 0.7333,-0.041 z m 3.78869,0 0.12221,0.041 -0.12221,0 0,-0.041 z m -15.2771,0.041 0.163,0.2444 0.28511,0 0.163,-0.1222 0.2852,0.2851 -0.3259,0.3667 c -0.7619,0.018 -1.1994,0.1247 -1.2629,0.3259 l -0.082,0.2037 0.28511,0.082 0.5296,0 -0.24441,0.2852 c -0.3067,0 -0.7246,-0.1575 -1.1814,-0.3667 l 0.1222,-0.3259 -0.36671,-0.082 -0.3259,0.163 c -0.3253,-0.1839 -0.6735,-0.4253 -1.0592,-0.6926 0.52999,0.1199 0.94079,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.163 1.3851,0.163 l 0.082,0 0.163,0.041 0.041,-0.163 0.12221,-0.1222 z m 1.91471,0.082 c 0.012,0.2781 0.1751,0.4716 0.61109,0.5703 l -0.041,0.1222 -0.16291,0.082 c -0.4016,-0.033 -0.77869,-0.07 -1.1,-0.082 0.1876,-0.1742 0.4654,-0.4655 0.6926,-0.6925 z m 25.17669,0 0.12221,0.041 -0.24451,1.0184 -0.1222,-0.041 0.2445,-1.0185 z m -10.9588,0.082 0.24441,0.082 -0.082,0.2851 -0.16291,0 0,-0.3666 z m -20.81759,0.1222 c 0.2965,0.3446 0.63239,0.7122 0.9778,1.0999 l -0.7333,-0.1629 c -0.294,-0.2508 -0.5828,-0.5253 -0.8555,-0.8148 l 0.611,-0.1222 z m -1.05921,0.2444 0.44821,0.7333 -0.32591,0 c -0.2314,-0.1353 -0.4738,-0.2499 -0.69259,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.44809,-0.082 z m 23.2212,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.40741,-1.3036 z m 11.2847,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2956,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.67691,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.36659,0 0.2037,-0.082 z m 29.1691,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1195,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2445,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4888 -0.078,-0.08 -0.1398,-0.2016 -0.2037,-0.3259 0.1573,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2851 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1297,0.1454 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.042 -0.139,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2444,-0.163 l 0.1629,-0.041 0.041,-0.1629 z m 10.0218,0.082 0.3666,0.2445 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.037,0.3259 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 6.6405,0 0.4074,0 0,0.082 -0.2445,0.1223 -0.1629,0 0,-0.2037 z m -3.0962,0.1223 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2444,0.2851 0.082,0 0,0.4074 c -0.3615,0.031 -0.7579,0.061 -1.1406,0.082 l 0.32591,-0.4888 c 0.079,0 0.1557,0 0.2444,0 l 0,-0.326 z m -6.4775,0.3259 0.6518,0 0,0.4888 -1.0185,0 0.3667,-0.4888 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1222 c -0.1063,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2444 z m 9.4107,0.041 c -0.02,0.2876 -0.042,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5703,-0.8148 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2445,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2445,-0.2444 z m -8.6367,0.1629 0.6519,0 0,0.2037 -0.6519,0.2037 0,-0.4074 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.4074 -0.4888,0 0.4888,-0.4074 z m -15.1548,0.2037 0.041,0 0,0.2037 -0.4482,0 0,-0.041 0.4074,-0.1629 z m 3.3406,0 0.611,0 0,0.2037 -0.611,0 0,-0.2037 z m 4.9701,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 18.0474,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.163,0.4889 -0.5296,-0.1222 0.041,-0.082 c 0.17551,-0.071 0.415,-0.2009 0.6111,-0.2852 z m 5.296,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2445 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2445,-0.1223 z m -32.6318,0.2852 0.6518,0 0,0.2444 -0.6518,0 0,-0.2444 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.3292,0 0.6111,0 1.0184,0.2852 1.2222,-0.2852 1.30371,0 0,0.4889 -5.1739,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.60351,0 -0.4481,0.4889 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5704,0 0,0.2852 -0.5704,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.1629 0.041,-0.041 z m -30.5134,0.2852 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6112-3"
+           transform="matrix(0.61596339,0,0,0.61596335,-415.27667,325.5369)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.30051804px;line-height:125%;font-family:'karabinE.';-inkscape-font-specification:'karabinE.';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.49142857;fill:#fce94f;fill-opacity:1;stroke:none;filter:url(#filter3544-0)"
+           d="m -152.38187,1050.7059 -2.5666,0.4889 0,1.3444 0.5704,-0.6111 0.6518,0 0,0.2037 -1.2222,0.4074 0,2.0777 0.2037,0 -0.2037,0.2851 0,0.8555 c -0.1242,0.1134 -0.1888,0.1893 -0.2852,0.2852 l 0,0.4889 c 0.096,-0.046 0.1848,-0.06 0.2852,-0.1222 l 0,0.7333 -0.2852,0.2444 0,8.5552 0.6111,2.2406 0.082,0.5703 c -0.028,0.081 -0.061,0.1678 -0.082,0.2445 0.066,0.049 0.108,0.1082 0.163,0.1629 l 0,0.163 -0.2445,-0.082 c -0.024,-0.01 -0.057,-10e-4 -0.082,0 0.036,-0.1267 0.062,-0.2569 0.1223,-0.3667 l -0.163,-0.6111 -0.4074,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8555 c -0.09,0.2618 -0.1903,0.5021 -0.2852,0.6926 l 0,0.9777 0.2445,0.082 -0.041,0.163 -0.2037,-0.082 0,11.1217 0.1629,-1.1814 0.1222,0.041 0,1.0184 0.2037,0 0.4889,0.5297 c -0.1,0.082 -0.1897,0.1934 -0.2444,0.3666 l -0.2037,-0.2444 -0.082,0 -0.163,-0.6519 0,0.5704 -0.041,0 -0.2444,0.1222 0,0.8963 0.2852,-0.1223 0,0.326 -0.1223,-0.041 -0.1222,0.4073 0.2445,0.041 0.3666,-0.1222 0,0.2445 -0.3666,0 0,0.8555 -0.2852,0.082 0,0.2037 0.2852,-0.082 0,0.082 c 0.414,0 0.5703,-0.1422 0.5703,-0.4482 l -0.2037,-0.2036 0.5296,0 -0.1222,0.082 -0.082,0.2444 0.1222,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3814,0 c 0.2346,-0.6383 0.5269,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5704,0 -0.2852,0.2037 -0.1629,0 -0.2444,-0.3259 0.082,-0.2444 -0.2445,0.082 -0.6518,0 -0.3259,0.1222 0,-0.041 -0.3667,-0.082 -0.2851,0.2037 -0.4482,-0.2037 0,-0.2444 1.0593,0 0,-0.2037 -0.2037,-0.2037 0,-0.2445 0.4888,0.163 -0.082,0.2037 0.5704,0.1222 0.2851,-0.041 0.6111,0.2037 -0.082,0.2444 0.2852,0.082 0.5703,-0.041 0.6519,0.2445 0,0.2037 c -0.3219,0 -0.8163,0.3865 -1.3852,1.1814 l 18.577,0 c 0.082,-0.08 0.1634,-0.1631 0.2444,-0.2445 0.2121,0.076 0.504,0.165 0.7333,0.2445 l 1.4666,0 -0.2444,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5297,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1356,0.056 0.2037,0.082 l -0.041,0.082 1.3037,0 0.3666,-0.2444 -0.041,0.2444 2.5666,0 0.082,-0.2444 0.2444,0.041 -0.082,0.2037 0.4481,0 0,-1.3444 -0.082,0.2444 -0.2444,-0.041 0.1222,-0.4074 0.2037,0.082 0,-9.044 -0.1222,-0.041 0.1222,-0.5703 0,-1.7111 -0.2851,0.082 -0.041,0.2037 0.2036,0.3259 -0.611,1.1 -0.2037,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0592 -0.6518,2.3629 -0.5704,0.2852 1.1815,-4.3998 0.3666,0.5703 0,-1.3444 -0.163,-0.041 0.163,-0.5703 0,-1.8333 c -0.2597,-0.392 -0.5239,-0.7827 -0.8148,-1.1406 l 0.8148,0.041 0,-1.2222 -0.2037,0.8555 -0.2444,-0.082 0.3259,-1.1814 0.1222,0.041 0,-3.5443 -0.082,0.2852 -0.4481,-0.1222 0.5296,-2.037 0,-7.9848 -0.041,0.1222 -0.8148,0 -0.6518,-0.3666 -0.8148,0 0.041,-0.2037 -0.3259,-0.5296 0.082,-0.2852 0.2037,0.041 0.8555,0.774 0.2852,-0.1629 0.082,-0.2852 c -0.3163,-0.3876 -1.755,-1.0888 -4.3183,-2.0777 l -1.1,0 2.811,1.1814 -0.1222,0.4074 0.2851,-0.1629 0.6926,0.2037 -0.4889,0.8147 -0.2037,-0.041 -0.1629,-0.2851 -0.2444,-0.041 -0.3667,0.1222 0.1222,-0.4074 0.3667,-0.1629 0,-0.041 -0.2445,-0.2852 -0.2444,-0.082 -0.2852,0.2037 -0.2444,-0.041 -0.6926,-0.4889 -0.5703,0.3667 -1.5481,-1.2629 -1.8332,0 -0.082,0.3259 -0.2445,-0.041 0.082,-0.2852 -3.2998,0 1.0184,1.5481 0.2037,0.041 -0.1629,0.6925 -0.4481,-0.1222 -0.082,0.2037 c 0.3276,0.088 0.5624,0.5585 0.6925,1.3851 l -0.1629,0.6926 -0.2445,-0.082 0.1223,-0.4481 -0.7333,-0.2037 -0.163,0.4481 0.4889,0.1222 -0.2445,0.8963 -0.4888,-0.1222 -0.2037,0.937 0.4481,0.1222 -0.1222,0.4074 -0.4481,-0.1223 -0.1223,0.4074 0.4482,0.1222 -0.163,0.6926 c -0.4096,-0.1095 -0.6971,0.1232 -0.937,0.6926 -0.022,0.084 -0.038,0.1751 -0.041,0.2444 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.089 -0.01,-0.1889 0,-0.2852 l 0.2037,0 0,-0.2037 -0.163,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.2037 l 0.5296,0.1629 0.163,-0.6518 -0.4074,-0.6111 0.937,-1.3851 -0.2037,-0.041 0.2852,-0.1629 0.082,-0.2852 -0.2037,-1.4666 0.6518,-0.2444 -0.2444,-0.082 0.4481,-0.6111 c 0.1537,-1.0675 -0.199,-1.6848 -1.0592,-1.9148 l 0.2852,-0.1629 0.082,-0.2444 -1.5889,0 0,0.082 0.6926,0.1629 -0.937,0.7333 c 0.085,-0.3163 0.049,-0.6402 -0.041,-0.9777 l -1.5888,0 -0.2037,0.6925 -0.2444,-0.041 0.1629,-0.6518 -0.937,0 0.2445,0.4889 -0.082,0.4481 -0.3667,-0.5703 0.082,-0.3667 -0.4481,0 -0.8555,3.0962 c -0.097,-0.045 -0.1796,-0.077 -0.2852,-0.1222 l -0.041,0 -0.163,-0.2445 0.2852,-0.1222 0.082,-1.1814 0.3667,-1.4259 -0.4889,0 -0.6111,2.3629 -0.2444,0 0.6111,-2.3629 -2.6073,0 -0.041,0.163 0.4481,0.1222 -0.2852,1.0592 c -0.9988,-0.3794 -1.8221,-0.6518 -2.4443,-0.6518 -0.1476,0.3741 -0.4355,0.625 -0.774,0.774 -0.017,-0.069 -0.022,-0.1337 -0.041,-0.2037 l -0.041,-0.2037 0.5703,-0.082 0,-0.2851 c 0,-0.2009 -0.2546,-0.367 -0.774,-0.4889 l -0.041,-0.2037 -0.9778,0 c 0.001,0.014 0,0.027 0,0.041 l 0,0.2444 c -0.2787,-0.1372 -0.624,-0.216 -1.0184,-0.2851 l -1.7111,0 0,0.1629 -0.2444,0.082 -0.082,-0.2444 -0.5296,0 0.041,0.1222 -0.163,0.163 -0.081,-0.2852 -2.7295,0 -0.2037,0.9777 -0.3259,0 0,-0.4888 c 0.085,-0.1762 0.1553,-0.3575 0.2037,-0.4889 l -2.4036,0 z m 36.2576,12.8328 0,-0.937 -0.041,0.041 -0.163,0.6111 0.2037,0.2851 z m -34.3429,-12.7513 -0.2852,0.4481 -0.4888,0.082 0.082,-0.2851 0,-0.1222 0.6925,-0.1223 z m 13.4846,0.041 0.4481,0.1222 -0.041,0.2445 -0.4481,-0.1223 0.041,-0.2444 z m -16.2956,0.3667 0,0.4888 -0.4481,0 0.4481,-0.4888 z m 7.8219,0 0.082,0.041 0.2037,0.8962 c -0.2225,-0.02 -0.4372,-0.045 -0.6111,-0.082 l 0.2037,-0.6518 -0.041,-0.163 0.1629,-0.041 z m 1.4666,0 0.4074,0.4888 -0.4074,0 0,-0.4888 z m -2.5666,0.1629 0.082,0.2852 -0.1222,0.041 c -0.071,-0.079 -0.082,-0.1896 -0.082,-0.2852 l 0.1222,-0.041 z m -6.1515,0.041 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 5.2145,0 0.2037,0 0,0.2852 -0.2037,0 0,-0.2852 z m -2.9739,0.2852 c 0,-0.01 0.038,0 0.041,0 l 0,0.2444 -0.163,0 c 0.038,-0.069 0.088,-0.1795 0.1223,-0.2444 z m 13.0364,0 0.2037,0.081 -0.1629,0.6518 -0.3259,-0.5703 0.2851,-0.163 z m 11.8143,0.041 0.4481,0.1222 -0.1222,0.4889 -0.4889,-0.1223 0.163,-0.4888 z m -5.8257,0.1629 0.2445,0.041 -0.163,1.5888 -0.2852,0.163 -0.1222,0.4889 -0.5296,2.5258 -0.6518,-0.6518 1.1,-2.6481 -0.2445,-0.2851 0.082,-0.2037 0.5704,-1.0185 z m 0.9778,0.041 0.5703,0.1222 -0.2852,0.163 -0.082,0.2037 -0.774,3.8702 -0.2852,0.1629 -0.082,1.1407 -0.2037,0.7741 -0.5703,0 0.1629,-0.5704 c 0.245,-0.096 0.4482,-0.2129 0.4482,-0.3666 l -0.2852,-0.2852 1.3851,-5.2146 z m -17.7214,0.2037 0.2444,0 0.041,0.163 -0.082,0.041 -0.1222,0 -0.082,-0.2037 z m 14.5437,0.1222 0.2037,0.041 -0.082,0.4482 -0.2444,-0.082 0.1222,-0.4074 z m 12.6291,0.041 0.2037,0.082 -0.082,0.4074 -0.2444,-0.082 0.1222,-0.4074 z m -29.8209,0.041 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m -2.0776,0.2037 1.0592,0 c -0.029,0.098 -0.082,0.1887 -0.1222,0.2852 l -0.937,0 0,-0.2852 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.163 c -0.074,0.2764 0.1417,0.5131 0.5704,0.6518 l 0,-0.5296 -0.5704,-0.1222 z m -6.0701,0.3259 0.4481,0.1222 -0.3666,1.3037 -0.4481,-0.1223 0,-1.1814 0.3666,-0.1222 z m -17.0696,0.4481 0,0.4889 -0.2037,0 -1.6703,0.2444 c 0.035,-0.1864 0.074,-0.3749 0.082,-0.5703 l 1.7926,-0.163 z m 0.3667,0 0.6518,0.2037 0,0.2852 -0.8555,0 0.2037,-0.2852 0,-0.2037 z m 1.0185,0 0.041,0 0.2851,0.4482 -0.041,0.041 -0.2851,0 0,-0.4889 z m 1.8332,0 -0.082,0.3259 -0.2852,0.041 0.1223,-0.3259 c 0.073,-0.01 0.1596,-0.036 0.2444,-0.041 z m 10.2662,0 0.6518,0.3667 -0.082,0.2037 -0.4481,0.8555 c -0.076,0.6131 0.1199,0.9904 0.5296,1.0999 l -0.1222,0.4074 -0.5296,-0.1222 -0.082,0.2852 0.2444,0.2852 -0.3666,0.1222 0.041,1.1814 -0.4889,1.7925 -0.5296,-0.1222 -0.4074,-1.3037 0.1222,-0.4888 0.2444,0.041 -0.1222,0.4888 0.4482,0.1223 0.041,-0.2037 -0.2852,-0.8148 0.2852,-0.1222 c 0.1185,-0.4435 -0.079,-0.7649 -0.5704,-0.8963 l 0.6518,-0.2852 -0.1222,0.4074 0.4889,0.1223 0.3666,-3.2184 0.041,-0.2037 z m -20.4916,0.1222 0.2444,0.041 0.1222,0.4889 -0.3259,-0.082 0,-0.3666 -0.041,-0.082 z m -7.7404,0.082 0.4481,0 -0.4481,0.5296 0,-0.5296 z m 1.3036,0 0.8148,0 c -0.013,0.016 -0.028,0.025 -0.041,0.041 -0.2572,0.2055 -0.3429,0.3041 -0.5704,0.4889 l -0.2037,-0.2444 0,-0.2852 z m 1.3037,0 0.3666,0 0.4074,0 0,0.2037 -0.082,-0.082 -0.4889,0.1222 0,0.2445 -0.082,0.041 -0.2037,-0.2444 -0.082,0 0.163,-0.2852 z m 1.1406,0 0.6111,0 -0.041,0.2852 -0.5703,0 0,-0.2852 z m 7.2923,0 0.6518,0 -0.082,0.2445 0.1222,0.4481 -0.2851,0.041 -0.4074,-0.6518 0,-0.082 z m 1.2629,0 0.2037,0 0.082,0.2445 -0.2037,0.041 -0.082,-0.2852 z m 21.1435,0 0.8148,0 0.2444,0.041 -0.082,0.2037 -1.1,0.163 0.1223,-0.4074 z m -12.9142,0.082 0.2036,0.082 -0.082,0.4074 -0.2444,-0.082 0.1222,-0.4074 z m 5.2553,0 -0.081,0.2037 0.4888,0.1223 0.041,-0.2037 -0.4481,-0.1223 z m 10.1439,0.3667 0.4889,0.1222 0.4074,0.5704 -0.6518,0.3259 0.2852,0.082 -0.6111,1.0184 c -0.3277,-0.088 -0.363,-0.3713 -0.2445,-0.8147 l 0.2852,-0.163 0.041,-0.2037 0,-0.937 z m -1.3851,0.2852 0.2445,0.082 0.041,0.7333 -0.4482,-0.1223 0.163,-0.6925 z m -25.5025,0.041 0,0.4074 -0.2852,0 -0.082,-0.326 0.3667,-0.082 z m 23.9137,0.041 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4482 z m -24.7285,0.082 0.082,0.2851 -0.2444,0 0,-0.2444 0.1629,-0.041 z m -8.2292,0.041 1.0184,0 c -0.1009,0.084 -0.1917,0.1658 -0.2851,0.2444 l -0.7333,0 0,-0.2444 z m 2.0776,0 0.4482,0 0,0.2444 -0.6111,0 0.1629,-0.2444 z m 7.8626,0 0,0.2444 -0.2036,0 -0.041,-0.163 0.2444,-0.082 z m 3.748,0 0.4074,0 0,0.2444 -0.4074,0 0,-0.2444 z m 1.0592,0 0.8148,0 0,0.2444 -0.8148,0 0,-0.2444 z m 22.3657,0.041 0.4481,0.1222 0.2852,0.2852 0.082,-0.4074 0.2444,0.041 -0.1222,0.4481 -0.2037,-0.082 0.163,0.2852 -0.1223,0.4888 c -0.3277,-0.088 -0.616,0.1421 -0.774,0.7333 l -0.3666,-0.611 0.3666,-1.3037 z m -31.0023,0.041 0.2852,0.2037 -0.2037,0.082 -0.082,-0.2852 z m -4.7257,0.082 0.041,0.082 -0.1222,0 c 0.027,-0.031 0.054,-0.05 0.082,-0.082 z m 31.98,0.041 0.5296,0.1629 -0.041,0.2037 -0.5296,-0.1222 0.041,-0.2444 z m -20.4917,0.041 0.3667,0 0,0.2851 -0.3667,0 0,-0.2851 z m 3.5443,0 0.2037,0 c 0.2933,0.1 0.5027,0.2543 0.6518,0.4888 l -0.081,0.1222 c 0.049,0.098 0.1129,0.1885 0.163,0.2852 l -0.3666,0 0,0.2444 0.5296,0.082 c 0.074,0.1379 0.1679,0.2724 0.2444,0.4074 l -1.7925,0 0,-0.2037 c 0.5521,10e-5 0.8148,-0.2235 0.8148,-0.5296 l -0.3667,-0.4074 0,-0.4888 z m -9.2884,0.041 0.1222,0.4481 -0.2037,0.041 -0.082,-0.3259 0.1629,-0.163 z m -3.5036,0.082 0.082,0.4481 -0.4481,0.1222 -0.041,-0.1629 0.3259,-0.041 0,-0.326 0.082,-0.041 z m 1.6296,0.041 c 0.2851,1.0667 0.7124,1.5431 1.3036,1.3851 l 0.082,0.1629 -0.1629,0.2445 -0.2445,-0.1222 c -0.5964,0.7308 -0.8708,1.4517 -0.6925,2.1184 l -0.8555,-0.6518 0.611,-0.163 -0.1222,-0.4074 c -0.3695,0.099 -0.5984,-0.098 -0.8148,-0.6111 l 0.9778,-0.7333 -0.4482,-0.937 -0.041,-0.1629 0.4074,-0.1222 z m 23.5878,0.2444 0.4481,0.1222 -0.082,0.2444 -0.4481,-0.1222 0.082,-0.2444 z m -14.9512,0.082 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.082 -0.041,0.163 -0.2037,-0.041 0.2445,-0.2037 z m -10.5514,0.041 c 0.1566,0.1293 0.3292,0.2463 0.5704,0.3666 l 0,-0.1629 0.082,0.3666 0,0.082 -0.4481,0.1223 -0.2037,-0.7741 z m 23.2212,0.041 0.4481,0.1222 0,0.9777 -0.2851,0.1223 -0.041,0.2037 -0.163,1.4666 -0.4074,0.5703 0.2037,0.2444 -0.3259,0.2037 0.3666,0.5704 -0.2851,0.1222 -0.2445,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4481,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.057 0.041,0.082 l -0.1222,0.082 0.1629,0.041 c 0.083,0.2037 0.1422,0.4408 0.163,0.6925 l -0.041,0.2037 -0.163,-0.2444 -0.2851,-0.082 -0.041,0.041 0.2444,-1.5481 0.774,-2.8517 0.4482,-0.8148 -0.2852,-1.0592 0.5296,0.163 0.3259,-2.0777 z m -28.4357,0.041 -0.041,0.4481 -0.2852,0.082 -0.2852,-0.1629 -0.2037,0.082 0.3667,0.4888 -0.4889,0.6111 -0.3259,-0.4888 c 0.071,-0.017 0.1278,-0.041 0.2037,-0.041 l 0,-0.4889 -0.163,0 -0.2037,0.2852 -0.2037,0 0.3667,-0.6111 1.2629,-0.2037 z m 4.8072,0 0.1629,0.6518 -0.2037,0.041 -0.2037,-0.6111 0.2445,-0.082 z m -7.0886,0.2852 0.2037,0 0,0.2851 -0.2037,0.2445 -0.2444,0 0,-0.3259 c 0.078,-0.065 0.1633,-0.1301 0.2444,-0.2037 z m 32.5911,0.4074 1.5073,1.3443 -0.1222,0.4482 -0.5296,-0.163 -0.4889,1.7925 -0.2037,-0.041 0.4074,-2.4851 -0.2851,0.1223 -0.326,-0.082 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.4073 -0.6926,-0.2037 0.041,-0.2036 z m -27.4173,0.1222 0.041,0 0.2037,0.2037 -0.163,0.041 -0.082,-0.2445 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4997,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.1629 c -0.014,0.06 -0.024,0.099 -0.041,0.163 l 0.4074,0.1222 c -0.1394,0.1292 -0.3455,0.163 -0.6518,0.163 l -0.2037,0 0,-0.2037 0.4889,-0.2445 z m -4.6442,0.041 0.6518,0.2037 0,0.4481 c -0.414,0 -0.6518,0.1829 -0.6518,0.4889 l -0.163,0 c 0,-0.4589 -0.1313,-0.7332 -0.4074,-0.7333 l 0,-0.2037 0.5704,-0.2037 z m 11.4476,0.041 0.3259,0.6111 -0.041,0.2037 -0.3259,-0.6111 0.041,-0.2037 z m -18.088,0.041 0.5703,0.2852 0.6518,2.3628 0,0.082 -0.3666,-0.5296 -0.2037,0 0.5703,0.8556 0.041,0.6518 0.2852,0.1222 -0.3667,0.5703 -1.1814,-4.3998 z m 15.44,0 0.2444,0.041 -0.2852,1.1 -0.2444,-0.041 0.2852,-1.1 z m -7.0886,0.1222 0.5704,0.2037 0,0.2445 -0.7741,0 0.2037,-0.2445 0,-0.2037 z m -9.2884,0.2037 0.4888,0.4889 0.041,0.163 -0.4888,0.1222 -0.163,-0.6518 0.1222,-0.1223 z m 1.9962,0.1223 0.3259,0.3259 0,0.082 0.082,0.041 0.2037,0.2444 -0.163,0.163 0.6518,2.3628 -0.2851,-0.1629 -0.8148,-3.0555 z m -7.8219,0.082 0.082,0.3666 -0.2037,0.041 -0.082,-0.3666 0.2037,-0.041 z m 2.4443,0.2037 -0.082,0.611 0.082,0.2445 0.2445,0.1629 c -0.776,0.2075 -1.0756,0.7481 -0.937,1.7111 l 0.3666,0.5703 -0.2037,0.041 0.5704,0.2444 -0.163,1.3037 0.082,0.2852 0.2445,0.1222 -0.2037,0.041 0.5703,0.8555 c -0.1409,0.1125 -0.2864,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4074,-0.1223 -0.2037,-0.8147 -0.4481,0.1222 -0.2037,-0.8148 0.4073,-0.1222 -0.1222,-0.4481 -0.6518,0.2036 0.082,0.4482 -0.2037,0.041 -0.1629,-0.6111 c 0.1174,-0.7457 0.3562,-1.1839 0.6518,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.163,-0.611 0.2037,-0.041 1.3444,-2.037 z m 31.3282,0.2036 0.2445,0.041 0.2444,0.2852 0.2852,-0.1222 0.6925,0.163 0.4482,2.2813 -0.041,0.2037 0.2851,0.082 0.2852,-0.1222 0.2444,0.041 -0.6925,2.648 c -0.6159,-0.3229 -0.8482,-0.9056 -0.6111,-1.7925 l -0.2037,-0.082 0.2852,-0.1222 0.1222,-0.4889 0.082,-1.1814 -0.5704,-0.1222 -0.6925,2.6888 0.2444,0.2851 -0.3666,0.1223 -0.041,0.2036 0.2037,2.1999 -0.8148,0 c -0.1161,0.5674 -0.1894,1.0843 -0.2445,1.5074 -0.1694,0.1075 -0.2848,0.3972 -0.4073,0.8555 l -0.326,0.1222 -0.4481,-0.1222 -0.1629,-0.937 0.5703,-0.4889 0,-0.1222 c 0.055,0.088 0.1486,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2037 0.2444,-1.874 0.3666,-0.5296 0.7333,-3.6257 0.2445,-0.8963 -0.4481,-0.1222 -0.3667,1.3444 -0.3666,0.1222 0.2444,0.2852 -0.1222,0.4888 -0.5296,-0.1629 0.8147,-3.0962 z m -9.207,0.1223 0.2037,0.041 -0.2444,0.8962 -0.2852,0.163 -0.2037,-0.082 0.5296,-1.0185 z m 6.0701,0 0.2037,0.041 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -24.9729,0.082 0.2037,0.8147 -0.2037,0.041 -0.2444,-0.774 0.2444,-0.082 z m -6.7219,0.041 0.041,0 0.1222,0.4481 -0.2037,0.041 -0.041,-0.1222 c 0.028,-0.1062 0.05,-0.2305 0.082,-0.3259 0,-0.013 0,-0.028 0,-0.041 z m 34.2614,0.041 0.2444,0.041 -0.2037,0.6925 -0.2037,-0.041 0.163,-0.6925 z m -26.5618,0.041 0.1223,0.4481 -0.326,0.4889 -0.082,-0.3667 0.2852,-0.5703 z m 13.892,0.082 0,0.041 -0.3259,0.2037 -0.2037,-0.041 c 0.011,-0.041 -0.01,-0.084 0,-0.1223 0.1891,-0.018 0.3782,-0.056 0.5296,-0.082 z m -11.7328,0.2444 0.1222,0.1222 -0.2037,0.082 -0.041,-0.1629 0.1222,-0.041 z m 27.1321,0.1222 0.774,0.2037 -0.041,0.2444 -0.774,-0.2037 0.041,-0.2444 z m -8.7181,0.041 0.5703,0.163 -0.082,0.2037 -0.5296,-0.1223 0.041,-0.2444 z m -15.4808,0.041 0,0.6111 0.4481,0 c 0,0.3378 0.036,0.6266 0.1222,0.8148 -0.2101,0.043 -0.4005,0.095 -0.5703,0.1629 l 0,-0.041 -0.3667,-0.4074 -0.6518,0.2037 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2444,-0.8963 1.3444,-0.163 z m 2.8925,0 0.2851,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.6518 c 0.3993,-0.2212 0.701,-0.4734 0.8148,-0.774 0.071,0.093 0.1313,0.1937 0.2037,0.2852 l -0.3666,0.041 0,0.4481 0.4073,0 0.2445,0.2852 0.1629,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2852,0.3259 l 0.041,0.163 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2444,0.1222 -0.082,0.1629 -0.6519,-0.1222 c -0.065,-0.1287 -0.1069,-0.2443 -0.1222,-0.3666 l 0.3259,0 0.3667,0.082 0.041,-0.2037 -0.2852,-0.5296 c -0.2712,-0.072 -0.5058,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.1629 c -0.064,0 -0.1436,-0.01 -0.2037,0 l -0.5296,-0.611 -1.0592,0.2037 -0.774,-0.2037 -0.4482,0.4481 -0.1629,-0.2444 0,-0.2037 c 0.2415,0 0.4326,0.016 0.6111,0 0.5353,-0.049 0.774,-0.1779 0.774,-0.4074 z m 16.2955,0 0.2444,0.082 -0.2444,0.8963 -0.2444,-0.082 0.2444,-0.8963 z m -19.962,0.4074 0,0.4481 0.4073,0 0,-0.4481 -0.4073,0 z m -1.5481,0.082 0.2444,0.2852 -0.2037,0.3666 -0.1629,-0.5296 0,-0.082 0.1222,-0.041 z m -10.5106,0.1222 0.041,0.3259 -0.163,0.041 0.1222,-0.3666 z m 21.836,0 0.1629,0 0,0.2445 -0.1629,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.774,1.8333 -0.5296,0.3259 -0.2851,-1.5073 -0.1223,-0.4482 -0.2444,-0.1222 -0.1629,-1.4258 0.2037,-0.041 z m -0.8963,0.041 1.1407,4.2369 -0.3259,-0.082 0,-0.082 -0.2852,-0.163 -0.6925,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4889,-0.1222 z m 19.8806,0.082 0.2444,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2233,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.981,0.2445 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2445,0.041 -0.163,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8137,0.082 0.3666,0 c -0.096,0.1753 -0.2074,0.2729 -0.3666,0.2851 l 0,-0.2851 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7258,0.082 0.3259,0.6111 -0.1222,0.4073 -0.4482,-0.1222 0.2445,-0.8962 z m 1.0184,0.2851 0.2037,0.041 c -0.079,0.2957 0.1603,0.5612 0.6518,0.6926 l -0.2444,0.8963 c -0.1373,-0.1603 -0.2848,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4481,-0.1222 0.2444,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4482 -0.1629,-0.082 0.082,-0.4074 z m 3.3814,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.089,-0.065 -0.1748,-0.1266 -0.2445,-0.2037 z m -7.4145,0.1223 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1222,-0.041 0.1629,-0.081 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.6111,0.2444 c -0.4434,0.1186 -0.6365,0.4148 -0.5296,0.8148 l 0.2444,0.1222 -0.2444,0.7333 0.041,0.2037 0.4481,-0.1222 -0.1222,-0.4481 0.2037,-0.041 0.1222,0.4481 -0.3667,1.1407 -0.3666,-0.082 c -0.056,0.071 -0.069,0.1343 -0.1222,0.2037 l -0.4482,-1.5888 0.041,-1.1 -0.3259,-0.081 0.2037,-0.2852 -0.041,-0.2444 -0.4888,0.1222 -0.082,-0.1629 0,-0.082 0,-0.163 c 0.3323,-0.117 0.5134,-0.4115 0.4481,-0.937 l -0.4481,-0.774 -0.041,-0.163 0.5703,-0.3666 z m 31.1652,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1223,0.3666 -0.2037,0.041 -0.1222,-0.3666 0.2036,-0.041 z m 8.5145,0.041 0.2037,0.082 -0.2445,0 0.041,-0.082 z m 16.9066,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.163,-0.6926 0.4481,0.5704 -0.5703,0.8147 -0.163,1.874 -0.4481,0.5296 -0.2445,-0.041 c 0.5137,-1.9215 0.411,-2.9209 -0.2444,-3.0961 l 0.2037,-0.6926 z m -20.0435,0.082 0.2037,0 -0.1222,0.4481 -0.163,0 0,-0.2037 0.082,-0.2444 z m 1.7925,0 0.2037,0 c 0.1368,0.1613 0.1865,0.3854 0.1629,0.6518 l -0.1222,0 -0.2444,-0.6518 z m -2.5666,0.1222 0.2037,0.3667 -0.2851,-0.082 0.082,-0.2852 z m 12.5476,0.163 0.2444,0.082 0.2852,0.2036 -0.1629,0.2445 c -0.1007,-0.099 -0.2134,-0.1792 -0.326,-0.2445 l -0.041,-0.2851 z m -7.17,0.1629 0.2851,0 c 0,0.072 0.024,0.1466 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1222 -0.326,0 -0.082,-0.1222 z m -6.7219,0.1222 0.2036,0.082 -0.082,1.2222 -0.082,0.2037 -0.2037,-0.082 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2852 z m 14.6252,0.041 0.3259,0.082 -0.1629,0.6519 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3585,0.041 0,0.2037 -0.1223,0 0.1223,-0.2037 z m -1.4666,0.163 0.1222,0 0.1222,0.1629 0.082,0.2852 -0.3259,-0.4074 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.163,0 0.041,-0.2037 z m -5.2553,0.1629 -0.041,0.2445 c -0.1413,0.6766 -0.1365,1.0308 0.1222,1.0999 l -0.2445,0.2037 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.1629,-0.5703 0.4481,-0.081 c -0.206,-0.7706 -0.1475,-1.243 0.1222,-1.3444 z m 1.8739,0 0.041,0.1223 0.082,-0.082 0.163,0.6518 0,0.1222 -0.4889,0.7333 0.2852,0.082 -0.3259,0.1222 -0.081,0.2445 0.2444,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8555 -0.6518,1.3037 0.2444,0.2852 -0.4888,-0.163 0.3666,-1.3444 -1.1814,0.7333 0.2444,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6926 c 0.08,-0.4995 0.011,-0.7981 -0.2037,-0.8556 l 0.2852,-0.1629 0.041,-0.2037 0.2037,-1.3037 c 0.1374,-0.1298 0.2764,-0.2714 0.4074,-0.4073 l 0.4481,0.3259 c -0.053,-0.2116 -0.1577,-0.3754 -0.2444,-0.5296 0.051,-0.055 0.1128,-0.1065 0.1629,-0.163 l 0.2445,0.041 0.082,-0.3666 0.3666,-0.163 -0.1629,-0.163 c 0.072,-0.092 0.1339,-0.1912 0.2037,-0.2851 l 0.7333,0.041 0.1629,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.1351,-0.2161 0.2037,-0.3259 l 0.2852,0.082 0.2852,-1.0592 c 0.1084,-0.2 0.2226,-0.4049 0.3259,-0.6111 l -0.1222,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4888,0 c 0.012,-0.071 0.03,-0.1354 0.041,-0.2037 l 0.2444,-0.2444 z m -22.1619,0.041 0.082,0.2852 -0.082,0 0,-0.2852 z m 30.4319,0.2037 0.4889,0.1223 -0.4074,0.9369 c -0.091,-0.1361 -0.2088,-0.2648 -0.3666,-0.3666 l 0.2851,-0.6926 z m -10.8773,0.163 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9778,0.041 0.4074,0.1222 -0.041,0.163 -0.2037,0.041 -0.163,-0.2852 c 0.01,0 -0.01,-0.038 0,-0.041 z m -8.3922,0.3259 0.4074,0.082 -0.163,0.6518 -0.2852,-0.5703 0.041,-0.163 z m 23.9137,0.041 c 0.4519,0.2793 0.6049,0.7683 0.4074,1.5073 l -0.5296,1.0593 c -0.1998,1.1223 -0.2915,1.891 -0.2852,2.4036 l -0.163,-0.041 0.041,-0.7741 0.1223,-0.4889 -0.3667,-0.774 0.8963,-2.1184 -0.1223,-0.7741 z m -21.836,0.1222 0.2444,0 0,0.2037 -0.2444,0 0,-0.2037 z m 12.0994,0 0.041,0 -0.1629,0.5704 c -0.021,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.962,0.041 0.2037,0.041 0.1222,0.2445 -0.3667,-0.1223 0.041,-0.1629 z m -4.1147,0.2037 0.041,0.2037 -0.2851,0.5296 -0.041,-0.1629 0.2851,-0.5704 z m 3.6258,0 c 0.1218,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.163,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2444,0.082 -0.1222,0.4889 -0.2444,-0.082 0.1222,-0.4889 z m -25.4618,0.082 c 0.1305,0.01 0.286,0.02 0.4481,0.041 l -0.1222,0.3667 c -0.2956,-0.079 -0.55,0.1592 -0.6926,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2133,-0.256 0.4889,-0.2852 l 0.3666,0 -0.041,-0.041 z m 14.0142,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1478,0.041 0.2852,0 -0.1223,0.5296 -0.2444,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5703,0 0,0.082 -0.3666,0.5704 0.1222,0.1629 -0.6111,-0.1629 c 0.1071,-0.1606 0.1904,-0.4143 0.2852,-0.6519 z m 1.0592,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2407,0 0.4888,0 -0.1222,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.163 0.041,0.4481 -0.163,0.041 c -0.1808,-0.2054 -0.2426,-0.4948 -0.2036,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.016,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2445,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4888,0.1222 -0.041,-0.5296 0.2444,-0.041 0,-0.4889 -0.2852,0.041 -0.041,-0.2444 z m -7.6997,0.082 0,0.7741 c -0.2652,-0.083 -0.4074,-0.289 -0.4074,-0.6519 0.1827,1e-4 0.3,-0.043 0.4074,-0.1222 z m 5.5405,0 0.4074,0.1222 -0.082,0.3667 -0.4481,-0.1222 0,-0.041 0.1629,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6518 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2445 0,0.2851 -0.041,0.082 -0.2037,-0.041 0.041,-0.2037 0.2444,-0.3666 0.163,-0.2852 -0.4481,-0.1222 0.5703,-0.2852 z m -18.8214,0.082 c 0.092,0.016 0.1762,0.041 0.2852,0.041 l 0,0.6518 -0.2444,-0.082 -0.041,0.1223 -0.1222,0 0,0.4481 0,0.082 0.4481,0.1222 0.041,-0.2037 0.1629,0 -0.5296,0.774 -0.2444,-0.3259 -0.082,0.3667 0.2444,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.1549,0.076 -0.2587,0.2271 -0.2851,0.4482 l -0.041,0.1222 -0.163,0 c -0.01,-0.03 0,-0.052 0,-0.082 l 0.082,-0.4482 -0.163,-0.041 c -0.084,-0.4331 -0.1523,-0.7924 -0.2444,-1.0592 l 0.4481,-1.6295 z m -7.2922,0.4481 c 0.2126,0.1197 0.3124,0.3225 0.2852,0.6111 l -0.2037,-0.1222 -0.082,-0.4889 z m 18.3325,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1372 -0.06,0.2832 -0.082,0.4074 -0.092,0.016 -0.1762,0.041 -0.2852,0.041 l 0,0.4889 -0.2444,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2851,0 0.1222,0.041 0,0.4074 -0.2036,0 0,0.2037 0.082,0.3667 c -0.1679,-0.1492 -0.2705,-0.4892 -0.2852,-1.0185 z m 25.3395,0.041 0.4482,0.1223 -0.1223,0.4073 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9354,0.041 c -0.044,0.049 -0.077,0.1097 -0.1223,0.163 l -0.041,-0.1222 0.163,-0.041 z m -0.8963,0.041 0.4481,0.937 -0.2037,0.041 -0.082,-0.041 c 0.01,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.082 -0.2037,-0.6925 0.2444,-0.041 z m 17.5177,0 0.4074,0.1223 -0.082,0.2444 -0.3666,-0.2444 0.041,-0.1223 z m 0.7333,0 0.2037,0.082 -0.1222,0.4074 -0.2037,-0.041 0.1222,-0.4481 z m 7.1293,0.082 0.082,0.1223 0.2852,0.082 0.082,-0.041 -0.2037,1.3443 -0.6926,2.5259 -0.2444,0.4888 -0.082,-0.3666 0.2037,-0.2852 -0.2037,-0.2037 -0.2444,0.082 -0.163,-0.2852 0.2852,-0.1222 0.2037,0.041 0.041,-1.0592 0.2851,-0.9777 0.4074,0.082 0.1223,-0.5296 0.041,0 0,-0.082 c -0.1251,-0.2297 -0.181,-0.5084 -0.2037,-0.8148 z m 3.0554,0.041 0.2445,0.082 -0.082,0.2445 0,0.041 -0.163,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4074,0.1223 -0.1222,0.3666 -0.2852,-0.4889 z m -10.6328,0.326 0.041,0.1629 -0.1222,0.041 0,-0.1629 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3666 0.2036,0.041 -0.2444,0.1222 -0.1222,0.4889 -0.163,-0.6111 0.2037,-0.4889 z m 27.4172,0 0.3667,0.082 c -0.05,0.1857 -0.025,0.3352 0,0.4481 l -0.3259,-0.082 c 0.053,-0.2 0.019,-0.3353 -0.041,-0.4481 z m -3.9517,0.082 0.041,0 c -0.023,0.1202 -0.051,0.2387 -0.082,0.3666 l -0.041,0 0.082,-0.3666 z m -17.314,0.041 0.2037,0.041 -0.2444,0.8147 -0.2037,-0.041 0.2444,-0.8147 z m 14.7475,0.041 c 0.1067,0.099 0.2579,0.168 0.4074,0.2444 l -0.163,0.3259 -0.1629,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1097,-0.09 -0.163,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.1629 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.5296 -0.4482,-0.1222 0.1223,-0.4074 z m -33.243,0.3667 0.041,0.1222 -0.1629,-0.041 0,-0.041 0.1222,-0.041 z m 6.7627,0.1629 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4514,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1707,0.032 -0.2444,0.041 l 0.2444,-0.8963 0.2037,-0.041 z m 1.5888,0.163 c 0,0.051 0,0.1083 0,0.1629 -0.1403,0.1712 -0.5032,0.2873 -1.0184,0.4074 l 0.082,-0.2444 0.937,-0.3259 z m 8.5959,0.1222 c 0.1067,0.1844 0.2375,0.3374 0.3667,0.4889 l 0,0.1222 0.1629,0.041 c 0.068,0.069 0.1302,0.1436 0.2037,0.2037 l -0.1629,0.6518 -0.2037,-0.041 c 0.071,-0.2667 -0.1677,-0.4926 -0.6111,-0.6111 l 0.2444,-0.8555 z m 1.0185,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5812,0.041 0.4482,0.1222 -0.041,0.2037 -0.4889,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1223,0.4481 0.2444,0.8963 -0.4481,0.7333 0.3259,-0.1222 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 -0.2037,-0.2444 -0.2445,-0.082 -0.082,0.4481 -0.2444,-0.041 0.6518,-2.4036 z m -1.2221,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5703 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6925,0.163 0.082,-0.2037 -0.6925,-0.2037 z m -28.6802,0.082 c 0.026,0 0.055,0 0.082,0 -0.126,0.1796 -0.3024,0.329 -0.5296,0.4481 l -0.041,-0.2037 c 0.1448,-0.1144 0.3062,-0.2067 0.4889,-0.2444 z m 13.3623,0.2037 c 0.1273,0.1138 0.2392,0.2232 0.2852,0.3259 l -0.2852,-0.082 0,-0.2444 z m -12.9549,0.2037 0.041,0 0.3259,0.1222 c 0.029,0.1064 0.051,0.1975 0.082,0.2852 l -0.2037,0.774 -0.2037,-0.041 c 0.1427,-0.5334 0.01,-0.858 -0.2852,-0.937 l -0.2037,0.082 0.041,-0.1629 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5666,0.041 0.082,0.2444 -0.1222,-0.041 0.041,-0.2037 z m 13.4439,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.163,0.1629 0,-0.4888 z m 8.5551,0 0.3667,0 -0.041,0.1629 -0.4074,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0185,0 0.4074,0 0,0.2037 c -0.1951,0 -0.3609,0.036 -0.4889,0.082 l 0.082,-0.2852 z m -19.4324,0.082 0.1629,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8104,0.1222 0,0.5296 -0.041,0.041 -0.041,0.163 -0.2444,0 0.2037,-0.6926 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1223 -0.2444,0 -0.2852,-0.041 -0.082,0.041 -0.2851,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2852 z m 3.0555,0.1629 -0.082,0.3667 -0.3667,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.044,0 c 0.6945,0.3642 0.9331,1.0148 0.6925,1.9148 l -0.4888,-0.1222 -0.163,0.5296 0.3667,0.5703 -0.8555,1.2629 0.2037,0.041 -0.2445,0.1222 -0.082,0.2852 0.163,1.3036 -0.5704,0.2445 0.2037,0.041 -0.3666,0.5703 c -0.1387,0.963 0.161,1.5036 0.937,1.7111 l -0.2445,0.1629 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2036,-0.041 0.1629,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.163,-0.611 0.2037,0.041 -0.082,0.4481 0.6925,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2445,-0.8147 0.4074,0.1222 0.2036,-0.8148 -0.4073,-0.1222 0.082,-0.3667 0.4481,0.1222 0.082,-0.3666 -0.4074,-0.1222 0.163,-0.6111 c 0.3695,0.099 0.5983,-0.1382 0.8147,-0.6518 0.1069,-0.4 -0.01,-0.6148 -0.4481,-0.7333 l 0.163,-0.6111 z m -24.5248,0.041 0.4889,0.1223 -0.4074,0.5703 -0.2445,-0.082 0.163,-0.6111 z m 23.3026,0 c 0.1377,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.7029,0.082 0.6518,0 0.2037,0.2445 0.163,0 -0.163,0.6111 -0.6111,0 -0.2444,-0.8556 z m 5.7034,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8887,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2444,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6366,0.082 0.6518,0.3667 -0.2852,1.0185 -0.2037,-0.082 -0.2444,-0.937 0.082,-0.3667 z m 20.899,0 0.4889,0.1223 0.3666,1.1406 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 -0.4481,-0.1222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5703,0.2444 0.082,-0.3666 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5704,-0.3259 0.082,-0.2037 0.4074,-0.774 c 0.069,-0.5531 -0.1193,-0.879 -0.4889,-0.9777 l 0.1223,-0.3667 0.4888,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4482,-1.5888 z m -18.9843,0.041 0.4074,0.1222 -0.041,0.2037 -0.4074,-0.1222 0.041,-0.2037 z m 11.2032,0 0.1629,0 c 0.066,0.058 0.1536,0.1174 0.2445,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2852,-0.5296 0,-0.041 z m -19.9621,0.041 0.3259,0.4889 -0.2444,-0.2444 -0.2037,-0.041 0.1222,-0.2037 z m 1.1,0.082 0.1629,0.041 0,0.163 -0.1629,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0837,0 c 0.044,0.1029 0.088,0.1838 0.163,0.2037 l 0.2037,0.041 0,0.4482 -1.711,6.3552 -0.4889,-0.1222 0.2852,-0.1222 0.041,-0.2037 0.6925,-3.4628 0.2852,-0.1222 0.041,-1.0592 0.4889,-1.9555 z m 1.0185,0 0.2037,0.041 -0.2037,0.6519 -0.2037,-0.082 0.163,-0.5704 0.041,-0.041 z m -15.6437,0.1223 0.041,0.4481 -0.1222,0.041 -0.082,-0.3259 0.1629,-0.163 z m 12.792,0 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -9.5736,0.041 c 0.1346,0.034 0.3236,0.061 0.4888,0.082 l -0.1222,0.4888 -0.4481,-0.1629 0.082,-0.4074 z m -20.9806,0.3259 0.4889,0.1222 -0.082,0.2037 -0.163,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5703 l -0.2036,-0.8148 0.041,-0.3259 z m 3.2999,0.041 0.4481,0.082 c -0.1069,0.3999 -0.01,0.695 0.2852,0.774 l -0.041,0.2037 c -0.4434,-0.1185 -0.7027,-0.1037 -0.774,0.163 l -0.2037,-0.041 -0.082,-0.6111 0.3666,-0.5704 z m 16.8251,0.041 0.2852,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7697,0.1629 0.2037,0.041 -0.041,1.0592 -0.4074,-0.1222 0.2444,-0.9777 z m 20.125,0.2037 0.4481,0.163 -0.041,0.1629 -0.4888,-0.1222 0.082,-0.2037 z m 3.0962,0 0.2037,0.041 -0.4482,0.937 -0.2037,-0.041 0.2037,-0.8148 0.2445,-0.1222 z m -19.514,0.1222 0.937,0.041 -0.1222,0.5704 -0.9777,0 0.1629,-0.6111 z m 8.5959,0.163 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3629,0 0.3259,0 0,0.2037 -0.3667,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2852,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1327,-0.4344 0.163,-0.6111 z m -4.3184,0.1629 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m 32.306,0 0.2037,0.041 c -0.107,0.4 -0.01,0.6951 0.2851,0.7741 l -1.4258,3.5035 0.2037,0.2445 -0.041,0.2036 -0.5296,0.8963 -0.2037,-0.041 0.1629,-1.4259 0.2444,-0.1222 0.1223,-0.4481 0.6925,-3.4221 0.2852,-0.2037 z m -35.3614,0.1223 0.1222,0.8555 0.2037,0.1222 c -0.012,0.096 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1372 0.041,0.2037 l -0.3666,0.1629 c -0.01,-0.043 -0.032,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.163,-1.3444 z m 9.4514,0.041 0.6111,0.1629 -0.041,0.2037 -0.6925,0.082 0.1222,-0.4481 z m -4.8071,0.2444 0.2036,0.082 -0.1629,0.5296 -0.2037,-0.041 0.163,-0.5704 z m 28.9653,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9778 z m -20.4917,0.1222 0.3667,0.5296 -0.163,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.412,0.5666 -0.8555,0.4481 0.107,-0.4 -0.01,-0.6555 -0.4481,-0.774 l 0.041,-0.2037 0.4074,0.1222 0.1629,0.2444 c 0.08,-0.3 0.4464,-0.4543 1.1,-0.5296 z m 10.8366,0.2037 0.1222,0 0,0.1222 -0.1222,-0.1222 z m 13.1179,0 0.8962,0.2444 -0.4481,1.7518 c -0.2955,-0.079 -0.3768,-0.5444 -0.1629,-1.3444 l -0.4482,-0.082 0.163,-0.5703 z m -6.1516,0.041 0.2852,0.5296 -0.041,0.2037 -0.2852,-0.5703 0.041,-0.163 z m -28.5579,0.082 -0.2037,1.6296 -0.8148,0.2444 0.2444,-0.8963 c 0.4491,-0.2229 0.7309,-0.5468 0.7741,-0.9777 z m 0.6925,0 0.2445,0.082 -0.082,0.3666 -0.2852,-0.082 0.1222,-0.3666 z m 21.8768,0.041 0.163,0.041 0,0.2444 -0.4074,0 0.2444,-0.2851 z m -9.5329,0.041 0.2037,0 0.163,0.2444 -0.2852,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9663,0.2444 0.4888,0.1222 -0.082,0.2445 -0.5296,0.937 -0.1629,-0.2445 -0.2037,-0.082 -0.5296,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.6111,0.4482 l -0.163,-0.2445 -0.2037,-0.041 -0.2444,0.1222 0.2037,-1.6295 0.6111,0.1629 0.1222,-0.4073 c 0.739,0.1975 1.156,0.074 1.2629,-0.326 z m 2.8517,0.1222 0.2037,0.082 -0.082,0.3667 -0.2444,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3667 -0.2445,-0.041 0.1223,-0.4074 z m 6.6404,0.041 0.2037,0.082 -0.082,0.4074 -0.2444,-0.041 0.1222,-0.4481 z m -9.2884,0.1223 0.2037,0.082 -0.2445,0.082 0.041,-0.163 z m -0.041,0.2851 0.1629,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2066 -0.13,0.3083 -0.326,0.3667 l -0.5296,0.041 0,-0.163 0,-0.041 0.8556,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1748,0.1109 0.2037,0.2037 l -0.2445,0 0,-0.2037 z m 1.548,0 0.4074,0 0.082,0.1222 -0.2037,0.8148 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.1629,-0.2444 0.1222,-0.4481 c 0.1892,0.051 0.3495,-0.044 0.4889,-0.2445 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.099,0.3379 -0.3273,0.5986 -0.6518,0.7333 l -0.1222,-0.041 0.4481,-0.774 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.1222 c 0.2001,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3667 -0.2037,-0.041 0.082,-0.3667 z m -26.8469,0.082 0.4074,0.1222 -0.1222,0.4482 -0.4074,-0.1222 0.1222,-0.4482 z m 9.7366,0.1222 0.1629,0 -0.1629,0.5704 0,-0.5704 z m -11.9772,0.163 -0.082,0.3666 0.4074,0.1223 0.1222,-0.3667 -0.4482,-0.1222 z m 4.9701,0.041 0.6926,0.2037 -0.1223,0.3666 0.4482,0.1223 0.1629,-0.6111 0.3259,0.3666 c -0.3477,0.1723 -0.5886,0.4468 -0.7333,0.8148 -0.062,0.026 -0.088,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1402,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2036,-0.041 c 0.071,-0.1146 0.1184,-0.2814 0.1629,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2444 -0.4074,-0.1222 0.082,-0.2444 z m -14.4215,0.2037 0.1222,0.041 c -0.043,2e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2444 0.4481,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.163 z m 20.1657,0 0.163,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.163,0.2445 0.2037,0.041 c 0.1185,0.032 0.2232,0.042 0.3259,0.041 -0.1474,0.093 -0.295,0.1253 -0.4889,0.082 l -0.2037,0.6518 c 0.3877,0.088 0.6346,0.2189 0.7741,0.4481 l -0.4889,0.2444 0.4074,0.082 0.082,-0.2851 c 0.1221,0.2248 0.1522,0.5025 0.041,0.8555 l 0.6518,0.1629 -0.3666,1.1 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2445,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2852,-0.326 -0.2852,-0.041 -0.1222,0.4889 -0.2851,-0.082 2.485,-7.7811 0.2445,-0.041 -0.2852,0.9777 0.6518,0.1222 0.4074,-1.3036 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1222 0.2852,-0.041 0.082,-0.2037 -0.2445,-0.082 0.163,-0.5704 -0.2037,-0.2851 0.082,-0.2037 0.2852,-0.082 z m 6.6812,0.041 0.2037,0.041 -0.041,0.1222 -0.163,-0.1629 z m 7.8626,0 0.041,0.163 -0.2852,-0.082 0.2445,-0.082 z m -20.0435,0.1222 0.4481,0.7741 -0.3259,0.1629 -0.163,-0.041 0.041,-0.8962 z m -0.6926,0.041 0.2037,0.041 -0.1222,0.4482 -0.2037,-0.041 0.1222,-0.4482 z m 19.8806,0.163 -0.082,0.2444 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3851,0.1222 0.082,0.1222 0,0.2852 -0.4482,-0.1222 0.163,0 0.2037,-0.2852 z m 3.8702,0.1222 0.2444,0.082 0,0.2852 0,0.6518 0,0.1222 -0.3259,0.1223 -0.4074,-0.082 0.2852,-1.1407 0.041,0 c 0.064,-0.01 0.1027,-0.032 0.1629,-0.041 z m -25.3804,0.1222 0.3667,0.4889 -0.4889,-0.1222 0.1222,-0.3667 z m 35.4021,0.041 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 0.1222,-0.3667 z m -11.4476,0.1223 -0.041,0.2037 -0.774,0.082 -0.2037,-0.082 0,-0.041 1.0184,-0.163 z m 6.4367,0 -0.041,0.2037 0.4074,0.082 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3667,0.082 -0.2445,0.6926 -0.3259,-0.082 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6067,0.082 0.2037,0.041 -0.3667,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2444,-0.5704 l 0.041,-0.3259 0.3666,-0.4888 z m 10.3069,0.082 0.2444,0.082 -0.1222,0.4481 -0.2852,-0.041 0.163,-0.4888 z m 2.1184,0.041 0.2444,0.041 -0.082,0.2444 0.041,0.163 c -0.01,0.1969 0.032,0.3372 0.1223,0.4481 l 0,0.082 -0.163,0 -0.4074,0.4481 -0.2037,0 0.2445,-0.8555 0.1629,-0.2852 -0.041,-0.041 0.082,-0.2444 z m 1.3851,0.041 0.2445,0.2852 0,0.2851 c -0.1626,-0.1174 -0.281,-0.2534 -0.4074,-0.3666 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2852,0.041 -0.163,0.4889 -0.2444,-0.082 0.1222,-0.4482 z m 13.9734,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.163 -0.2037,0 c 0.013,-0.1553 0.042,-0.3218 0.041,-0.4481 z m -16.54,0.082 -0.1222,0.3666 -0.041,1.4259 -0.6518,0.8148 0.3666,0.082 -0.4481,0.1222 -0.082,0.2444 0.2852,0.3259 -0.041,0.2037 -0.5703,0.6111 0.082,0.9777 -0.8556,1.4259 0.2852,0.2852 -0.6111,-0.1222 0.4482,-1.5481 -1.5074,0.8555 0.2852,0.2852 -1.0185,0.4481 c -0.1111,-0.2193 -0.218,-0.4175 -0.3259,-0.6518 0,-0.011 0.01,-0.03 0,-0.041 l 0.1222,-0.7741 0.2852,0.082 0.6926,0.4482 c -0.2006,-0.6795 -0.5593,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6926 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.1079,-0.4497 0.1629,-0.6518 l 0.163,-0.1222 0.041,-0.2037 -0.041,-0.1222 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.6111 0.2165,-0.041 0.45,-0.155 0.6925,-0.3666 -0.087,0.5222 -0.036,0.8327 0.2445,0.8962 l -0.3259,0.2037 -0.041,0.082 c -0.1805,0.1124 -0.3752,0.2435 -0.5296,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.326,1.6703 0.5704,0.1222 0.1222,-0.4074 0.4481,-0.2037 -0.2851,-0.2851 -0.2852,-0.082 0.082,-0.2037 1.5073,0.1222 0.2037,-0.6926 -0.5296,-0.1222 0.1222,-0.4074 0.5704,0.1222 0.3666,-1.1406 0.2445,-0.163 -0.2037,-0.041 0.4888,-1.5481 0.3259,-0.1222 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3666 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.163,0.2444 0.2037,0.082 0.3259,-0.1222 -0.041,0.163 c -0.3962,0.037 -0.7256,0.1178 -0.9777,0.2036 l -0.041,0 -0.163,-0.041 0.2852,-0.4481 0.2444,-0.082 z m -12.0179,0.082 0.6111,0.1222 -0.1223,0.4074 -0.4888,-0.5296 z m 3.9516,0.1222 0.326,0.082 -0.041,0.1629 -0.2852,0.082 0,-0.041 0,-0.2851 z m 4.8072,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8104,0.082 0.2851,0.082 -0.082,0.6111 -0.3666,0.1222 0.041,-0.4074 0.1222,-0.4074 z m 29.5764,0.041 0.2037,0.041 -0.1223,0.3666 -0.2036,-0.041 0.1222,-0.3666 z m -7.4552,0.3259 0.4073,0.1222 -0.082,0.4481 -0.4073,-0.2444 0.082,-0.3259 z m -26.3581,0.041 0.4074,0.1222 -0.082,0.2037 -0.4074,-0.1222 0.082,-0.2037 z m 1.6703,0 0.2037,0.2444 -0.041,0.2037 -0.3259,-0.3259 0.1629,-0.1222 z m 18.1695,0.041 c 0.1619,0.088 0.2758,0.1839 0.4889,0.2852 -0.019,0.058 -0.041,0.1396 -0.041,0.2037 l -0.5296,0 c 0.031,-0.1732 0.06,-0.3361 0.082,-0.4889 z m -3.2591,0.2037 0.163,0 0,0.041 -0.163,-0.041 z m -12.1402,0.2037 -0.082,0.5703 -0.041,0.2445 -0.2851,-0.082 0.041,-0.6111 0.3666,-0.1222 z m -3.2998,0.082 0.2444,0.041 -0.1222,0.4889 -0.2852,-0.041 0.163,-0.4889 z m 10.7143,0.041 0.7333,0.1629 0,0.082 -0.082,0.2445 -0.082,0.1222 0,0.163 0,0.041 -0.1222,0.2851 -0.082,0 -0.2037,-0.2851 c 0.017,-0.3234 -0.065,-0.5992 -0.1629,-0.8148 z m 20.0028,0 c -0.1782,0.6667 0.096,1.3875 0.6926,2.1184 l 0.2444,-0.1222 0.163,0.2444 -0.041,0.163 c -0.2464,-0.066 -0.4958,0.012 -0.6926,0.1629 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3667,0.1223 c 0.1402,-0.4439 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2851,-0.2037 c 0.2164,-0.5136 0.4452,-0.7099 0.8147,-0.6111 l 0.1223,-0.4074 -0.6111,-0.1629 0.8555,-0.6518 z m 2.4036,0.041 0.3259,0.4889 -0.1222,0.4481 -0.2852,-0.5704 0.082,-0.3666 z m -17.9658,0.082 0.2851,0.082 -0.1222,0.4074 -0.2444,-0.3259 0.082,-0.163 z m -14.2586,0.041 0.2851,0.041 -0.082,0.2037 c -0.113,0.033 -0.218,0.087 -0.3259,0.1222 l 0.1222,-0.3667 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6926,0.082 c 0.022,-0.1067 0.02,-0.184 0.041,-0.2852 z m -3.9924,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.6769,0 0.2037,0.041 -0.2037,0.8148 -0.2037,-0.041 0.2037,-0.8148 z m -28.4358,0.1629 0.5704,0.1223 -0.2445,0.6925 -0.3666,-0.6111 0.041,-0.2037 z m 2.1592,0.041 -0.082,1.1407 0.6111,0.163 0.082,-1.1814 -0.6111,-0.1223 z m 19.5546,0.1223 0.163,0.041 -0.1222,0.4481 -0.2037,-0.041 0,-0.041 0.041,0 0.1222,-0.4074 z m -13.4438,0.041 0.1222,0 0.2852,0.7333 -0.1222,0.1629 -0.163,0 -0.2037,-0.6111 c 0,-0.011 -0.01,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.134 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.081,0.4888 -0.3259,0 0,-0.4888 z m 4.0332,0 0.2444,0.041 -0.041,0.1629 -0.2444,-0.082 0.041,-0.1222 z m -25.7062,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.1723,0.082 -0.041,0.1629 0.041,0.041 0,-0.2037 z m -21.5509,0.041 0.082,0 0,0.3259 -0.2037,-0.041 0.1222,-0.2852 z m -10.918,0.2444 c 0.2732,-0.046 0.6795,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3875,-0.088 -0.75,0.1822 -0.937,0.774 l -0.5703,-0.8962 c 0.053,-0.1665 0.1749,-0.2803 0.4481,-0.3259 z m 14.0957,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.774,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.1549,0.041 0.4888,0.1222 -0.2852,1.0185 -0.3666,-0.4889 0.163,-0.6518 z m -17.9659,0.041 0.2444,0.041 -0.2851,0.082 0.041,-0.1222 z m 10.8366,0 0.2036,0.041 -0.041,0.1222 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2851 z m 9.5736,0.1222 -0.1222,0.082 -0.082,0.163 0.2037,0.2444 0,-0.4889 z m -13.8105,0.082 0.4074,0.082 -0.3259,0.4481 -0.3259,-0.082 -0.041,-0.1629 0.2851,-0.2852 z m -10.4291,0.041 0.1222,0.082 0,0.2444 -0.163,-0.041 c 0.032,-0.1024 0.017,-0.1885 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1223,0.6111 c -0.1737,-0.1302 -0.3351,-0.2839 -0.4888,-0.3666 -0.043,-0.2456 -0.071,-0.5152 -0.041,-0.8148 z m -8.5552,0.041 0.3667,0 0,0.2444 -0.3667,0 0,-0.2444 z m -16.4585,0.082 0.163,0.041 -0.1223,0.4074 -0.2851,-0.082 0.082,-0.2852 0.1629,-0.082 z m 4.1961,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.5209,-0.509 -0.5296,-1.3036 z m 1.7925,0.163 -0.2444,0.6925 0.6518,0.163 0.2037,-0.6926 -0.6111,-0.1629 z m 3.0147,0.2444 c 0.5369,0.1214 0.591,1.2374 0.163,3.2998 -0.1491,0.2487 -0.3559,0.7021 -0.5704,1.1407 l -0.5703,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5931,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.163,-1.6703 z m 9.6959,0.041 0.1222,0.1222 -0.2445,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1223 0.2445,0.2445 0.3666,-0.4481 z m 5.3775,0 c 0,0.306 -0.1563,0.4481 -0.5704,0.4481 l 0,0.2037 0.4074,0 -0.3666,0.6518 -0.4074,-0.082 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.4074,-0.774 c 0.1595,-0.01 0.3126,-0.041 0.4888,-0.041 z m -13.4438,0.041 0.2851,0.041 -0.4481,1.2629 -0.082,0.3259 c 0.198,0.081 0.3666,0.1667 0.5296,0.2444 l -0.2444,0.4482 -0.1223,-0.2037 -0.3259,0.1629 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.163,-0.4888 0.041,0.041 0.2851,0 0.163,-1.3037 z m -8.1886,0.082 0.5704,0.1222 -0.163,0.4074 -0.4074,-0.5296 z m 13.1587,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.3591,0 0.3259,0 c -0.046,0.2543 -0.075,0.4486 -0.082,0.6518 l -0.6111,0 0.082,-0.5703 0.2852,-0.082 z m -3.1369,0.082 0.082,0.4889 c -0.2043,-0.1068 -0.3489,-0.235 -0.4482,-0.4074 l 0.3667,-0.082 z m -1.7518,0.082 -0.1222,0.4888 -0.163,0 0,-0.4073 0.2852,-0.082 z m 18.0066,0.041 0.2037,0.041 -0.163,0.6518 -0.2037,-0.082 0.163,-0.6111 z m 0.6518,0 0.4889,0.1222 -0.4074,1.4666 -0.163,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2444,0.041 l 0,-0.3667 0.3259,-1.2221 z m -21.225,0.041 0.1223,0 0,0.041 -0.1223,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.1343,0.08 0.2037,0.1222 l -0.2445,0.041 0.041,-0.1629 z m -12.1809,0.082 0.2851,0.041 -0.2851,0.8962 -0.2852,-0.041 0.2852,-0.8962 z m 1.7925,0.163 -0.1222,0.4481 0.611,0.1222 -0.4888,-0.5703 z m 19.5954,0 c 0.045,0.041 0.1551,0.1194 0.2037,0.1629 l -0.082,0.5296 -0.8963,2.8517 -0.5703,0.8148 0.3666,1.0592 -0.6518,-0.1629 -0.3667,2.0776 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.163,-1.4666 0.4889,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2036,-0.1222 -0.4073,-0.5703 0.3666,-0.1222 0.2444,0.041 0.082,-1.1407 0.3667,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1222,0.1629 -0.163,-0.041 0.041,-0.1222 z m 1.8332,0.1222 0.082,1.6295 0.4889,0.1222 0.2037,-0.2036 -0.2445,0.8147 c -0.1146,-0.1897 -0.1569,-0.2813 -0.2851,-0.4888 l -0.2037,0.082 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4074,-0.6519 0.4481,-1.2629 z m 0.5296,0 0.3667,0.082 0,0.082 -0.2445,0.3666 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.1629 0.2037,0.041 -0.1222,0.4482 -0.2037,-0.082 0.1222,-0.4074 z m 1.7926,0.2445 0.2036,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.1629,0.1222 l -0.3667,-0.082 0.326,-1.2222 z m -32.1023,0.041 0.2445,0.082 -0.9778,3.0961 -0.2444,-0.041 0.9777,-3.1369 z m 29.5764,0.1629 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4481 0.163,-0.163 z m -14.0141,0.163 0.2037,0 0,0.4888 -0.2037,0 0,-0.4888 z m 11.692,0.082 0.2037,0.082 0.041,0.2444 -0.2852,-0.2037 0.041,-0.1222 z m -24.2803,0.082 -0.163,0.4481 0.6111,0.163 0.1629,-0.4889 -0.611,-0.1222 z m 27.132,0.041 0.2037,0.041 0.041,0.6925 -0.4073,-0.1222 0.1629,-0.6111 z m -29.0468,0.041 0.2852,0.041 -0.2037,0.6518 -0.2444,-0.082 0.1629,-0.6111 z m 31.5727,0.2037 0.4073,0.1222 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.082 0.082,-1.1407 c -0.055,-0.013 -0.1121,-0.01 -0.163,0 l 0.082,-0.2852 z m -19.5547,0.2444 0.041,0 0,0.4481 -0.2037,0 0.163,-0.4481 z m -5.5405,0.041 0.6926,0.163 -0.5704,1.1814 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9479,0.2037 0.4074,0 0,0.4889 0.2444,0 0.041,-0.041 -0.041,0.2851 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3666,-0.082 -0.163,0.041 c 0.1408,-0.1215 0.2037,-0.2569 0.2037,-0.4481 z m 13.8919,0 0.2445,0.041 0.1222,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1222,-0.4073 z m -11.8142,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2037,-0.2036 c -0.1035,0 -0.1645,0.01 -0.2444,0.041 l 0.2036,-0.6519 0.4482,-0.1222 z m 0.774,0 0.4889,0 0.1629,0.041 -0.2444,0.774 -0.5296,0.3259 -0.2444,0 0.082,-0.2037 0.1629,0 0,-0.2036 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3667 z m 2.8517,0 0.6519,0 -0.082,0.2037 -0.6111,-0.1222 0.041,-0.082 z m -22.5286,0.1629 0.6519,0.163 -0.4889,0.6111 -0.3667,-0.082 0.2037,-0.6926 z m 14.9512,0.1223 0.2037,0 0.3666,0.082 -0.4073,0.2037 -0.041,0.2037 0.041,0.1222 -0.163,0.041 -0.2037,0 0.2037,-0.6519 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.8214,0.1629 0.2445,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.082 -0.2444,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2037,-0.082 0.163,-0.4481 -0.5704,-0.1222 -0.041,0.2037 0.3259,0.8148 -0.3259,0.1222 c -0.1051,0.3329 -0.023,0.6072 0.2852,0.774 -0.04,0.1099 -0.074,0.22 -0.1222,0.3259 l -0.2445,0.082 0.1223,-0.4074 -0.5704,-0.1222 -0.2444,1.7518 c -0.1708,0.1743 -0.368,0.3712 -0.5704,0.5296 l 0.2037,-0.2852 c 0.09,-0.6137 -0.1265,-0.9903 -0.6111,-1.0999 l 0.1223,-0.4074 0.611,0.1222 0.1223,-0.2852 -0.3259,-0.2851 0.4481,-0.1223 0,-1.1814 0.5296,-1.7925 z m -27.3765,0.041 0.8148,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0184 0.1222,-0.4074 z m 2.4851,0.041 0.5703,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.0207,0.1222 0.2852,0.041 -0.2037,0.6926 -0.2852,-0.041 0.2037,-0.6926 z m -23.3026,0.041 0.2037,0 0,0.2037 -0.2445,-0.041 0.041,-0.1629 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8142,0.2852 -0.3666,1.3444 -0.041,0 0.4074,-1.3444 z m -11.4883,0.082 0.2444,0.082 -0.082,0.2037 -0.2852,0.1222 0.1222,-0.4074 z m 10.3069,0 0.041,0 c 0.027,0.1987 0.01,0.4181 -0.041,0.6518 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.1629,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.163,0 -0.4481,0.4481 -0.2037,0 0.4888,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5297,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.9028,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1383,-0.184 -0.2037,-0.2851 z m 10.7143,0.2037 -0.082,0.2852 -0.041,0.082 -0.041,0.1222 -0.1629,-0.2037 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.163 c -0.028,-0.054 -0.092,-0.1467 -0.1222,-0.2037 z m -4.1553,0.041 0.6111,0.1222 -0.081,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.1629,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2445,-0.9777 z m -29.4542,0.082 1.2221,0.082 -0.2037,0.6111 -1.2629,0 0.2445,-0.6926 z m 10.918,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2993,0.082 0.2852,0.4074 -0.2852,0.4481 -0.2444,-0.041 0.2444,-0.8148 z m 1.1407,0.3259 0.1222,0.6111 -0.2852,-0.082 0.163,-0.5296 z m 4.1554,0.041 0.1222,0 c -0.064,0.204 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8963 -0.4074,0.4888 -0.2037,-0.041 0.3259,-1.1814 -0.4481,-0.1222 0.2444,-0.8148 0.4074,0.1222 0.081,-0.2852 z m -17.2326,0.041 0.3667,0 0,0.2852 -0.2445,0.082 -0.1222,-0.041 0,-0.3259 z m 0.7741,0 0.4074,0 -0.163,0.5703 -0.2444,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.0369,0 0.4074,0 -0.1222,0.6926 c -0.146,0.1526 -0.3488,0.2496 -0.5704,0.3259 l -0.611,-0.4482 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.414,0 0.5703,-0.1928 0.5703,-0.6518 z m -22.4471,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1223,-0.4074 z m 21.4287,0 0.2852,0.163 -0.082,0.2037 -0.2852,-0.041 0.082,-0.326 z m -2.3221,0.082 0.2851,0.082 -0.2851,0 0,-0.082 z m -14.2994,0.3667 0.4889,0.5296 -0.2037,0.6518 -0.041,0 -0.2444,-0.3259 -0.5296,-0.1222 c -0.048,0.151 -0.1392,0.2794 -0.2445,0.3666 l -0.8555,-0.2444 c -0.047,-0.2318 -0.2221,-0.4009 -0.6111,-0.4889 l 0.041,-0.2037 0.5704,0.1222 0.2037,0.2445 c 0.1052,-0.3329 0.5689,-0.4461 1.4258,-0.5296 z m 3.1777,0.3259 0.3666,0.4481 -0.6518,-0.1222 0.2852,-0.3259 z m 21.673,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.1636 -0.1222,0.2444 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3443,0.1222 0.2036,0.3666 -0.041,0.2037 -0.2444,-0.3666 c 0.023,-0.07 0.061,-0.132 0.082,-0.2037 z m -25.91,0.4074 0.2445,0.041 -0.1223,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -1.5073,0.082 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1177 -0.163,-0.163 z m -3.9109,0.082 c 0.1983,0.045 0.3656,0.1069 0.5296,0.1222 l 0.4888,0.6111 0,-0.4889 -0.1222,-0.1222 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2001 0.3052,0.427 0.4889,0.6518 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.1629 -0.2852,-0.041 -0.6518,0.2851 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4889,-0.4889 l 0.082,-0.2036 -0.3666,-0.082 c -0.1552,-0.1722 -0.3026,-0.3448 -0.4482,-0.5297 l 0.6519,0.1223 0.1629,-0.4889 z m 11.7328,0.2444 0.4481,0 0,0.4889 -0.4481,0 0,-0.4889 z m 11.692,0 0.163,0 0,0.1222 -0.163,-0.1222 z m -4.4405,0.041 0.1629,0.2852 -0.041,0.1629 -0.9777,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1963 0.4889,-0.4073 l 0.3666,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.1569,0.2268 0.1629,0.3667 l -0.6925,0 0.1629,-0.2852 0.3667,-0.082 z m 17.1103,0.041 0.163,0.041 -0.041,0.163 -0.163,-0.082 0.041,-0.1222 z m -21.1435,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2445,0.2852 l -0.3667,0 0,-0.2852 z m 11.6921,0.4481 0.5296,0.1223 -0.082,0.2444 -0.5296,-0.1222 0.082,-0.2445 z m -13.0365,0.082 0.163,0.1223 -0.081,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2445,0.041 0.1222,0.082 0.1629,0 -0.082,0.2445 -0.3666,0.2037 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2037 -0.1222,-0.2852 0,-0.082 z m 25.4211,0.041 0.1222,0.4482 -0.1222,0.2851 0,-0.7333 z m -16.1734,0.163 -0.041,0.2037 -0.041,0.4889 -0.937,-0.1223 -0.082,-0.081 0.7741,-0.3666 -0.3667,-0.082 0.6926,-0.041 z m -3.5035,0.041 -0.041,0.1222 -0.2852,-0.082 0.3259,-0.041 z m 4.7664,0 0.4482,0.082 0,0.041 0,0.2037 c -0.1905,0 -0.299,0.048 -0.4074,0.1222 l -0.041,-0.4481 z m -2.5665,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2444,-0.2444 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7887,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.163,0.2444 0.2852,0 0.1629,-0.1222 0.2852,0.2852 -0.3259,0.3666 c -0.7619,0.018 -1.1994,0.1248 -1.2629,0.326 l -0.082,0.2037 0.2851,0.082 0.5297,0 -0.2445,0.2851 c -0.3067,0 -0.7246,-0.1575 -1.1814,-0.3666 l 0.1222,-0.3259 -0.3666,-0.082 -0.3259,0.1629 c -0.3254,-0.1839 -0.6736,-0.4252 -1.0593,-0.6925 0.53,0.1198 0.9409,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.1629 1.3851,0.1629 l 0.082,0 0.163,0.041 0.041,-0.1629 0.1222,-0.1222 z m 1.9148,0.082 c 0.012,0.2782 0.175,0.4717 0.611,0.5704 l -0.041,0.1222 -0.1629,0.082 c -0.4016,-0.033 -0.7787,-0.07 -1.1,-0.082 0.1876,-0.1742 0.4654,-0.4656 0.6926,-0.6926 z m 25.1766,0 0.1222,0.041 -0.2444,1.0185 -0.1223,-0.041 0.2445,-1.0185 z m -10.9588,0.082 0.2445,0.082 -0.082,0.2852 -0.163,0 0,-0.3667 z m -20.8175,0.1222 c 0.2965,0.3446 0.6323,0.7123 0.9777,1.1 l -0.7333,-0.163 c -0.294,-0.2508 -0.5827,-0.5252 -0.8555,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2445 0.4481,0.7333 -0.3259,0 c -0.2314,-0.1354 -0.4738,-0.25 -0.6926,-0.4074 0.047,-0.067 0.091,-0.1469 0.1222,-0.2445 l 0.4482,-0.082 z m 23.2211,0.1629 0.5704,0.1222 0,1.1815 -0.4482,0.1222 -0.5296,-0.1222 0.4074,-1.3037 z m 11.2847,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2956,0.1222 0.2445,0 0,0.082 -0.2445,-0.041 0,-0.041 z m -19.6768,0.1223 c 0.029,0.01 0.054,0 0.081,0 l 0.082,0.082 -0.3667,0 0.2037,-0.082 z m 29.169,0.041 -0.041,0.3666 -0.2852,-0.082 c 0.1196,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2444,0.1629 -0.192,0.1594 -0.3681,0.3385 -0.5704,0.4889 -0.078,-0.08 -0.1397,-0.2017 -0.2037,-0.3259 0.1573,-0.079 0.2844,-0.1615 0.4482,-0.2445 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2967,-0.1111 0.5296,-0.2852 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1298,0.1453 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.042 -0.139,-0.078 -0.2037,-0.1223 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.1659,-0.1046 -0.2444,-0.1629 l 0.163,-0.041 0.041,-0.163 z m 10.0218,0.082 0.3666,0.2444 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.082 -0.2445,0.1222 -0.1629,0 0,-0.2037 z m -3.0962,0.1222 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2445,0.2852 0.082,0 0,0.4074 c -0.3616,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1557,0 0.2444,0 l 0,-0.3259 z m -6.4775,0.3259 0.6518,0 0,0.4889 -1.0184,0 0.3666,-0.4889 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1222 c -0.1062,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2444 z m 9.4107,0.041 c -0.02,0.2876 -0.041,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5704,-0.8148 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2444,-0.041 c 0.043,-0.093 0.1037,-0.1841 0.2444,-0.2444 z m -8.6366,0.163 0.6518,0 0,0.2037 -0.6518,0.2036 0,-0.4073 z m 1.0184,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.5851,0 0.3666,0 -0.3666,0.4073 -0.4889,0 0.4889,-0.4073 z m -15.1549,0.2037 0.041,0 0,0.2036 -0.4481,0 0,-0.041 0.4074,-0.1629 z m 3.3406,0 0.6111,0 0,0.2036 -0.6111,0 0,-0.2036 z m 4.9701,0 0.6111,0 0,0.2036 -0.6111,0 0,-0.2036 z m 3.911,0 0.6518,0 0,0.2036 -0.6518,0 0,-0.2036 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.163,0.4888 -0.5296,-0.1222 0.041,-0.082 c 0.1755,-0.071 0.415,-0.2008 0.6111,-0.2852 z m 5.296,0 c 0.072,0.09 0.1611,0.1484 0.2445,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2444,-0.1222 z m -32.6318,0.2851 0.6518,0 0,0.2445 -0.6518,0 0,-0.2445 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2445 0.4481,0 0,0.2851 -0.4481,0 0,-0.2851 z m 9.3292,0 0.6111,0 1.0185,0.2851 1.2221,-0.2851 1.3037,0 0,0.4888 -5.1739,0 0,-0.2037 1.0185,-0.2851 z m 4.522,0 4.6035,0 -0.4481,0.4888 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4888 z m 5.459,0 0.5704,0 0,0.2851 -0.5704,0 0,-0.2851 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.163 0.041,-0.041 z m -30.5134,0.2851 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6114-1"
+           transform="matrix(0.61596339,0,0,0.61596335,-406.90169,325.5369)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.30051804px;line-height:125%;font-family:'karabinE.';-inkscape-font-specification:'karabinE.';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#cccccc;fill-opacity:1;stroke:none;filter:url(#filter3530-9)"
+           d="m -163.14137,992.23552 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2036,0 -0.2036,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55511 0.6111,2.2407 0.082,0.5703 c -0.028,0.081 -0.061,0.1678 -0.082,0.2445 0.066,0.049 0.1079,0.1081 0.1629,0.1629 l 0,0.163 -0.2444,-0.082 c -0.024,-0.01 -0.057,0 -0.081,0 0.036,-0.1267 0.062,-0.2569 0.1222,-0.3667 l -0.163,-0.6111 -0.4073,0.082 0,3.8702 c 0.014,0 0.027,0 0.041,0 l 0.2037,-0.041 0.041,-0.041 0,0.8556 c -0.09,0.2617 -0.1903,0.502 -0.2852,0.6925 l 0,0.9777 0.2444,0.082 -0.041,0.163 -0.2037,-0.082 0,11.1217 0.163,-1.1814 0.1222,0.041 0,1.0185 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2445,0.3666 l -0.2037,-0.2444 -0.082,0 -0.1629,-0.6518 0,0.5703 -0.041,0 -0.2445,0.1222 0,0.8963 0.2852,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1223 0,0.2445 -0.3667,0 0,0.8555 -0.2852,0.082 0,0.2037 0.2852,-0.082 0,0.082 c 0.4141,0 0.5704,-0.1422 0.5704,-0.4482 l -0.2037,-0.2036 0.5296,0 -0.1223,0.081 -0.082,0.2444 0.1223,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3813,0 c 0.2347,-0.6383 0.527,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.163,0 -0.2444,-0.3259 0.082,-0.2444 -0.2444,0.082 -0.6519,0 -0.3259,0.1222 0,-0.041 -0.3666,-0.082 -0.2852,0.2037 -0.4481,-0.2037 0,-0.2445 1.0592,0 0,-0.2036 -0.2037,-0.2037 0,-0.2445 0.4889,0.163 -0.082,0.2037 0.5703,0.1222 0.2852,-0.041 0.6111,0.2037 -0.082,0.2444 0.2851,0.082 0.5704,-0.041 0.6518,0.2445 0,0.2036 c -0.3219,1e-4 -0.8163,0.3866 -1.3851,1.1815 l 18.5769,0 c 0.082,-0.08 0.1634,-0.1631 0.2444,-0.2445 0.2121,0.076 0.5041,0.165 0.7333,0.2445 l 1.4666,0 -0.2444,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5296,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1355,0.056 0.2037,0.082 l -0.041,0.082 1.3036,0 0.3667,-0.2445 -0.041,0.2445 2.5665,0 0.082,-0.2445 0.2444,0.041 -0.082,0.2037 0.4482,0 0,-1.3443 -0.082,0.2444 -0.2445,-0.041 0.1223,-0.4074 0.2037,0.082 0,-9.044 -0.1223,-0.041 0.1223,-0.5704 0,-1.711 -0.2852,0.082 -0.041,0.2037 0.2037,0.3259 -0.6111,1.1 -0.2037,-0.041 0.937,-3.5036 0,-1.5888 -0.2852,0.1222 -0.041,1.0592 -0.6518,2.3629 -0.5703,0.2851 1.1814,-4.3997 0.3666,0.5703 0,-1.3444 -0.1629,-0.041 0.1629,-0.5703 0,-1.8333 c -0.2597,-0.3921 -0.5238,-0.7828 -0.8147,-1.1407 l 0.8147,0.041 0,-1.2221 -0.2037,0.8555 -0.2444,-0.082 0.3259,-1.1814 0.1222,0.041 0,-3.5443 -0.082,0.2852 -0.4481,-0.1223 0.5296,-2.0369 0,-7.98483 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2852,-0.16296 0.082,-0.28517 c -0.3163,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.1,0 2.811,1.18142 -0.1222,0.40739 0.2852,-0.16295 0.6925,0.20369 -0.4888,0.81478 -0.2037,-0.0407 -0.163,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40739 0.3667,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2445,-0.0815 -0.2851,0.2037 -0.2445,-0.0407 -0.6925,-0.48887 -0.5704,0.36665 -1.5481,-1.2629 -1.8332,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2999,0 1.0185,1.54807 0.2037,0.0407 -0.163,0.69256 -0.4481,-0.12221 -0.082,0.20369 c 0.3276,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44813 -0.7333,-0.2037 -0.163,0.44813 0.4889,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 -0.1222,0.40739 0.4481,0.12221 -0.163,0.69256 c -0.4096,-0.10951 -0.697,0.12321 -0.937,0.69253 -0.022,0.084 -0.038,0.1752 -0.041,0.2445 l -0.2444,-0.2852 -0.2037,0.2852 c -0.01,-0.089 -0.01,-0.189 0,-0.2852 l 0.2037,0 0,-0.2037 -0.1629,-0.1629 c 0.014,-0.071 0.021,-0.1297 0.041,-0.20375 l 0.5296,0.16295 0.1629,-0.65181 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2852,-0.16295 0.081,-0.28518 -0.2037,-1.46659 0.6518,-0.24444 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2852,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6925,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48886 -0.082,0.44813 -0.3667,-0.57034 0.082,-0.36665 -0.4481,0 -0.8555,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.1629,-0.24443 0.2851,-0.12222 0.082,-1.18142 0.3667,-1.42586 -0.4889,0 -0.6111,2.36285 -0.2444,0 0.6111,-2.36285 -2.6073,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9987,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4354,0.62502 -0.774,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5703,-0.0815 0,-0.28517 c 1e-4,-0.20089 -0.2546,-0.36699 -0.774,-0.48887 l -0.041,-0.20369 -0.9778,0 c 0.001,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2786,-0.13728 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83278 0,-0.937 -0.041,0.041 -0.163,0.6111 0.2037,0.2851 z m -34.3429,-12.75131 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.2956,0.36665 0,0.48887 -0.4481,0 0.4481,-0.48887 z m 7.8219,0 0.082,0.0407 0.2037,0.89626 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1223,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.974,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24443 z m 13.0365,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8142,0.0407 0.4482,0.1222 -0.1223,0.48888 -0.4888,-0.12223 0.1629,-0.48885 z m -5.8256,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6519,-0.65182 1.1,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.7741,3.87019 -0.2851,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5704,0 0.163,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2852,-0.28517 1.3852,-5.21458 z m -17.7214,0.2037 0.2444,0 0.041,0.16295 -0.082,0.0407 -0.1222,0 -0.082,-0.20369 z m 14.5438,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2445,-0.0815 0.1223,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.8208,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.16295 c -0.074,0.27639 0.1418,0.51308 0.5704,0.65182 l 0,-0.5296 -0.5704,-0.12222 z m -6.07,0.32591 0.4481,0.12222 -0.3667,1.30364 -0.4481,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6518,0.20369 0,0.28518 -0.8555,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8332,0 -0.082,0.32591 -0.2851,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6519,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.1222 -0.4074,-1.3037 0.1223,-0.48883 0.2444,0.0407 -0.1222,0.48883 0.4481,0.1223 0.041,-0.2037 -0.2852,-0.81482 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48887 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3037,0 0.3666,0 0.4074,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.2922,0 0.6519,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4482,-0.12222 z m 10.144,0.36665 0.4888,0.12222 0.4074,0.57034 -0.6518,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.363,-0.37134 -0.2444,-0.81478 l 0.2851,-0.16295 0.041,-0.20369 0,-0.937 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5026,0.0407 0,0.40739 -0.2851,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2445,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7284,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1918,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4073,0 0,0.24443 -0.4073,0 0,-0.24443 z m 1.0592,0 0.8147,0 0,0.24443 -0.8147,0 0,-0.24443 z m 22.3656,0.0407 0.4481,0.12221 0.2852,0.28518 0.082,-0.40739 0.2444,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.163,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.6161,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.0023,0.0407 0.2852,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -20.4916,0.0407 0.3666,0 0,0.28517 -0.3666,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.1629,0.28518 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5521,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3667,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.163,-0.16296 z m -3.5035,0.0815 0.082,0.44812 -0.4482,0.12222 -0.041,-0.16295 0.326,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2851,1.0667 0.7124,1.54315 1.3037,1.38512 l 0.081,0.16295 -0.163,0.24444 -0.2444,-0.12222 c -0.5965,0.73087 -0.8709,1.45178 -0.6926,2.11845 l -0.8555,-0.65185 0.6111,-0.16296 -0.1222,-0.40739 c -0.3696,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6034,0 0,0.0815 -0.041,0.16296 -0.2036,-0.0407 0.2444,-0.20369 z m -10.5513,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2211,0.0407 0.4482,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.163,1.46659 -0.4074,0.57035 0.2037,0.2444 -0.3259,0.2037 0.3667,0.5704 -0.2852,0.1222 -0.2444,-0.041 -0.041,1.1407 -0.3259,1.1407 -0.4482,-0.163 -0.2037,0.6926 c 0.013,0.024 0.029,0.056 0.041,0.082 l -0.1222,0.081 0.163,0.041 c 0.083,0.2038 0.1422,0.4408 0.1629,0.6925 l -0.041,0.2037 -0.1629,-0.2444 -0.2852,-0.082 -0.041,0.041 0.2444,-1.5481 0.7741,-2.8517 0.4481,-0.81478 -0.2852,-1.05921 0.5296,0.16296 0.326,-2.07769 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2851,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.326,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.1629,0 -0.2037,0.28517 -0.2037,0 0.3666,-0.61108 1.2629,-0.2037 z m 4.8072,0 0.1629,0.65183 -0.2036,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0886,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.20369 z m 32.5911,0.40738 1.5074,1.34439 -0.1223,0.44812 -0.5296,-0.16295 -0.4888,1.79249 -0.2037,-0.041 0.4074,-2.48505 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4173,0.12222 0.041,0 0.2037,0.2037 -0.1629,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4073,0.12222 c -0.1394,0.12918 -0.3454,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4889,-0.24443 z m -4.6443,0.0407 0.6518,0.20369 0,0.44813 c -0.414,0 -0.6518,0.1829 -0.6518,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4476,0.0407 0.326,0.61109 -0.041,0.20369 -0.326,-0.61108 0.041,-0.2037 z m -18.088,0.0407 0.5703,0.28518 0.6519,2.36289 0,0.082 -0.3667,-0.5296 -0.2037,0 0.5704,0.8555 0.041,0.6518 0.2851,0.1222 -0.3666,0.5704 -1.1814,-4.39985 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2445,-0.0407 0.2852,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.163,-0.65182 0.1223,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36284 -0.2852,-0.1629 -0.8148,-3.05546 z m -7.8219,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4444,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.776,0.20748 -1.0756,0.74808 -0.937,1.71108 l 0.3667,0.5703 -0.2037,0.041 0.5703,0.2444 -0.1629,1.3037 0.082,0.2852 0.2444,0.1222 -0.2037,0.041 0.5703,0.8555 c -0.1409,0.1125 -0.2863,0.2395 -0.4481,0.4074 l -0.082,-0.2037 -0.4074,0.1222 -0.082,-0.3666 0.4074,-0.1223 -0.2037,-0.8147 -0.4481,0.1222 -0.2037,-0.8148 0.4074,-0.1222 -0.1222,-0.4481 -0.6519,0.2037 0.082,0.4481 -0.2037,0.041 -0.1629,-0.6111 c 0.1174,-0.7457 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.163 -0.4074,0.082 -0.1629,-0.6111 0.2037,-0.041 1.3444,-2.03691 z m 31.3282,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28134 -0.041,0.2037 0.2852,0.082 0.2851,-0.1222 0.2445,0.041 -0.6926,2.648 c -0.6159,-0.3229 -0.8481,-0.9056 -0.6111,-1.7925 l -0.2037,-0.082 0.2852,-0.1222 0.1222,-0.4889 0.082,-1.1814 -0.5703,-0.1222 -0.6926,2.6888 0.2444,0.2851 -0.3666,0.1222 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.5674 -0.1894,1.0843 -0.2444,1.5074 -0.1694,0.1075 -0.2849,0.3971 -0.4074,0.8555 l -0.3259,0.1222 -0.4482,-0.1222 -0.1629,-0.937 0.5703,-0.4889 0,-0.1222 c 0.055,0.088 0.1487,0.1672 0.2852,0.2037 l 0.2037,0.041 0.082,-0.2037 0.2444,-1.874 0.3667,-0.5296 0.7333,-3.6257 0.2444,-0.8963 -0.4481,-0.1222 -0.3667,1.3444 -0.3666,0.1222 0.2444,0.2852 -0.1222,0.4888 -0.5296,-0.1629 0.8148,-3.09618 z m -9.207,0.12221 0.2037,0.0407 -0.2445,0.89624 -0.2851,0.163 -0.2037,-0.082 0.5296,-1.01851 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2445,-0.0407 0.1222,-0.40739 z m -24.973,0.0815 0.2037,0.81474 -0.2037,0.041 -0.2444,-0.774 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2036,0.69254 -0.2037,-0.041 0.1629,-0.69254 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48891 -0.082,-0.3667 0.2851,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1223,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12222 0.7741,0.20369 -0.041,0.2444 -0.7741,-0.2037 0.041,-0.24439 z m -8.7181,0.0407 0.5703,0.16299 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.24449 z m -15.4808,0.0407 0,0.61109 0.4482,0 c 0,0.3379 0.036,0.6266 0.1222,0.8148 -0.2102,0.043 -0.4006,0.095 -0.5704,0.1629 l 0,-0.041 -0.3666,-0.4074 -0.6518,0.2037 c 0,-0.1101 -0.034,-0.2077 -0.082,-0.2851 l -0.2445,-0.8963 1.3444,-0.16295 z m 2.8925,0 0.2852,0.20369 0.2037,0 1.8739,-0.20369 0,0.20369 -0.2851,0.6518 c 0.3992,-0.2212 0.7009,-0.4734 0.8148,-0.77401 0.071,0.0934 0.1312,0.19371 0.2036,0.28521 l -0.3666,0.041 0,0.4481 0.4074,0 0.2444,0.2852 0.163,-0.2445 c 0.093,0.1068 0.1891,0.2221 0.2851,0.3259 l 0.041,0.163 -0.2037,-0.2037 -0.2444,0.1222 0.041,0.6926 -0.2444,0.1222 -0.082,0.163 -0.6518,-0.1223 c -0.065,-0.1287 -0.107,-0.2443 -0.1223,-0.3666 l 0.326,0 0.3666,0.082 0.041,-0.2037 -0.2852,-0.5296 c -0.2711,-0.072 -0.5057,-0.065 -0.7333,-0.082 l -0.2037,-0.2037 -0.082,0.1629 c -0.064,0 -0.1436,-0.01 -0.2037,0 l -0.5296,-0.611 -1.0592,0.2037 -0.774,-0.2037 -0.4481,0.4481 -0.163,-0.2444 0,-0.2037 c 0.2415,0 0.4326,0.016 0.6111,0 0.5354,-0.049 0.774,-0.1779 0.774,-0.40743 z m 16.2955,0 0.2445,0.0815 -0.2445,0.89629 -0.2444,-0.082 0.2444,-0.89629 z m -19.962,0.40739 0,0.4481 0.4074,0 0,-0.4481 -0.4074,0 z m -1.5481,0.082 0.2445,0.2852 -0.2037,0.3666 -0.163,-0.5296 0,-0.082 0.1222,-0.041 z m -10.5106,0.1222 0.041,0.3259 -0.163,0.041 0.1222,-0.3666 z m 21.836,0 0.163,0 0,0.2445 -0.163,0 0,-0.2445 z m -16.6622,0.041 0.5296,0.937 0.041,0.163 -0.2037,0.2851 0.7741,1.8333 -0.5296,0.3259 -0.2852,-1.5073 -0.1222,-0.4482 -0.2444,-0.1222 -0.163,-1.4258 0.2037,-0.041 z m -0.8962,0.041 1.1407,4.2369 -0.326,-0.082 0,-0.082 -0.2851,-0.163 -0.6926,-3.4628 -0.041,-0.2037 -0.2852,-0.1222 0.4889,-0.1222 z m 19.8805,0.082 0.2445,0.082 -0.1222,0.4074 -0.2037,-0.041 0.082,-0.4481 z m -7.7811,0.082 0.6518,0 0,0.2037 c -0.1266,0.036 -0.2232,0.098 -0.3259,0.163 l -0.3259,-0.082 0,-0.2852 z m -9.207,0.1222 0.1222,0.3667 -0.2036,0.041 -0.1223,-0.3667 0.2037,-0.041 z m 15.1141,0.041 0,0.1223 -0.082,0 0.082,-0.1223 z m 9.9811,0.2445 0.2444,0.041 -0.163,0.4888 -0.2036,-0.041 0.1222,-0.4888 z m 5.2553,0 0.2444,0.041 -0.1629,0.4888 -0.2037,-0.041 0.1222,-0.4888 z m -22.8138,0.082 0.3667,0 c -0.095,0.1753 -0.2075,0.273 -0.3667,0.2852 l 0,-0.2852 z m 7.1293,0 0.163,0 0,0.2037 -0.163,0 0,-0.2037 z m -1.5073,0.041 0.2852,0.082 -0.2852,0 0,-0.082 z m 4.7257,0.082 0.3259,0.6111 -0.1222,0.4074 -0.4481,-0.1223 0.2444,-0.8962 z m 1.0185,0.2852 0.2037,0.041 c -0.079,0.2957 0.1602,0.5611 0.6518,0.6925 l -0.2445,0.8963 c -0.1373,-0.1603 -0.2847,-0.29 -0.4481,-0.4074 l 0.041,-0.2037 -0.4481,-0.1222 0.2444,-0.8963 z m -5.8664,0.041 0.1222,0 0.082,0.041 -0.1222,0.4481 -0.163,-0.082 0.082,-0.4074 z m 3.3813,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.09,-0.065 -0.1747,-0.1267 -0.2444,-0.2037 z m -7.4145,0.1222 c -0.014,0.04 -0.029,0.079 -0.041,0.1222 l -0.1222,-0.041 0.1629,-0.082 z m -15.603,0.1629 0.082,0.163 0.3259,2.9332 0.4074,-0.1222 -0.1222,-0.3667 0.6111,0.2445 c -0.4434,0.1185 -0.6365,0.4147 -0.5296,0.8147 l 0.2444,0.1222 -0.2444,0.7333 0.041,0.2037 0.4481,-0.1222 -0.1222,-0.4481 0.2037,-0.041 0.1222,0.4481 -0.3666,1.1407 -0.3667,-0.082 c -0.056,0.071 -0.068,0.1343 -0.1222,0.2037 l -0.4481,-1.5888 0.041,-1.1 -0.3259,-0.082 0.2037,-0.2851 -0.041,-0.2445 -0.4889,0.1223 -0.082,-0.163 0,-0.082 0,-0.163 c 0.3324,-0.117 0.5134,-0.4115 0.4481,-0.9369 l -0.4481,-0.7741 -0.041,-0.1629 0.5703,-0.3667 z m 31.1653,0 0.5296,0.1222 -0.2037,0.6926 -0.5296,-0.1222 0.2037,-0.6926 z m -28.9246,0.2852 -0.4074,0.082 0.041,0.2037 0.4074,-0.1222 -0.041,-0.163 z m 4.7257,0 0.1222,0.3667 -0.2037,0.041 -0.1222,-0.3667 0.2037,-0.041 z m 8.5144,0.041 0.2037,0.082 -0.2444,0 0.041,-0.082 z m 16.9066,0 0.5296,0.1222 -0.1222,0.4889 0.4481,0.1222 0.163,-0.6926 0.4481,0.5704 -0.5703,0.8148 -0.163,1.8739 -0.4481,0.5297 -0.2444,-0.041 c 0.5137,-1.9216 0.4109,-2.921 -0.2445,-3.0962 l 0.2037,-0.6926 z m -20.0435,0.082 0.2037,0 -0.1222,0.4481 -0.163,0 0,-0.2037 0.082,-0.2444 z m 1.7925,0 0.2037,0 c 0.1368,0.1613 0.1866,0.3854 0.163,0.6518 l -0.1222,0 -0.2445,-0.6518 z m -2.5665,0.1222 0.2037,0.3667 -0.2852,-0.082 0.082,-0.2852 z m 12.5475,0.163 0.2445,0.082 0.2851,0.2037 -0.1629,0.2444 c -0.1007,-0.099 -0.2134,-0.1792 -0.3259,-0.2444 l -0.041,-0.2852 z m -7.17,0.1629 0.2852,0 c 0,0.072 0.024,0.1467 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.082 0.4074,0.1223 -0.3259,0 -0.082,-0.1223 z m -6.7219,0.1223 0.2037,0.082 -0.082,1.2221 -0.082,0.2037 -0.2037,-0.081 0.041,-0.4889 0.2037,0 0,-0.6518 -0.082,-0.2851 z m 14.6252,0.041 0.326,0.082 -0.163,0.6518 -0.2037,-0.082 -0.041,-0.5296 0.082,-0.1223 z m -15.3585,0.041 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.1629 0.1222,0 0.1222,0.163 0.082,0.2851 -0.3259,-0.4073 0,-0.041 z m 4.522,0.041 0.2037,0 -0.082,0.2037 -0.163,0 0.041,-0.2037 z m -5.2553,0.163 -0.041,0.2444 c -0.1412,0.6766 -0.1364,1.0308 0.1222,1.1 l -0.2444,0.2036 -0.082,0.163 -0.041,0.2444 -0.1222,0.041 -0.163,-0.5703 0.4481,-0.082 c -0.2059,-0.7706 -0.1474,-1.243 0.1223,-1.3444 z m 1.874,0 0.041,0.1222 0.082,-0.082 0.1629,0.6518 0,0.1222 -0.4888,0.7333 0.2851,0.081 -0.3259,0.1222 -0.082,0.2445 0.2445,0.2851 -0.082,0.163 -0.4074,0.5703 0.041,0.8556 -0.6518,1.3036 0.2444,0.2852 -0.4889,-0.163 0.3667,-1.3444 -1.1815,0.7333 0.2445,0.2852 -0.8555,0.4481 -0.082,1.0185 -0.4074,0.6926 c 0.08,-0.4995 0.011,-0.7981 -0.2037,-0.8556 l 0.2851,-0.1629 0.041,-0.2037 0.2037,-1.3036 c 0.1375,-0.1299 0.2765,-0.2715 0.4074,-0.4074 l 0.4482,0.3259 c -0.053,-0.2116 -0.1577,-0.3754 -0.2445,-0.5296 0.051,-0.055 0.1128,-0.1065 0.163,-0.163 l 0.2444,0.041 0.082,-0.3666 0.3667,-0.163 -0.163,-0.163 c 0.072,-0.092 0.134,-0.1912 0.2037,-0.2851 l 0.7333,0.041 0.163,-0.6111 -0.4074,-0.1222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.3259 l 0.2851,0.082 0.2852,-1.0592 c 0.1084,-0.2 0.2227,-0.4049 0.3259,-0.6111 l -0.1222,-0.163 0.041,-0.1222 z m 11.7328,0.041 0.2037,0.4074 0,0.041 -0.4889,0 c 0.012,-0.071 0.03,-0.1355 0.041,-0.2037 l 0.2444,-0.2445 z m -22.162,0.041 0.082,0.2851 -0.082,0 0,-0.2851 z m 30.432,0.2037 0.4888,0.1222 -0.4074,0.937 c -0.091,-0.1361 -0.2088,-0.2648 -0.3666,-0.3667 l 0.2852,-0.6925 z m -10.8773,0.1629 0.2037,0.041 -0.2037,0 0,-0.041 z m 0.9777,0.041 0.4074,0.1222 -0.041,0.163 -0.2037,0.041 -0.1629,-0.2852 c 0.01,0 -0.01,-0.037 0,-0.041 z m -8.3922,0.3259 0.4074,0.082 -0.163,0.6518 -0.2851,-0.5703 0.041,-0.163 z m 23.9137,0.041 c 0.452,0.2793 0.6049,0.7683 0.4074,1.5074 l -0.5296,1.0592 c -0.1997,1.1223 -0.2914,1.891 -0.2852,2.4036 l -0.1629,-0.041 0.041,-0.7741 0.1222,-0.4888 -0.3666,-0.7741 0.8962,-2.1184 -0.1222,-0.774 z m -21.836,0.1222 0.2444,0 0,0.2037 -0.2444,0 0,-0.2037 z m 12.0994,0 0.041,0 -0.1629,0.5704 c -0.02,0.077 -0.028,0.1306 -0.041,0.2037 l -0.041,0 0.2037,-0.7741 z m -19.962,0.041 0.2037,0.041 0.1222,0.2445 -0.3666,-0.1222 0.041,-0.163 z m -4.1146,0.2037 0.041,0.2037 -0.2852,0.5296 -0.041,-0.1629 0.2852,-0.5704 z m 3.6257,0 c 0.1218,0.056 0.2252,0.1143 0.4074,0.163 l -0.082,0.3666 -0.1629,-0.2444 -0.082,-0.041 -0.082,-0.2444 z m 31.1245,0.082 0.2445,0.082 -0.1223,0.4889 -0.2444,-0.082 0.1222,-0.4889 z m -25.4618,0.082 c 0.1306,0.01 0.286,0.02 0.4482,0.041 l -0.1223,0.3667 c -0.2956,-0.079 -0.5499,0.1592 -0.6925,0.6925 l -0.4481,-0.774 c 0.047,-0.1747 0.2132,-0.256 0.4888,-0.2852 l 0.3667,0 -0.041,-0.041 z m 14.0142,0 0.082,0 0.1222,0.041 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.2444 z m -8.1478,0.041 0.2852,0 -0.1222,0.5296 -0.2445,-0.082 c 0.037,-0.1539 0.063,-0.3101 0.082,-0.4481 z m 0.8555,0 0.5704,0 0,0.082 -0.3667,0.5704 0.1223,0.1629 -0.6111,-0.1629 c 0.107,-0.1606 0.1904,-0.4143 0.2851,-0.6518 z m 1.0593,0 0.2444,0 -0.041,0.082 -0.2037,-0.041 0,-0.041 z m 2.2406,0 0.4889,0 -0.1223,0.3667 -0.2037,0.041 0,0.4481 0,0.041 -0.082,0.163 0.041,0.4481 -0.1629,0.041 c -0.1809,-0.2054 -0.2427,-0.4948 -0.2037,-0.8555 0,-0.026 0,-0.055 0,-0.082 0.012,-0.083 0.017,-0.1538 0.041,-0.2445 l 0.2037,-0.3666 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.4889 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.2852 -0.4889,0.1222 -0.041,-0.5296 0.2444,-0.041 0,-0.4888 -0.2851,0.041 -0.041,-0.2445 z m -7.6996,0.082 0,0.7741 c -0.2653,-0.083 -0.4074,-0.289 -0.4074,-0.6518 0.1826,0 0.2999,-0.043 0.4074,-0.1223 z m 5.5404,0 0.4074,0.1223 -0.082,0.3666 -0.4481,-0.1222 0,-0.041 0.163,-0.2037 -0.082,0 0.041,-0.1222 z m 11.9365,0 0.1222,0.6519 c -0.026,-0.012 -0.051,-0.033 -0.082,-0.041 l -0.3259,0.082 -0.041,0.2444 0,0.2852 -0.041,0.082 -0.2037,-0.041 0.041,-0.2037 0.2445,-0.3667 0.1629,-0.2852 -0.4481,-0.1222 0.5703,-0.2851 z m -18.8213,0.082 c 0.092,0.016 0.1761,0.041 0.2851,0.041 l 0,0.6519 -0.2444,-0.082 -0.041,0.1222 -0.1222,0 0,0.4481 0,0.082 0.4481,0.1222 0.041,-0.2037 0.163,0 -0.5296,0.7741 -0.2445,-0.326 -0.082,0.3667 0.2445,0.082 -0.041,0.041 0.5296,0.1222 0.082,0.2444 -0.1222,0.2037 c -0.155,0.076 -0.2588,0.2271 -0.2852,0.4482 l -0.041,0.1222 -0.163,0 c 0,-0.03 0.01,-0.052 0,-0.082 l 0.082,-0.4481 -0.1629,-0.041 c -0.084,-0.4332 -0.1524,-0.7924 -0.2445,-1.0593 l 0.4482,-1.6295 z m -7.2923,0.4482 c 0.2126,0.1196 0.3124,0.3224 0.2852,0.611 l -0.2037,-0.1222 -0.082,-0.4888 z m 18.3325,0 0.041,0 c -0.01,0.03 -0.034,0.052 -0.041,0.082 -0.03,0.1371 -0.06,0.2831 -0.082,0.4074 -0.092,0.016 -0.1761,0.041 -0.2852,0.041 l 0,0.4888 -0.2444,0 0.082,-0.937 0.5296,0 0,-0.082 z m -12.3846,0.082 0.2852,0 0.1222,0.041 0,0.4074 -0.2037,0 0,0.2036 0.082,0.3667 c -0.1679,-0.1492 -0.2705,-0.4892 -0.2852,-1.0185 z m 25.3396,0.041 0.4481,0.1222 -0.1222,0.4074 -0.4481,-0.1222 0.1222,-0.4074 z m -33.9355,0.041 c -0.044,0.05 -0.077,0.1097 -0.1222,0.1629 l -0.041,-0.1222 0.1629,-0.041 z m -0.8963,0.041 0.4482,0.9369 -0.2037,0.041 -0.081,-0.041 c 0.011,-0.045 0.028,-0.075 0.041,-0.1222 l -0.2445,-0.082 -0.2037,-0.6925 0.2445,-0.041 z m 17.5178,0 0.4073,0.1222 -0.082,0.2444 -0.3666,-0.2444 0.041,-0.1222 z m 0.7332,0 0.2037,0.082 -0.1222,0.4073 -0.2037,-0.041 0.1222,-0.4481 z m 7.1294,0.082 0.082,0.1222 0.2851,0.082 0.082,-0.041 -0.2037,1.3444 -0.6925,2.5258 -0.2444,0.4888 -0.082,-0.3666 0.2036,-0.2852 -0.2036,-0.2037 -0.2445,0.082 -0.1629,-0.2851 0.2851,-0.1223 0.2037,0.041 0.041,-1.0592 0.2852,-0.9777 0.4074,0.082 0.1222,-0.5296 0.041,0 0,-0.082 c -0.1251,-0.2297 -0.1809,-0.5083 -0.2037,-0.8148 z m 3.0554,0.041 0.2444,0.082 -0.082,0.2444 0,0.041 -0.163,0.5296 -0.2037,-0.082 0.2037,-0.8148 z m -20.2472,0.2037 0.4073,0.1222 -0.1222,0.3666 -0.2851,-0.4888 z m -10.6329,0.3259 0.041,0.1629 -0.1222,0.041 0,-0.1629 0.082,-0.041 z m 5.5405,0.041 0.2037,0.082 -0.082,0.3666 0.2037,0.041 -0.2445,0.1222 -0.1222,0.4889 -0.1629,-0.6111 0.2037,-0.4889 z m 27.4172,0 0.3667,0.082 c -0.05,0.1857 -0.024,0.3352 0,0.4481 l -0.3259,-0.082 c 0.053,-0.2 0.019,-0.3353 -0.041,-0.4481 z m -3.9516,0.082 0.041,0 c -0.023,0.1202 -0.051,0.2387 -0.082,0.3666 l -0.041,0 0.082,-0.3666 z m -17.314,0.041 0.2037,0.041 -0.2445,0.8147 -0.2037,-0.041 0.2445,-0.8148 z m 14.7474,0.041 c 0.1068,0.098 0.258,0.168 0.4074,0.2444 l -0.1629,0.3259 -0.163,-0.041 -0.041,-0.041 c -0.048,-0.04 -0.1096,-0.09 -0.1629,-0.1222 l 0.1222,-0.3667 z m -21.9175,0.1629 0.082,0 c 0.01,0.063 0,0.1434 0,0.2037 l -0.082,-0.2037 z m 32.4689,0 0.3259,0.5296 -0.4481,-0.1222 0.1222,-0.4074 z m -33.2429,0.3667 0.041,0.1222 -0.163,-0.041 0,-0.041 0.1222,-0.041 z m 6.7626,0.1629 0.2037,0.082 -0.7333,2.811 -0.2037,-0.082 0.7333,-2.811 z m 9.4515,0 -0.2037,0.8148 0,0.082 c -0.07,0.01 -0.1708,0.032 -0.2445,0.041 l 0.2445,-0.8963 0.2037,-0.041 z m 1.5888,0.163 c 0,0.051 0,0.1083 0,0.1629 -0.1404,0.1712 -0.5033,0.2873 -1.0185,0.4074 l 0.082,-0.2444 0.937,-0.3259 z m 8.5959,0.1222 c 0.1067,0.1844 0.2374,0.3374 0.3666,0.4889 l 0,0.1222 0.163,0.041 c 0.068,0.068 0.1301,0.1436 0.2037,0.2037 l -0.163,0.6518 -0.2037,-0.041 c 0.071,-0.2668 -0.1676,-0.4926 -0.6111,-0.6111 l 0.2445,-0.8555 z m 1.0184,0.041 0,0.1222 -0.082,-0.082 0.082,-0.041 z m 5.5813,0.041 0.4481,0.1222 -0.041,0.2037 -0.4889,-0.1222 0.082,-0.2037 z m -24.1989,0.041 0.1222,0.4481 0.2444,0.8963 -0.4481,0.7333 0.3259,-0.1223 0.2037,0.041 -0.1222,0.3667 -0.2037,-0.041 -0.2037,-0.2444 -0.2444,-0.082 -0.082,0.4481 -0.2445,-0.041 0.6519,-2.4036 z m -1.2222,0.082 0.2037,0.082 -0.1222,0.5296 -0.2037,-0.041 0.1222,-0.5704 z m 7.1293,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m 14.5438,0.041 -0.082,0.2444 0.6926,0.163 0.082,-0.2037 -0.6926,-0.2037 z m -28.6802,0.082 c 0.026,0 0.055,0 0.082,0 -0.1259,0.1796 -0.3023,0.3289 -0.5296,0.4481 l -0.041,-0.2037 c 0.1448,-0.1144 0.3062,-0.2068 0.4889,-0.2444 z m 13.3624,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2851,0.3259 l -0.2851,-0.082 0,-0.2444 z m -12.955,0.2037 0.041,0 0.3259,0.1222 c 0.028,0.1064 0.051,0.1975 0.082,0.2852 l -0.2037,0.774 -0.2037,-0.041 c 0.1427,-0.5334 0.011,-0.858 -0.2851,-0.937 l -0.2037,0.082 0.041,-0.1629 0.3259,-0.082 0.082,0 0,-0.041 z m -2.5665,0.041 0.082,0.2444 -0.1223,-0.041 0.041,-0.2037 z m 13.4438,0 0.2037,0 c -0.015,0.1005 -0.023,0.219 -0.041,0.3259 l -0.163,0.1629 0,-0.4888 z m 8.5552,0 0.3666,0 -0.041,0.1629 -0.4074,-0.1222 c 0.02,-0.019 0.064,-0.021 0.082,-0.041 z m 1.0184,0 0.4074,0 0,0.2037 c -0.1951,0 -0.3609,0.037 -0.4889,0.082 l 0.082,-0.2852 z m -19.4324,0.082 0.1629,0.041 -0.082,0.3259 -0.082,-0.3667 z m 13.8105,0.1222 0,0.5296 -0.041,0.041 -0.041,0.1629 -0.2445,0 0.2037,-0.6925 0.1222,-0.041 z m 0.8555,0 0.937,0 -0.041,0.1629 0,0.1223 -0.2445,0 -0.2851,-0.041 -0.082,0.041 -0.2852,0 c 0,0.015 0,0.026 0,0.041 l -0.082,-0.041 0.082,-0.2852 z m 3.0554,0.1629 -0.082,0.3667 -0.3667,0 -0.1222,-0.1222 0.041,-0.163 c 0.2044,-0.021 0.3677,-0.034 0.5296,-0.082 z m 9.044,0 c 0.6945,0.3642 0.9331,1.0147 0.6926,1.9148 l -0.4889,-0.1222 -0.1629,0.5296 0.3666,0.5703 -0.8555,1.2629 0.2037,0.041 -0.2444,0.1222 -0.082,0.2852 0.1629,1.3036 -0.5703,0.2445 0.2037,0.041 -0.3667,0.5703 c -0.1386,0.963 0.1611,1.5036 0.937,1.711 l -0.2444,0.163 -0.082,0.2444 0.082,0.6111 -1.3444,-2.0369 -0.2037,-0.041 0.163,-0.6111 0.4481,0.082 0.041,-0.163 c -0.2956,-0.079 -0.5344,-0.5172 -0.6518,-1.2629 l 0.1629,-0.6111 0.2037,0.041 -0.082,0.4482 0.6926,0.2037 0.082,-0.4482 -0.4074,-0.1222 0.2444,-0.8148 0.4074,0.1223 0.2037,-0.8148 -0.4074,-0.1222 0.082,-0.3667 0.4481,0.1222 0.082,-0.3666 -0.4073,-0.1222 0.1629,-0.6111 c 0.3695,0.099 0.5984,-0.1382 0.8148,-0.6518 0.1069,-0.4 -0.01,-0.6148 -0.4481,-0.7333 l 0.1629,-0.6111 z m -24.5248,0.041 0.4889,0.1223 -0.4074,0.5703 -0.2444,-0.082 0.1629,-0.6111 z m 23.3027,0 c 0.1376,0.073 0.2979,0.1151 0.4481,0.163 l -0.1222,0.4074 -0.3259,-0.5296 0,-0.041 z m -16.703,0.082 0.6518,0 0.2037,0.2445 0.163,0 -0.163,0.6111 -0.611,0 -0.2445,-0.8556 z m 5.7035,0.2037 0.082,0 c -0.036,0.1613 -0.082,0.3166 -0.1222,0.4482 l -0.082,0 0.1222,-0.4482 z m 4.8886,0.041 0,0.163 -0.082,0.2444 -0.2037,0 0.041,-0.2037 0.2445,-0.2037 z m -7.7404,0.082 0.2037,0.041 -0.041,0.082 -0.2037,0 0.041,-0.1222 z m -8.6366,0.082 0.6518,0.3667 -0.2851,1.0185 -0.2037,-0.082 -0.2445,-0.937 0.082,-0.3667 z m 20.899,0 0.4889,0.1223 0.3667,1.1407 -0.1223,0.4481 -0.2037,-0.041 0.1223,-0.4481 -0.4482,-0.1223 -0.041,0.2037 0.2445,0.7333 -0.2445,0.1222 c -0.1069,0.4001 0.086,0.6963 0.5296,0.8148 l -0.5703,0.2445 0.082,-0.3667 -0.4074,-0.1222 -0.3259,2.9332 -0.082,0.1629 -0.5703,-0.3259 0.082,-0.2037 0.4073,-0.774 c 0.069,-0.5531 -0.1193,-0.879 -0.4888,-0.9777 l 0.1222,-0.3667 0.4889,0.1222 0.041,-0.2444 -0.2037,-0.2852 0.3259,-0.082 -0.041,-1.0999 0.4481,-1.5888 z m -18.9843,0.041 0.4074,0.1223 -0.041,0.2037 -0.4074,-0.1223 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.058 0.1536,0.1175 0.2444,0.163 l -0.041,0.1222 -0.082,0.2852 -0.2852,-0.5296 0,-0.041 z m -19.962,0.041 0.3259,0.4889 -0.2445,-0.2444 -0.2036,-0.041 0.1222,-0.2037 z m 1.0999,0.082 0.163,0.041 0,0.163 -0.163,0.6518 -0.2037,-0.082 0.2037,-0.774 z m 31.0838,0 c 0.044,0.1029 0.088,0.1838 0.1629,0.2037 l 0.2037,0.041 0,0.4482 -1.711,6.3552 -0.4889,-0.1222 0.2852,-0.1222 0.041,-0.2037 0.6926,-3.4628 0.2851,-0.1222 0.041,-1.0592 0.4889,-1.9555 z m 1.0184,0 0.2037,0.041 -0.2037,0.6519 -0.2036,-0.082 0.1629,-0.5704 0.041,-0.041 z m -15.6437,0.1223 0.041,0.4481 -0.1222,0.041 -0.082,-0.3259 0.163,-0.163 z m 12.792,0 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -9.5736,0.041 c 0.1346,0.034 0.3237,0.061 0.4889,0.082 l -0.1223,0.4888 -0.4481,-0.1629 0.082,-0.4074 z m -20.9805,0.3259 0.4888,0.1222 -0.082,0.2037 -0.1629,1.3851 c 0.01,-0.1844 -0.023,-0.3523 -0.082,-0.5703 l -0.2037,-0.8148 0.041,-0.3259 z m 3.2998,0.041 0.4482,0.082 c -0.1069,0.4 -0.01,0.695 0.2851,0.774 l -0.041,0.2037 c -0.4433,-0.1185 -0.7027,-0.1037 -0.774,0.163 l -0.2037,-0.041 -0.082,-0.6111 0.3666,-0.5704 z m 16.8252,0.041 0.2851,0 -0.082,0.2444 -0.2037,0 0,-0.2444 z m -13.7698,0.1629 0.2037,0.041 -0.041,1.0593 -0.4074,-0.1223 0.2445,-0.9777 z m 20.125,0.2037 0.4482,0.163 -0.041,0.1629 -0.4889,-0.1222 0.082,-0.2037 z m 3.0962,0 0.2037,0.041 -0.4481,0.937 -0.2037,-0.041 0.2037,-0.8147 0.2444,-0.1223 z m -19.5139,0.1223 0.937,0.041 -0.1222,0.5703 -0.9778,0 0.163,-0.6111 z m 8.5959,0.1629 0.2037,0 0,0.041 -0.2037,-0.041 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.1222 0.041,-0.082 z m -19.5139,0.041 0.3259,0.5296 -0.2852,0.1222 -0.2037,-0.041 c 0.062,-0.2333 0.1327,-0.4344 0.163,-0.6111 z m -4.3183,0.163 0.2037,0.041 -0.1223,0.3666 -0.2036,-0.041 0.1222,-0.3666 z m 32.3059,0 0.2037,0.041 c -0.107,0.4 -0.01,0.695 0.2852,0.774 l -1.4259,3.5035 0.2037,0.2445 -0.041,0.2037 -0.5296,0.8962 -0.2037,-0.041 0.1629,-1.4258 0.2445,-0.1222 0.1222,-0.4482 0.6926,-3.422 0.2851,-0.2037 z m -35.3613,0.1222 0.1222,0.8555 0.2037,0.1222 c -0.012,0.097 -0.014,0.1835 -0.041,0.2852 l 0,0.082 -0.041,-0.082 -0.2037,0.082 c 0.022,0.084 0.035,0.1372 0.041,0.2037 l -0.3667,0.1629 c -0.01,-0.044 -0.031,-0.08 -0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 0.163,-1.3444 z m 9.4514,0.041 0.6111,0.1629 -0.041,0.2037 -0.6926,0.082 0.1222,-0.4481 z m -4.8072,0.2444 0.2037,0.082 -0.163,0.5296 -0.2037,-0.041 0.163,-0.5703 z m 28.9653,0 0.2037,0.041 -0.2852,1.0185 -0.2037,-0.082 0.2852,-0.9777 z m -20.4916,0.1222 0.3666,0.5296 -0.1629,0.6111 -0.2037,-0.3259 -0.4074,-0.1222 c -0.1069,0.4 -0.4121,0.5667 -0.8555,0.4481 0.1069,-0.4 0,-0.6555 -0.4482,-0.774 l 0.041,-0.2037 0.4074,0.1222 0.163,0.2444 c 0.08,-0.2999 0.4464,-0.4543 1.0999,-0.5296 z m 10.8365,0.2037 0.1222,0 0,0.1223 -0.1222,-0.1223 z m 13.1179,0 0.8963,0.2445 -0.4481,1.7517 c -0.2956,-0.079 -0.3768,-0.5444 -0.163,-1.3443 l -0.4481,-0.082 0.1629,-0.5704 z m -6.1515,0.041 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.5703 0.041,-0.163 z m -28.558,0.082 -0.2037,1.6296 -0.8148,0.2444 0.2445,-0.8962 c 0.449,-0.223 0.7308,-0.5469 0.774,-0.9778 z m 0.6926,0 0.2444,0.082 -0.082,0.3667 -0.2852,-0.082 0.1223,-0.3667 z m 21.8767,0.041 0.163,0.041 0,0.2445 -0.4074,0 0.2444,-0.2852 z m -9.5329,0.041 0.2037,0 0.163,0.2445 -0.2852,0 -0.082,0 0,-0.041 0,-0.2037 z m -6.9663,0.2445 0.4889,0.1222 -0.082,0.2444 -0.5296,0.937 -0.163,-0.2444 -0.2037,-0.082 -0.5296,0.2852 0.041,0.6518 c -0.2956,-0.079 -0.5041,0.048 -0.6111,0.4481 l -0.1629,-0.2444 -0.2037,-0.041 -0.2445,0.1222 0.2037,-1.6296 0.6111,0.163 0.1222,-0.4074 c 0.7391,0.1975 1.1561,0.074 1.2629,-0.3259 z m 2.8517,0.1222 0.2037,0.082 -0.082,0.3666 -0.2444,-0.041 0.1222,-0.4074 z m -7.8626,0.041 0.2037,0.082 -0.082,0.3666 -0.2444,-0.041 0.1222,-0.4074 z m 6.6405,0.041 0.2037,0.082 -0.082,0.4074 -0.2445,-0.041 0.1222,-0.4482 z m -9.2885,0.1222 0.2037,0.082 -0.2444,0.081 0.041,-0.1629 z m -0.041,0.2852 0.163,0.1222 0,0.041 -0.2037,-0.041 0.041,-0.1222 z m 15.7252,0.082 c 0,0.2065 -0.13,0.3082 -0.3259,0.3666 l -0.5296,0.041 0,-0.1629 0,-0.041 0.8555,-0.2037 z m 3.2591,0 c 0.013,0 0.029,-0.01 0.041,0 0.089,0.046 0.1749,0.1108 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.1222 -0.2037,0.8148 c -0.045,0 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.2445 0.1222,-0.4481 c 0.1893,0.051 0.3495,-0.044 0.4889,-0.2444 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.059 0,0.082 -0.099,0.3378 -0.3274,0.5985 -0.6519,0.7333 l -0.1222,-0.041 0.4482,-0.7741 z m 4.4405,0 -0.041,0.2037 -0.4889,0 0,-0.1223 c 0.2002,-0.028 0.3723,-0.051 0.5296,-0.082 z m 8.8811,0 0.2037,0.041 -0.082,0.3666 -0.2037,-0.041 0.082,-0.3666 z m -26.847,0.082 0.4074,0.1222 -0.1222,0.4481 -0.4074,-0.1222 0.1222,-0.4481 z m 9.7366,0.1222 0.163,0 -0.163,0.5703 0,-0.5703 z m -11.9772,0.163 -0.082,0.3666 0.4074,0.1222 0.1222,-0.3666 -0.4481,-0.1222 z m 4.9702,0.041 0.6925,0.2036 -0.1222,0.3667 0.4481,0.1222 0.163,-0.6111 0.3259,0.3667 c -0.3478,0.1723 -0.5887,0.4467 -0.7333,0.8148 -0.062,0.027 -0.089,0.046 -0.1222,0.082 l -0.2037,-0.041 c 0.1401,-0.4439 -0.02,-0.7271 -0.4074,-0.8148 l -0.2037,-0.041 c 0.072,-0.1147 0.1184,-0.2815 0.163,-0.4481 z m 16.9066,0 0.4074,0.1222 -0.082,0.2444 -0.4074,-0.1222 0.082,-0.2444 z m -14.4216,0.2036 0.1222,0.041 c -0.043,3e-4 -0.081,0 -0.1222,0 l 0,-0.041 z m -13.729,0.2445 0.4482,0.082 -0.082,0.2037 -0.4074,-0.1222 0.041,-0.163 z m 20.1658,0 0.1629,0.082 -0.2037,0.041 0.041,-0.1222 z m -10.4699,0.041 0.1629,0.2444 0.2037,0.041 c 0.1186,0.032 0.2233,0.042 0.3259,0.041 -0.1473,0.093 -0.295,0.1253 -0.4888,0.082 l -0.2037,0.6518 c 0.3876,0.088 0.6345,0.219 0.774,0.4482 l -0.4889,0.2444 0.4074,0.082 0.082,-0.2852 c 0.1221,0.2248 0.1522,0.5026 0.041,0.8555 l 0.6519,0.163 -0.3667,1.0999 -0.6111,-0.1222 0,2.1184 -1.3444,1.1407 0.2037,0.3259 -1.7517,2.4036 0.4481,-0.1222 0.2444,0.082 -0.1222,0.4074 -0.2852,-0.041 -0.2851,-0.3259 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.7812 0.2444,-0.041 -0.2852,0.9778 0.6519,0.1222 0.4073,-1.3037 -0.4481,-0.082 0.041,-0.1222 -0.2037,-0.082 -0.2852,0 0.041,-0.1222 0.2852,-0.041 0.082,-0.2037 -0.2444,-0.082 0.1629,-0.5703 -0.2037,-0.2852 0.082,-0.2037 0.2852,-0.082 z m 6.6811,0.041 0.2037,0.041 -0.041,0.1222 -0.1629,-0.163 z m 7.8626,0 0.041,0.1629 -0.2851,-0.082 0.2444,-0.082 z m -20.0435,0.1222 0.4482,0.774 -0.326,0.163 -0.1629,-0.041 0.041,-0.8963 z m -0.6925,0.041 0.2037,0.041 -0.1223,0.4481 -0.2037,-0.041 0.1223,-0.4481 z m 19.8805,0.1629 -0.082,0.2445 -0.2037,-0.041 0,-0.082 0.2852,-0.1222 z m -1.3851,0.1223 0.082,0.1222 0,0.2852 -0.4481,-0.1223 0.1629,0 0.2037,-0.2851 z m 3.8702,0.1222 0.2444,0.082 0,0.2852 0,0.6518 0,0.1222 -0.3259,0.1222 -0.4074,-0.082 0.2852,-1.1407 0.041,0 c 0.064,-0.01 0.1028,-0.032 0.163,-0.041 z m -25.3803,0.1222 0.3666,0.4889 -0.4888,-0.1223 0.1222,-0.3666 z m 35.4021,0.041 0.2037,0.041 -0.1223,0.3666 -0.2037,-0.041 0.1223,-0.3666 z m -11.4477,0.1222 -0.041,0.2037 -0.774,0.082 -0.2037,-0.082 0,-0.041 1.0185,-0.1629 z m 6.4368,0 -0.041,0.2037 0.4074,0.082 0.041,-0.163 -0.4074,-0.1222 z m -27.1728,0.2444 0,0.2037 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.082 -0.2852,-0.082 0.082,-0.3259 -0.1222,-0.041 0,-0.041 0.5296,-0.3259 z m 3.1369,0 0.3666,0.082 -0.2444,0.6926 -0.3259,-0.081 0.2037,-0.6926 z m 8.3107,0 0.4074,0 0,0.041 -0.4074,0 0,-0.041 z m -13.6068,0.082 0.2037,0.041 -0.3667,1.3444 c -0.019,-0.2982 -0.091,-0.4868 -0.2444,-0.5703 l 0.041,-0.3259 0.3667,-0.4889 z m 10.3069,0.082 0.2445,0.082 -0.1222,0.4482 -0.2852,-0.041 0.1629,-0.4889 z m 2.1185,0.041 0.2444,0.041 -0.082,0.2445 0.041,0.1629 c -0.01,0.1969 0.032,0.3372 0.1222,0.4482 l 0,0.082 -0.1629,0 -0.4074,0.4481 -0.2037,0 0.2444,-0.8555 0.163,-0.2852 -0.041,-0.041 0.082,-0.2444 z m 1.3851,0.041 0.2444,0.2852 0,0.2852 c -0.1625,-0.1175 -0.2809,-0.2535 -0.4074,-0.3667 l 0.163,-0.2037 z m -7.6997,0.2037 0.2852,0.041 -0.163,0.4889 -0.2444,-0.082 0.1222,-0.4481 z m 13.9735,0.082 0.2037,0.041 0.3259,0.4889 -0.082,0.2444 -0.2037,-0.082 -0.082,-0.082 0,-0.1629 -0.2037,0 c 0.013,-0.1553 0.042,-0.3219 0.041,-0.4481 z m -16.54,0.082 -0.1222,0.3667 -0.041,1.4259 -0.6519,0.8147 0.3667,0.081 -0.4481,0.1223 -0.082,0.2444 0.2851,0.3259 -0.041,0.2037 -0.5703,0.6111 0.082,0.9777 -0.8555,1.4259 0.2852,0.2851 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8556 0.2851,0.2851 -1.0184,0.4482 c -0.1112,-0.2193 -0.218,-0.4175 -0.326,-0.6519 -0.01,-0.011 0,-0.03 0,-0.041 l 0.1223,-0.774 0.2851,0.082 0.6926,0.4481 c -0.2006,-0.6795 -0.5592,-1.0906 -1.1407,-1.2221 l 0.2037,-0.6926 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.081,-0.041 c 0.068,-0.2257 0.108,-0.4498 0.163,-0.6518 l 0.1629,-0.1222 0.041,-0.2037 -0.041,-0.1223 c 0.059,-0.2398 0.045,-0.4104 0.082,-0.611 0.2166,-0.041 0.4501,-0.155 0.6926,-0.3667 -0.087,0.5222 -0.036,0.8328 0.2444,0.8963 l -0.3259,0.2037 -0.041,0.082 c -0.1805,0.1124 -0.3751,0.2434 -0.5296,0.3666 l -0.041,0.2444 0.4074,0.1223 -0.3259,1.6702 0.5703,0.1223 0.1222,-0.4074 0.4482,-0.2037 -0.2852,-0.2852 -0.2852,-0.082 0.082,-0.2037 1.5074,0.1222 0.2037,-0.6925 -0.5296,-0.1223 0.1222,-0.4073 0.5703,0.1222 0.3667,-1.1407 0.2444,-0.163 -0.2037,-0.041 0.4889,-1.548 0.3259,-0.1223 z m -6.1108,0.041 0.2444,0.082 -0.1222,0.3667 -0.2037,-0.041 0.082,-0.4074 z m 24.0359,0 0.1629,0.2445 0.2037,0.082 0.3259,-0.1222 -0.041,0.1629 c -0.3961,0.037 -0.7256,0.1179 -0.9777,0.2037 l -0.041,0 -0.1629,-0.041 0.2851,-0.4481 0.2445,-0.082 z m -12.018,0.082 0.6111,0.1223 -0.1222,0.4074 -0.4889,-0.5297 z m 3.9517,0.1223 0.3259,0.082 -0.041,0.1629 -0.2852,0.082 0,-0.041 0,-0.2851 z m 4.8072,0.041 0.2037,0.041 0,0.041 -0.2037,0 c 0,-0.03 0,-0.052 0,-0.082 z m -13.8105,0.082 0.2852,0.082 -0.082,0.611 -0.3667,0.1223 0.041,-0.4074 0.1222,-0.4074 z m 29.5764,0.041 0.2037,0.041 -0.1222,0.3666 -0.2037,-0.041 0.1222,-0.3666 z m -7.4552,0.3259 0.4074,0.1222 -0.082,0.4481 -0.4074,-0.2444 0.082,-0.3259 z m -26.358,0.041 0.4073,0.1222 -0.082,0.2037 -0.4073,-0.1222 0.082,-0.2037 z m 1.6702,0 0.2037,0.2444 -0.041,0.2037 -0.3259,-0.3259 0.163,-0.1222 z m 18.1696,0.041 c 0.1619,0.088 0.2757,0.1838 0.4889,0.2851 -0.019,0.058 -0.041,0.1397 -0.041,0.2037 l -0.5297,0 c 0.032,-0.1732 0.06,-0.336 0.082,-0.4888 z m -3.2591,0.2037 0.1629,0 0,0.041 -0.1629,-0.041 z m -12.1402,0.2037 -0.082,0.5703 -0.041,0.2444 -0.2852,-0.082 0.041,-0.611 0.3667,-0.1223 z m -3.2999,0.082 0.2445,0.041 -0.1222,0.4888 -0.2852,-0.041 0.1629,-0.4888 z m 10.7144,0.041 0.7333,0.1629 0,0.082 -0.082,0.2444 -0.082,0.1223 0,0.1629 0,0.041 -0.1223,0.2852 -0.082,0 -0.2036,-0.2852 c 0.017,-0.3233 -0.065,-0.5992 -0.163,-0.8148 z m 20.0027,0 c -0.1782,0.6666 0.096,1.3875 0.6926,2.1184 l 0.2444,-0.1222 0.163,0.2444 -0.041,0.163 c -0.2464,-0.066 -0.4957,0.012 -0.6926,0.1629 -0.042,-0.016 -0.074,-0.03 -0.1222,-0.041 l -0.3666,0.1222 c 0.1402,-0.4438 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1223 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5136 0.4453,-0.7099 0.8148,-0.6111 l 0.1222,-0.4074 -0.6111,-0.163 0.8555,-0.6518 z m 2.4036,0.041 0.326,0.4888 -0.1223,0.4482 -0.2851,-0.5704 0.082,-0.3666 z m -17.9658,0.082 0.2852,0.082 -0.1222,0.4074 -0.2445,-0.326 0.082,-0.1629 z m -14.2586,0.041 0.2852,0.041 -0.082,0.2037 c -0.1131,0.033 -0.218,0.087 -0.3259,0.1222 l 0.1222,-0.3667 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6925,0.082 c 0.022,-0.1067 0.02,-0.184 0.041,-0.2852 z m -3.9924,0.082 0.041,0 0,0.1222 -0.041,0 0,-0.1222 z m 19.6769,0 0.2037,0.041 -0.2037,0.8147 -0.2037,-0.041 0.2037,-0.8147 z m -28.4357,0.1629 0.5703,0.1222 -0.2444,0.6926 -0.3667,-0.6111 0.041,-0.2037 z m 2.1591,0.041 -0.082,1.1407 0.6111,0.163 0.082,-1.1815 -0.6111,-0.1222 z m 19.5547,0.1222 0.1629,0.041 -0.1222,0.4482 -0.2037,-0.041 0,-0.041 0.041,0 0.1223,-0.4074 z m -13.4438,0.041 0.1222,0 0.2852,0.7333 -0.1223,0.163 -0.1629,0 -0.2037,-0.6111 c 0.01,-0.011 0,-0.029 0,-0.041 l 0,-0.041 c 0.026,-0.066 0.056,-0.134 0.082,-0.2037 z m 6.3145,0 0.4074,0 -0.082,0.4889 -0.3259,0 0,-0.4889 z m 4.0331,0 0.2445,0.041 -0.041,0.163 -0.2445,-0.082 0.041,-0.1222 z m -25.7062,0.082 0.082,0.041 -0.041,0.2037 -0.082,-0.041 0.041,-0.2037 z m 38.1723,0.082 -0.041,0.163 0.041,0.041 0,-0.2037 z m -21.5508,0.041 0.082,0 0,0.3259 -0.2037,-0.041 0.1222,-0.2851 z m -10.918,0.2445 c 0.2732,-0.046 0.6794,-0.013 1.1814,0.041 l -0.1222,0.4074 c -0.3876,-0.088 -0.7501,0.1822 -0.937,0.774 l -0.5704,-0.8963 c 0.053,-0.1664 0.1749,-0.2802 0.4482,-0.3259 z m 14.0956,0.041 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.774,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.1549,0.041 0.4889,0.1222 -0.2852,1.0185 -0.3667,-0.4889 0.163,-0.6518 z m -17.9658,0.041 0.2444,0.041 -0.2852,0.082 0.041,-0.1222 z m 10.8365,0 0.2037,0.041 -0.041,0.1222 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.2852 z m 9.5736,0.1222 -0.1222,0.082 -0.082,0.1629 0.2037,0.2445 0,-0.4889 z m -13.8104,0.082 0.4073,0.082 -0.3259,0.4481 -0.3259,-0.082 -0.041,-0.1629 0.2852,-0.2852 z m -10.4292,0.041 0.1222,0.081 0,0.2444 -0.1629,-0.041 c 0.032,-0.1024 0.017,-0.1886 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1222,0.6111 c -0.1738,-0.1302 -0.3351,-0.2839 -0.4889,-0.3667 -0.043,-0.2456 -0.071,-0.5151 -0.041,-0.8147 z m -8.5551,0.041 0.3666,0 0,0.2444 -0.3666,0 0,-0.2444 z m -16.4585,0.082 0.1629,0.041 -0.1222,0.4074 -0.2852,-0.082 0.082,-0.2852 0.163,-0.082 z m 4.1961,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.521,-0.509 -0.5296,-1.3036 z m 1.7925,0.1629 -0.2445,0.6926 0.6519,0.163 0.2037,-0.6926 -0.6111,-0.163 z m 3.0146,0.2445 c 0.537,0.1214 0.591,1.2374 0.163,3.2998 -0.149,0.2487 -0.3559,0.7021 -0.5703,1.1407 l -0.5704,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5932,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.1629,-1.6703 z m 9.6959,0.041 0.1222,0.1222 -0.2444,0.2852 -0.1222,0.4481 -0.1223,0 -0.2851,-0.082 -0.041,-0.4481 0.082,-0.1222 0.2444,0.2444 0.3667,-0.4481 z m 5.3775,0 c 1e-4,0.306 -0.1563,0.4481 -0.5703,0.4481 l 0,0.2037 0.4074,0 -0.3667,0.6518 -0.4074,-0.082 0.082,-0.082 0,-0.2851 -0.041,-0.041 0.4074,-0.7741 c 0.1595,-0.01 0.3126,-0.041 0.4889,-0.041 z m -13.4438,0.041 0.2852,0.041 -0.4482,1.2629 -0.082,0.3259 c 0.198,0.081 0.3667,0.1667 0.5297,0.2444 l -0.2445,0.4482 -0.1222,-0.2037 -0.3259,0.1629 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.1629,-0.4888 0.041,0.041 0.2852,0 0.1629,-1.3037 z m -8.1885,0.082 0.5703,0.1222 -0.1629,0.4074 -0.4074,-0.5296 z m 13.1586,0.082 0.082,0.082 -0.1629,-0.041 0.082,-0.041 z m 4.3591,0 0.3259,0 c -0.046,0.2542 -0.075,0.4486 -0.081,0.6518 l -0.6111,0 0.082,-0.5703 0.2852,-0.082 z m -3.1369,0.082 0.082,0.4888 c -0.2042,-0.1067 -0.3488,-0.235 -0.4481,-0.4074 l 0.3666,-0.082 z m -1.7518,0.082 -0.1222,0.4888 -0.1629,0 0,-0.4073 0.2851,-0.082 z m 18.0066,0.041 0.2037,0.041 -0.1629,0.6518 -0.2037,-0.082 0.1629,-0.6111 z m 0.6518,0 0.4889,0.1222 -0.4074,1.4666 -0.1629,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2445,0.041 l 0,-0.3667 0.3259,-1.2221 z m -21.2249,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5035,0.1222 c 0.081,0.036 0.1343,0.08 0.2037,0.1222 l -0.2444,0.041 0.041,-0.1629 z m -12.1809,0.082 0.2852,0.041 -0.2852,0.8963 -0.2852,-0.041 0.2852,-0.8963 z m 1.7925,0.1629 -0.1222,0.4482 0.6111,0.1222 -0.4889,-0.5704 z m 19.5954,0 c 0.045,0.041 0.1551,0.1195 0.2037,0.163 l -0.082,0.5296 -0.8963,2.8517 -0.5703,0.8148 0.3667,1.0592 -0.6519,-0.1629 -0.3666,2.0776 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.1629,-1.4666 0.4889,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.4074,-0.5703 0.3666,-0.1223 0.2445,0.041 0.082,-1.1406 0.3666,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1222,0.163 -0.1629,-0.041 0.041,-0.1222 z m 1.8333,0.1223 0.082,1.6295 0.4888,0.1222 0.2037,-0.2037 -0.2444,0.8148 c -0.1147,-0.1898 -0.1569,-0.2813 -0.2852,-0.4889 l -0.2037,0.082 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4074,-0.6518 0.4482,-1.2629 z m 0.5296,0 0.3666,0.082 0,0.082 -0.2444,0.3666 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.1629 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4073 z m 1.7925,0.2444 0.2037,0.082 0,1.0593 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.163,0.1222 l -0.3666,-0.082 0.3259,-1.2222 z m -32.1022,0.041 0.2444,0.082 -0.9777,3.0962 -0.2445,-0.041 0.9778,-3.1369 z m 29.5764,0.163 0.082,0.041 -0.163,0.6111 -0.2037,-0.041 0.1223,-0.4481 0.1629,-0.163 z m -14.0142,0.163 0.2037,0 0,0.4888 -0.2037,0 0,-0.4888 z m 11.6921,0.082 0.2037,0.082 0.041,0.2444 -0.2852,-0.2037 0.041,-0.1222 z m -24.2804,0.082 -0.1629,0.4481 0.611,0.1629 0.163,-0.4888 -0.6111,-0.1222 z m 27.1321,0.041 0.2037,0.041 0.041,0.6925 -0.4074,-0.1222 0.163,-0.6111 z m -29.0468,0.041 0.2852,0.041 -0.2037,0.6518 -0.2445,-0.082 0.163,-0.6111 z m 31.5726,0.2036 0.4074,0.1223 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.082 0.082,-1.1407 c -0.055,-0.012 -0.1121,0 -0.163,0 l 0.082,-0.2852 z m -19.5547,0.2445 0.041,0 0,0.4481 -0.2036,0 0.1629,-0.4481 z m -5.5404,0.041 0.6925,0.1629 -0.5703,1.1815 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9478,0.2037 0.4074,0 0,0.4888 0.2445,0 0.041,-0.041 -0.041,0.2852 -0.326,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3666,-0.082 -0.163,0.041 c 0.1409,-0.1216 0.2037,-0.2569 0.2037,-0.4481 z m 13.892,0 0.2444,0.041 0.1222,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1223,-0.4074 z m -11.8143,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2037,-0.2037 c -0.1035,0 -0.1645,0.01 -0.2444,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.7741,0 0.4888,0 0.163,0.041 -0.2445,0.774 -0.5296,0.3259 -0.2444,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2851,-0.082 -0.2851,-0.2851 0.1222,-0.3667 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.1223 0.041,-0.082 z m -22.5286,0.1629 0.6518,0.163 -0.4889,0.6111 -0.3666,-0.082 0.2037,-0.6926 z m 14.9511,0.1222 0.2037,0 0.3667,0.082 -0.4074,0.2037 -0.041,0.2037 0.041,0.1222 -0.163,0.041 -0.2036,0 0.2036,-0.6518 z m 20.0028,0.041 0.2037,0.041 -0.041,0.2037 -0.2037,-0.041 0.041,-0.2037 z m -18.8213,0.163 0.2444,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.082 -0.2445,-0.082 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2851,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2036,-0.082 0.1629,-0.4481 -0.5703,-0.1222 -0.041,0.2037 0.3259,0.8147 -0.3259,0.1223 c -0.1052,0.3329 -0.023,0.6072 0.2851,0.774 -0.041,0.1099 -0.074,0.22 -0.1222,0.3259 l -0.2444,0.082 0.1222,-0.4074 -0.5703,-0.1222 -0.2445,1.7518 c -0.1707,0.1743 -0.3679,0.3712 -0.5703,0.5296 l 0.2037,-0.2852 c 0.09,-0.6137 -0.1266,-0.9903 -0.6111,-1.0999 l 0.1222,-0.4074 0.6111,0.1222 0.1222,-0.2852 -0.3259,-0.2852 0.4481,-0.1222 0,-1.1814 0.5296,-1.7925 z m -27.3766,0.041 0.8148,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0184 0.1222,-0.4074 z m 2.4851,0.041 0.5703,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.0208,0.1222 0.2851,0.041 -0.2037,0.6926 -0.2851,-0.041 0.2037,-0.6926 z m -23.3027,0.041 0.2037,0 0,0.2037 -0.2444,-0.041 0.041,-0.163 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2852 -0.3667,1.3444 -0.041,0 0.4074,-1.3444 z m -11.4884,0.082 0.2444,0.082 -0.082,0.2037 -0.2851,0.1222 0.1222,-0.4074 z m 10.3069,0 0.041,0 c 0.027,0.1987 0.01,0.418 -0.041,0.6518 l -0.1629,-0.041 0.1629,-0.6111 z m 1.5889,0 0.1222,0.041 0,0.2037 -0.163,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.1629,0 -0.4481,0.4481 -0.2037,0 0.4889,-0.4481 z m 3.1369,0 0.2851,0 -0.082,0.4481 -0.3259,0 0.1222,-0.4481 z m -22.4471,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.9028,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1384,-0.184 -0.2037,-0.2852 z m 10.7143,0.2037 -0.082,0.2852 -0.041,0.082 -0.041,0.1222 -0.163,-0.2037 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1466 -0.1222,-0.2037 z m -4.1554,0.041 0.6111,0.1222 -0.082,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.2222,0.082 -0.2037,0.6111 -1.2629,0 0.2444,-0.6926 z m 10.918,0.041 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2994,0.082 0.2851,0.4074 -0.2851,0.4481 -0.2445,-0.041 0.2445,-0.8148 z m 1.1406,0.3259 0.1223,0.6111 -0.2852,-0.082 0.1629,-0.5296 z m 4.1554,0.041 0.1222,0 c -0.064,0.204 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1222,0.4074 0.041,0.8962 -0.4074,0.4889 -0.2037,-0.041 0.3259,-1.1814 -0.4481,-0.1222 0.2444,-0.8148 0.4074,0.1222 0.082,-0.2852 z m -17.2325,0.041 0.3666,0 0,0.2852 -0.2444,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.163,0.5703 -0.2444,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.4073,0 -0.1222,0.6926 c -0.1459,0.1526 -0.3487,0.2496 -0.5703,0.3259 l -0.6111,-0.4482 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.414,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.4472,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7703,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4074 z m 21.4286,0 0.2852,0.1629 -0.082,0.2037 -0.2852,-0.041 0.082,-0.3259 z m -2.3221,0.082 0.2852,0.082 -0.2852,0 0,-0.082 z m -14.2993,0.3666 0.4888,0.5296 -0.2037,0.6519 -0.041,0 -0.2444,-0.3259 -0.5296,-0.1223 c -0.048,0.151 -0.1391,0.2794 -0.2444,0.3667 l -0.8555,-0.2444 c -0.047,-0.2319 -0.2222,-0.4009 -0.6111,-0.4889 l 0.041,-0.2037 0.5703,0.1222 0.2037,0.2444 c 0.1053,-0.3329 0.5689,-0.446 1.4259,-0.5296 z m 3.1776,0.326 0.3667,0.4481 -0.6519,-0.1222 0.2852,-0.3259 z m 21.6731,0 0.1222,0.2036 c -0.02,0.075 -0.087,0.1637 -0.1222,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3444,0.1222 0.2037,0.3666 -0.041,0.2037 -0.2445,-0.3666 c 0.023,-0.07 0.061,-0.132 0.082,-0.2037 z m -25.9099,0.4074 0.2444,0.041 -0.1222,0.4073 -0.2444,-0.041 0.1222,-0.4073 z m -1.5074,0.082 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1177 -0.1629,-0.163 z m -3.9109,0.082 c 0.1984,0.045 0.3656,0.1069 0.5296,0.1222 l 0.4889,0.6111 0,-0.4889 -0.1222,-0.1222 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2001 0.3052,0.427 0.4889,0.6518 l -0.326,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.2852,-0.041 -0.6518,0.2852 0.041,0.6111 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4888,-0.4889 l 0.082,-0.2037 -0.3667,-0.082 c -0.1552,-0.1722 -0.3026,-0.3448 -0.4481,-0.5296 l 0.6518,0.1222 0.163,-0.4888 z m 11.7328,0.2444 0.4481,0 0,0.4889 -0.4481,0 0,-0.4889 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.4406,0.041 0.163,0.2852 -0.041,0.1629 -0.9778,0 -0.2851,0 0,-0.041 c 0.097,0.022 0.1954,0.061 0.2851,0.041 0.1795,-0.041 0.3597,-0.1964 0.4889,-0.4074 l 0.3667,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.157,0.2268 0.163,0.3666 l -0.6926,0 0.163,-0.2851 0.3666,-0.082 z m 17.1103,0.041 0.163,0.041 -0.041,0.1629 -0.163,-0.082 0.041,-0.1222 z m -21.1434,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2444,0.2852 l -0.3666,0 0,-0.2852 z m 11.692,0.4481 0.5296,0.1222 -0.082,0.2445 -0.5296,-0.1222 0.082,-0.2445 z m -13.0364,0.082 0.1629,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2851 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.163,0 -0.082,0.2445 -0.3667,0.2036 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2036 -0.1222,-0.2852 0,-0.082 z m 25.421,0.041 0.1222,0.4481 -0.1222,0.2852 0,-0.7333 z m -16.1733,0.163 -0.041,0.2037 -0.041,0.4888 -0.937,-0.1222 -0.082,-0.082 0.774,-0.3666 -0.3666,-0.082 0.6925,-0.041 z m -3.5036,0.041 -0.041,0.1222 -0.2851,-0.082 0.3259,-0.041 z m 4.7665,0 0.4481,0.082 0,0.041 0,0.2037 c -0.1904,-10e-5 -0.2989,0.048 -0.4074,0.1222 l -0.041,-0.4482 z m -2.5666,0.041 -0.1222,0.4481 -0.6111,-0.082 -0.2444,-0.2444 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2445 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7888,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.1629,0.2444 0.2852,0 0.163,-0.1222 0.2851,0.2852 -0.3259,0.3666 c -0.7618,0.018 -1.1993,0.1248 -1.2629,0.3259 l -0.082,0.2037 0.2852,0.082 0.5296,0 -0.2444,0.2852 c -0.3068,0 -0.7246,-0.1575 -1.1815,-0.3667 l 0.1223,-0.3259 -0.3667,-0.082 -0.3259,0.163 c -0.3254,-0.1839 -0.6735,-0.4253 -1.0592,-0.6926 0.5299,0.1199 0.9408,0.021 1.2222,-0.2852 0.452,0.097 0.8964,0.163 1.3851,0.163 l 0.082,0 0.1629,0.041 0.041,-0.163 0.1222,-0.1222 z m 1.9147,0.082 c 0.012,0.2781 0.1751,0.4716 0.6111,0.5703 l -0.041,0.1222 -0.163,0.082 c -0.4016,-0.033 -0.7787,-0.07 -1.0999,-0.082 0.1875,-0.1742 0.4654,-0.4655 0.6925,-0.6925 z m 25.1766,0 0.1222,0.041 -0.2444,1.0184 -0.1222,-0.041 0.2444,-1.0184 z m -10.9587,0.082 0.2444,0.082 -0.082,0.2851 -0.1629,0 0,-0.3666 z m -20.8176,0.1222 c 0.2965,0.3446 0.6324,0.7122 0.9777,1.0999 l -0.7333,-0.1629 c -0.2939,-0.2508 -0.5827,-0.5253 -0.8555,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2444 0.4481,0.7333 -0.3259,0 c -0.2313,-0.1353 -0.4738,-0.2499 -0.6925,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.4481,-0.082 z m 23.2212,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.4074,-1.3036 z m 11.2846,0.1222 -0.2037,0.4074 0.082,-0.3259 0.1222,-0.082 z m -16.2955,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.6769,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.3666,0 0.2037,-0.082 z m 29.169,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1196,-0.087 0.2149,-0.1918 0.326,-0.2852 z m 3.8295,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2036,0.082 c -0.072,0.065 -0.1696,0.1008 -0.2444,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4889 -0.078,-0.08 -0.1398,-0.2017 -0.2037,-0.326 0.1572,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.1,0.5296 -0.1629,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2851 l 0.7333,-0.041 z m -4.9294,0.1222 c 0.1297,0.1454 0.2301,0.2561 0.3666,0.4074 l 0,0.2037 c -0.066,-0.043 -0.1389,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.1629,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2445,-0.163 l 0.163,-0.041 0.041,-0.1629 z m 10.0217,0.082 0.3667,0.2445 -0.082,0.082 -0.2037,0 c 0,-0.1208 -0.037,-0.2283 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.082 -0.2444,0.1223 -0.163,0 0,-0.2037 z m -3.0961,0.1223 0.4074,0.081 -0.4074,0 0,-0.081 z m 5.8256,0 0.2445,0.041 0.2444,0.2851 0.082,0 0,0.4074 c -0.3615,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1557,0 0.2445,0 l 0,-0.3259 z m -6.4774,0.3259 0.6518,0 0,0.4888 -1.0185,0 0.3667,-0.4888 z m 8.1885,0.041 0.2851,0.082 -0.041,0.1222 c -0.1062,0.015 -0.2175,0.027 -0.3259,0.041 l 0.082,-0.2445 z m 9.4107,0.041 c -0.02,0.2876 -0.042,0.5616 0.041,0.774 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4481 0.5703,-0.8148 z m -12.0588,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2444 -0.2444,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2444,-0.2444 z m -8.6366,0.1629 0.6518,0 0,0.2037 -0.6518,0.2037 0,-0.4074 z m 1.0185,0 0.4888,0 0,0.2037 -0.4888,0 0,-0.2037 z m 3.585,0 0.3666,0 -0.3666,0.4074 -0.4889,0 0.4889,-0.4074 z m -15.1549,0.2037 0.041,0 0,0.2037 -0.4481,0 0,-0.041 0.4074,-0.163 z m 3.3406,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 4.9702,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.081 0.041,0 -0.1629,0.4889 -0.5296,-0.1222 0.041,-0.082 c 0.1754,-0.071 0.4149,-0.2009 0.611,-0.2852 z m 5.2961,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2444,-0.1222 z m -32.6319,0.2852 0.6519,0 0,0.2444 -0.6519,0 0,-0.2444 z m 2.9332,0 0.3667,0 -0.3667,0.5296 0,-0.5296 z m -3.5442,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.3292,0 0.611,0 1.0185,0.2852 1.2222,-0.2852 1.3036,0 0,0.4889 -5.1738,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.6035,0 -0.4482,0.4889 -0.2037,-0.2037 -1.0184,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5703,0 0,0.2852 -0.5703,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.1629 0.041,-0.041 z m -30.5134,0.2852 1.0184,0 0,0.2037 -1.0184,0 0,-0.2037 z"
+           id="path6116-9"
+           transform="matrix(0.61596339,0,0,0.61596335,-408.29514,329.71724)" />
+        <path
+           inkscape:connector-curvature="0"
+           inkscape:export-ydpi="90"
+           inkscape:export-xdpi="90"
+           inkscape:export-filename="Z:\private\général\illustrations\Charte graphique\OD\OD 5.0\aboutpage\png\aboutpage_OD5.0.png"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.30051804px;line-height:125%;font-family:'karabinE.';-inkscape-font-specification:'karabinE.';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.22999998;fill:#8ae234;fill-opacity:1;stroke:none;filter:url(#filter4332-9)"
+           d="m -104.31687,974.2719 -2.5665,0.48886 0,1.34439 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07768 0.2037,0 -0.2037,0.28517 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24443 0,8.55516 0.6111,2.24064 0.082,0.57034 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.1079,0.10817 0.1629,0.16295 l 0,0.16296 -0.2444,-0.0815 c -0.024,-0.006 -0.057,-10e-4 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61108 -0.4074,0.0815 0,3.87019 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85552 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2036,-0.0815 0,11.12172 0.1629,-1.1814 0.1222,0.041 0,1.0184 0.2037,0 0.4889,0.5296 c -0.1,0.082 -0.1897,0.1934 -0.2444,0.3667 l -0.2037,-0.2444 -0.082,0 -0.163,-0.6519 0,0.5704 -0.041,0 -0.2444,0.1222 0,0.8962 0.2851,-0.1222 0,0.3259 -0.1222,-0.041 -0.1222,0.4074 0.2444,0.041 0.3667,-0.1222 0,0.2444 -0.3667,0 0,0.8556 -0.2851,0.082 0,0.2037 0.2851,-0.082 0,0.082 c 0.4141,0 0.5704,-0.1422 0.5704,-0.4482 l -0.2037,-0.2037 0.5296,0 -0.1222,0.082 -0.082,0.2445 0.1222,0 0,0.082 0.2037,0.2444 0,0.2852 -1.0185,0 0,0.2444 3.3813,0 c 0.2347,-0.6383 0.527,-0.9777 0.937,-0.9777 l 0,-0.4074 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.2445,-0.3259 0.082,-0.2445 -0.2444,0.082 -0.6518,0 -0.3259,0.1223 0,-0.041 -0.3667,-0.082 -0.2852,0.2037 -0.4481,-0.2037 0,-0.2445 1.0592,0 0,-0.2037 -0.2037,-0.2037 0,-0.2444 0.4889,0.163 -0.082,0.2037 0.5703,0.1222 0.2852,-0.041 0.6111,0.2037 -0.082,0.2444 0.2852,0.082 0.5703,-0.041 0.6518,0.2444 0,0.2037 c -0.3219,10e-5 -0.8162,0.3865 -1.3851,1.1815 l 18.576905,0 c 0.082,-0.08 0.1635,-0.1631 0.2445,-0.2445 0.212,0.076 0.504,0.165 0.7333,0.2445 l 1.4666,0 -0.2445,-0.4074 1.1407,0.082 0.2037,0.082 -0.041,0.1629 -0.5296,0.082 0.7333,0 7.8626,0 0.041,-0.1629 c 0.061,0.031 0.1356,0.056 0.2037,0.082 l -0.041,0.082 1.3037,0 0.3666,-0.2445 -0.041,0.2445 2.5666,0 0.082,-0.2445 0.2444,0.041 -0.082,0.2037 0.4481,0 0,-1.3444 -0.082,0.2445 -0.2444,-0.041 0.1222,-0.4074 0.2037,0.082 0,-9.044 -0.1222,-0.041 0.1222,-0.5704 0,-1.711 -0.2852,0.082 -0.041,0.2037 0.2037,0.3259 -0.6111,1.0999 -0.2037,-0.041 0.937,-3.5035 0,-1.58882 -0.2851,0.12222 -0.041,1.05921 -0.6519,2.36289 -0.5703,0.2851 1.1814,-4.39976 0.3667,0.57034 0,-1.34438 -0.163,-0.0407 0.163,-0.57035 0,-1.83324 c -0.2598,-0.39209 -0.5239,-0.78278 -0.8148,-1.14069 l 0.8148,0.0407 0,-1.22217 -0.2037,0.85552 -0.2445,-0.0815 0.326,-1.18143 0.1222,0.0407 0,-3.54428 -0.082,0.28517 -0.4482,-0.12222 0.5297,-2.03694 0,-7.98482 -0.041,0.12222 -0.8148,0 -0.6518,-0.36665 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28517 0.2037,0.0407 0.8555,0.77404 0.2851,-0.16296 0.082,-0.28517 c -0.3162,-0.38756 -1.7549,-1.08882 -4.3183,-2.07768 l -1.0999,0 2.811,1.18142 -0.1223,0.40739 0.2852,-0.16295 0.6926,0.20369 -0.4889,0.81478 -0.2037,-0.0407 -0.1629,-0.28517 -0.2445,-0.0407 -0.3666,0.12222 0.1222,-0.40739 0.3666,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.2852,0.2037 -0.2444,-0.0407 -0.6926,-0.48887 -0.5703,0.36665 -1.5481,-1.2629 -1.8333,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54807 0.2037,0.0407 -0.1629,0.69256 -0.4482,-0.12221 -0.082,0.20369 c 0.3277,0.0876 0.5624,0.55849 0.6926,1.38512 l -0.163,0.69256 -0.2444,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93699 0.4482,0.12222 -0.1222,0.40738 -0.4482,-0.12221 -0.1222,0.40739 0.4481,0.12221 -0.1629,0.69256 c -0.4097,-0.10951 -0.6971,0.12321 -0.937,0.69256 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.163,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.2037 l 0.5296,0.16296 0.163,-0.65182 -0.4074,-0.61109 0.937,-1.38512 -0.2037,-0.0407 0.2851,-0.16295 0.082,-0.28518 -0.2037,-1.46659 0.6519,-0.24444 -0.2445,-0.0815 0.4482,-0.61108 c 0.1537,-1.06751 -0.199,-1.68478 -1.0592,-1.91472 l 0.2851,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6926,0.16296 -0.937,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2445,-0.0407 0.163,-0.65182 -0.937,0 0.2444,0.48886 -0.081,0.44813 -0.3666,-0.57034 0.082,-0.36665 -0.4481,0 -0.8556,3.09615 c -0.097,-0.0451 -0.1796,-0.0767 -0.2851,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18142 0.3666,-1.42586 -0.4888,0 -0.6111,2.36285 -0.2444,0 0.611,-2.36285 -2.6072,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.05921 c -0.9988,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62502 -0.7741,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5704,-0.0815 0,-0.28517 c 0,-0.20089 -0.2546,-0.36699 -0.7741,-0.48887 l -0.041,-0.20369 -0.9777,0 c 0.001,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13728 -0.624,-0.21604 -1.0185,-0.28517 l -1.711,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.729505,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.257605,12.83274 0,-0.93699 -0.041,0.0407 -0.1629,0.61109 0.2037,0.28517 z m -34.342905,-12.75127 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12222 z m 13.484605,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.295505,0.36665 0,0.48887 -0.4482,0 0.4482,-0.48887 z m 7.821805,0 0.082,0.0407 0.2037,0.89625 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.151605,0.0407 0.4481,0 0,0.28516 -0.4481,0 0,-0.28516 z m 5.214605,0 0.2037,0 0,0.28516 -0.2037,0 0,-0.28516 z m -2.974005,0.28516 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24444 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24444 z m 13.036505,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8143,0.0407 0.4481,0.12221 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48886 z m -5.8257,0.16295 0.2444,0.0407 -0.1629,1.58882 -0.2852,0.16295 -0.1222,0.48887 -0.5296,2.52581 -0.6518,-0.65182 1.0999,-2.64803 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01848 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.774,3.87019 -0.2852,0.16296 -0.082,1.14068 -0.2037,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2851,-0.28517 1.3851,-5.21458 z m -17.721405,0.2037 0.244505,0 0.041,0.16295 -0.082,0.0407 -0.122305,0 -0.082,-0.20369 z m 14.543805,0.12221 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.820805,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.937,0 0,-0.28517 z m 11.855005,0 0,0.5296 -0.4888,0 0.4888,-0.5296 z m 24.3619,0.16295 c -0.074,0.27639 0.1417,0.51308 0.5703,0.65182 l 0,-0.5296 -0.5703,-0.12222 z m -6.0701,0.32591 0.4481,0.12222 -0.3666,1.30364 -0.4482,-0.12221 0,-1.18143 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48887 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57035 l 1.7925,-0.16295 z m 0.3666,0 0.6519,0.20369 0,0.28518 -0.8556,0 0.2037,-0.28518 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.8333,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.20369 -0.4482,0.85552 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40739 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18143 -0.4889,1.79251 -0.5296,-0.12222 -0.4073,-1.30364 0.1222,-0.48887 0.2444,0.0407 -0.1222,0.48887 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81478 0.2852,-0.12221 c 0.1185,-0.44346 -0.079,-0.76489 -0.5703,-0.89626 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21837 0.041,-0.20369 z m -20.4917,0.12222 0.2444,0.0407 0.1223,0.48887 -0.326,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.740405,0.0815 0.4481,0 -0.4481,0.52961 0,-0.52961 z m 1.3037,0 0.8147,0 c -0.012,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28518 z m 1.3036,0 0.3667,0 0.4073,0 0,0.2037 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28518 z m 1.1407,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.292305,0 0.6518,0 -0.082,0.24444 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.1434,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40739 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4481,-0.12222 z m 10.144,0.36665 0.4889,0.12222 0.4074,0.57034 -0.6519,0.32591 0.2852,0.0815 -0.6111,1.01847 c -0.3277,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.2037 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.7333 -0.4481,-0.12222 0.1629,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7285,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.229305,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.862605,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.0592,0 0.8148,0 0,0.24443 -0.8148,0 0,-0.24443 z m 22.3656,0.0407 0.4482,0.12221 0.2851,0.28517 0.082,-0.40738 0.2445,0.0407 -0.1223,0.44812 -0.2037,-0.0815 0.163,0.28518 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.7741,0.7333 l -0.3666,-0.61108 0.3666,-1.30364 z m -31.002205,0.0407 0.2851,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.7258,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.980105,0.0407 0.5296,0.16296 -0.041,0.20369 -0.5296,-0.12222 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48887 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.163,0.28518 l -0.3667,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5522,1.1e-4 0.8148,-0.22357 0.8148,-0.5296 l -0.3666,-0.40739 0,-0.48887 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32592 0.163,-0.16295 z m -3.503505,0.0815 0.081,0.44812 -0.4481,0.12222 -0.041,-0.16295 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2852,1.0667 0.7124,1.54315 1.303705,1.38512 l 0.082,0.16295 -0.163005,0.24444 -0.2444,-0.12222 c -0.5964,0.73087 -0.8708,1.45178 -0.6926,2.11842 l -0.8555,-0.65182 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61108 l 0.9777,-0.7333 -0.4481,-0.93699 -0.041,-0.16296 0.4074,-0.12221 z m 23.587805,0.24443 0.4482,0.12222 -0.082,0.24443 -0.4482,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.5514,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.2212,0.0407 0.4481,0.12222 0,0.97773 -0.2852,0.12222 -0.041,0.2037 -0.1629,1.46659 -0.4074,0.57035 0.2037,0.24443 -0.3259,0.2037 0.3666,0.57034 -0.2852,0.12222 -0.2444,-0.0407 -0.041,1.14069 -0.3259,1.14068 -0.4481,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1223,0.0815 0.163,0.0407 c 0.083,0.20379 0.1422,0.44083 0.163,0.69256 l -0.041,0.2037 -0.163,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54808 0.774,-2.85172 0.4481,-0.81478 -0.2851,-1.05921 0.5296,0.16296 0.3259,-2.07769 z m -28.435805,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.2852,-0.16296 -0.2037,0.0815 0.3666,0.48887 -0.4888,0.61108 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48887 -0.163,0 -0.2037,0.28517 -0.2037,0 0.3667,-0.61108 1.2629,-0.2037 z m 4.807205,0 0.163,0.65183 -0.2037,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.088605,0.28518 0.2037,0 0,0.28517 -0.2037,0.24443 -0.2444,0 0,-0.32591 c 0.078,-0.065 0.1634,-0.13004 0.2444,-0.20369 z m 32.591105,0.40738 1.5074,1.34439 -0.1222,0.44812 -0.5296,-0.16295 -0.4889,1.79251 -0.2037,-0.0407 0.4074,-2.48507 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.7741,0 -0.1223,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4172,0.12222 0.041,0 0.2037,0.2037 -0.163,0.0407 -0.082,-0.24443 z m 3.422,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4074,0.12222 c -0.1395,0.12918 -0.3455,0.16298 -0.6519,0.16295 l -0.2036,0 0,-0.20369 0.4888,-0.24443 z m -4.6443,0.0407 0.6519,0.20369 0,0.44813 c -0.4141,0 -0.6518,0.1829 -0.6519,0.48886 l -0.1629,0 c 0,-0.45892 -0.1314,-0.73324 -0.4074,-0.7333 l 0,-0.20369 0.5703,-0.20369 z m 11.4477,0.0407 0.3259,0.61109 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.2037 z m -18.0881,0.0407 0.5704,0.28518 0.6518,2.36285 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85552 0.041,0.65182 0.2851,0.12222 -0.3666,0.57034 -1.1814,-4.3998 z m 15.44,0 0.2445,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2851,-1.09995 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48887 0.041,0.16296 -0.4889,0.12221 -0.1629,-0.65182 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36285 -0.2852,-0.16295 -0.8148,-3.05542 z m -7.821805,0.0815 0.082,0.36665 -0.2037,0.0407 -0.082,-0.36665 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.7759,0.20744 -1.0756,0.74803 -0.937,1.71104 l 0.3667,0.57034 -0.2037,0.0407 0.5703,0.24443 -0.1629,1.30365 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.5704,0.85552 c -0.141,0.11253 -0.2864,0.23952 -0.4482,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81477 -0.4481,0.12221 -0.2037,-0.81477 0.4074,-0.12222 -0.1222,-0.44813 -0.6518,0.2037 0.082,0.44812 -0.2037,0.0407 -0.163,-0.61108 c 0.1174,-0.74568 0.3563,-1.1839 0.6518,-1.2629 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61109 0.2037,-0.0407 1.3444,-2.03695 z m 31.328205,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28137 -0.041,0.2037 0.2852,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6926,2.64802 c -0.6159,-0.32291 -0.8481,-0.90564 -0.6111,-1.79251 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48887 0.082,-1.18142 -0.5703,-0.12222 -0.6926,2.68876 0.2445,0.28518 -0.3667,0.12221 -0.041,0.2037 0.2037,2.1999 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08429 -0.2444,1.50733 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12222 -0.4481,-0.12222 -0.163,-0.93699 0.5704,-0.48887 0,-0.12222 c 0.055,0.0879 0.1486,0.1672 0.2851,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2445,-1.87399 0.3666,-0.5296 0.7333,-3.62576 0.2444,-0.89625 -0.4481,-0.12222 -0.3666,1.34438 -0.3667,0.12222 0.2444,0.28517 -0.1222,0.48887 -0.5296,-0.16296 0.8148,-3.09615 z m -9.207,0.12221 0.2037,0.0407 -0.2444,0.89626 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01848 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81478 -0.2037,0.0407 -0.2445,-0.77404 0.2445,-0.0815 z m -6.722005,0.0407 0.041,0 0.1223,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.261405,0.0407 0.2445,0.0407 -0.2037,0.69256 -0.2037,-0.0407 0.1629,-0.69256 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48886 -0.082,-0.36665 0.2852,-0.57034 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1892,-0.0178 0.3783,-0.0562 0.5296,-0.0815 z m -11.7327,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.132,0.12222 0.7741,0.20369 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24443 z m -8.7181,0.0407 0.5704,0.16296 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24444 z m -15.4807,0.0407 0,0.61109 0.4481,0 c 0,0.33785 0.036,0.62662 0.1222,0.81477 -0.2101,0.0427 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.3667,-0.40739 -0.6518,0.2037 c 0,-0.11015 -0.034,-0.20771 -0.082,-0.28518 l -0.2444,-0.89625 1.3443,-0.16296 z m 2.8924,0 0.2852,0.2037 0.2037,0 1.874,-0.2037 0,0.2037 -0.2852,0.65182 c 0.3992,-0.22119 0.701,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.1937 0.2037,0.28517 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2852,0.32591 l 0.041,0.16295 -0.2037,-0.20369 -0.2445,0.12222 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3666,0.0815 0.041,-0.20369 -0.2851,-0.52961 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.2037 -0.7741,-0.2037 -0.4481,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2416,3e-5 0.4327,0.0164 0.6111,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40739 z m 16.2956,0 0.2444,0.0815 -0.2444,0.89626 -0.2445,-0.0815 0.2445,-0.89626 z m -19.9621,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.5481,0.0815 0.2445,0.28517 -0.2037,0.36665 -0.163,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.510605,0.12222 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.836005,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.662205,0.0407 0.5297,0.937 0.041,0.16295 -0.2037,0.28518 0.774005,1.83325 -0.529605,0.32591 -0.2852,-1.50734 -0.1222,-0.44813 -0.2444,-0.12222 -0.163,-1.42586 0.2037,-0.0407 z m -0.8962,0.0407 1.1407,4.23685 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6926,-3.4628 -0.041,-0.20369 -0.2851,-0.12222 0.4888,-0.12222 z m 19.880605,0.0815 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -7.7812,0.0815 0.6519,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.326,0.16296 l -0.3259,-0.0815 0,-0.28517 z m -9.2069,0.12222 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24444 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8138,0.0815 0.3667,0 c -0.095,0.17535 -0.2074,0.27297 -0.3667,0.28517 l 0,-0.28517 z m 7.1293,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.5073,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61109 -0.1222,0.40738 -0.4481,-0.12221 0.2444,-0.89626 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56117 0.6518,0.69256 l -0.2444,0.89626 c -0.1374,-0.16028 -0.2848,-0.28993 -0.4482,-0.40739 l 0.041,-0.20369 -0.4481,-0.12222 0.2445,-0.89626 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.1222,-0.0407 0.163,-0.0815 z m -15.602905,0.16296 0.082,0.16295 0.3259,2.9332 0.4074,-0.12222 -0.1223,-0.36665 0.6111,0.24444 c -0.4434,0.11851 -0.6365,0.41476 -0.5296,0.81477 l 0.2444,0.12222 -0.2444,0.7333 0.041,0.20369 0.4481,-0.12221 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44813 -0.3666,1.14069 -0.3667,-0.0815 c -0.056,0.0711 -0.069,0.13431 -0.1222,0.20369 l -0.4481,-1.58881 0.041,-1.09995 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16295 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93699 l -0.4481,-0.77404 -0.041,-0.16295 0.5704,-0.36665 z m 31.165205,0 0.5296,0.12221 -0.2037,0.69256 -0.5296,-0.12221 0.2037,-0.69256 z m -28.924605,0.28517 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.725705,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9067,0 0.5296,0.12221 -0.1223,0.48887 0.4482,0.12222 0.1629,-0.69256 0.4482,0.57034 -0.5704,0.81478 -0.1629,1.87398 -0.4482,0.52961 -0.2444,-0.0407 c 0.5137,-1.92153 0.4109,-2.92097 -0.2444,-3.09615 l 0.2037,-0.69256 z m -20.0436,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.7925,0 0.2037,0 c 0.1369,0.16132 0.1866,0.38537 0.163,0.65183 l -0.1222,0 -0.2445,-0.65183 z m -2.5665,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5476,0.16296 0.2444,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.3259,-0.24443 l -0.041,-0.28517 z m -7.1701,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.0815 0.4074,0.12222 -0.3259,0 -0.081,-0.12222 z m -6.7219,0.12222 0.2037,0.0815 -0.082,1.22217 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48887 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6253,0.0407 0.3259,0.0815 -0.163,0.65182 -0.2037,-0.0815 -0.041,-0.52961 0.082,-0.12222 z m -15.3586,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1222,0.16295 0.082,0.28518 -0.3259,-0.40739 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.1629,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24444 c -0.1412,0.67657 -0.1364,1.03083 0.1222,1.09995 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.4482,-0.0815 c -0.206,-0.77059 -0.1475,-1.24298 0.1222,-1.34439 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.7333 0.2852,0.0815 -0.326,0.12221 -0.082,0.24444 0.2445,0.28517 -0.082,0.16296 -0.4074,0.57034 0.041,0.85552 -0.6518,1.30364 0.2444,0.28517 -0.4889,-0.16295 0.3667,-1.34439 -1.1814,0.7333 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01847 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79803 -0.2037,-0.85551 l 0.2852,-0.16296 0.041,-0.20369 0.2037,-1.30364 c 0.1374,-0.1299 0.2764,-0.27149 0.4074,-0.40739 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2445,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.2444,0.0407 0.082,-0.36665 0.3667,-0.16296 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.19121 0.2037,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.32591 l 0.2852,0.0815 0.2851,-1.05921 c 0.1085,-0.19992 0.2227,-0.4049 0.3259,-0.61108 l -0.1222,-0.16296 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2445,-0.24444 z m -22.162005,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.432005,0.2037 0.4888,0.12221 -0.4073,0.937 c -0.091,-0.13612 -0.2088,-0.26481 -0.3667,-0.36665 l 0.2852,-0.69256 z m -10.8773,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9777,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.1629,0.65182 -0.2852,-0.57034 0.041,-0.16296 z m 23.9137,0.0407 c 0.452,0.27924 0.6049,0.76826 0.4074,1.50734 l -0.5296,1.05921 c -0.1997,1.12234 -0.2914,1.89101 -0.2851,2.40359 l -0.163,-0.0407 0.041,-0.77404 0.1222,-0.48886 -0.3666,-0.77404 0.8962,-2.11842 -0.1222,-0.77404 z m -21.836,0.12222 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.0995,0 0.041,0 -0.163,0.57034 c -0.021,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.9621,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16296 z m -4.114605,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6257,0 c 0.1218,0.0561 0.225305,0.11426 0.407405,0.16295 l -0.082,0.36665 -0.162905,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.124505,0.0815 0.2445,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1222,-0.48886 z m -25.4618,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69256 l -0.4481,-0.77403 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1478,0.0407 0.2852,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8556,0 0.5703,0 0,0.0815 -0.3666,0.57035 0.1222,0.16295 -0.6111,-0.16295 c 0.107,-0.16059 0.1904,-0.4143 0.2852,-0.65183 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44813 0,0.0407 -0.081,0.16295 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0828 0.016,-0.15377 0.041,-0.24444 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48886 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2445,-0.0407 0,-0.48886 -0.2852,0.0407 -0.041,-0.24444 z m -7.6996,0.0815 0,0.77404 c -0.2652,-0.0831 -0.4074,-0.28894 -0.4074,-0.65182 0.1827,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.5405,0 0.4074,0.12222 -0.082,0.36665 -0.4482,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24444 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2444,-0.36665 0.163,-0.28517 -0.4482,-0.12222 0.5704,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2852,0.0407 l 0,0.65182 -0.2445,-0.0815 -0.041,0.12222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.163,0 -0.5296,0.77403 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.1222,0.20369 c -0.155,0.0761 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2444,-1.05921 l 0.4481,-1.62955 z m -7.2923,0.44813 c 0.2126,0.11967 0.3124,0.32245 0.2852,0.61108 l -0.2037,-0.12222 -0.082,-0.48886 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.2037 0.082,0.36665 c -0.1679,-0.14918 -0.2705,-0.48918 -0.2852,-1.01848 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.935505,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.8962,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.517705,0 0.4074,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.7333,0 0.2037,0.0815 -0.1223,0.40739 -0.2036,-0.0407 0.1222,-0.44813 z m 7.1293,0.0815 0.082,0.12222 0.2851,0.0815 0.081,-0.0407 -0.2037,1.34439 -0.6925,2.52581 -0.2444,0.48886 -0.082,-0.36665 0.2036,-0.28517 -0.2036,-0.20369 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12221 0.2037,0.0407 0.041,-1.05921 0.2852,-0.97773 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.1629,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4074,0.12222 -0.1223,0.36665 -0.2851,-0.48887 z m -10.632905,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36665 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48887 z m 27.417305,0 0.3666,0.0815 c -0.05,0.18576 -0.024,0.33527 0,0.44813 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.33531 -0.041,-0.44813 z m -3.9517,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23874 -0.082,0.36665 l -0.041,0 0.082,-0.36665 z m -17.314,0.0407 0.2037,0.0407 -0.2445,0.81477 -0.2037,-0.0407 0.2445,-0.81478 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4073,0.24443 l -0.1629,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36665 z m -21.917605,0.16295 0.082,0 c 0.01,0.0632 0,0.14342 0,0.2037 l -0.082,-0.2037 z m 32.468905,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.242905,0.36665 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1223,-0.0407 z m 6.762705,0.16296 0.2036,0.0815 -0.7333,2.81098 -0.2036,-0.0815 0.7333,-2.81098 z m 9.4514,0 -0.2037,0.81478 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89625 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2374,0.33745 0.3666,0.48887 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.2037 l -0.163,0.65182 -0.2037,-0.0407 c 0.071,-0.26674 -0.1676,-0.49256 -0.611,-0.61108 l 0.2444,-0.85552 z m 1.0185,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4889,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44812 0.2444,0.89626 -0.4481,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2444,-0.0407 0.6518,-2.40359 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24444 0.6926,0.16295 0.082,-0.20369 -0.6926,-0.2037 z m -28.680205,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.1796 -0.3023,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1448,-0.11438 0.3062,-0.20677 0.4889,-0.24443 z m 13.362405,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.955005,0.20369 0.041,0 0.3259,0.12222 c 0.029,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77404 -0.2036,-0.0407 c 0.1426,-0.53338 0.01,-0.85798 -0.2852,-0.937 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.081,0 0,-0.0407 z m -2.5665,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.443805,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0184,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4888,0.0815 l 0.082,-0.28517 z m -19.432405,0.0815 0.163,0.0407 -0.082,0.32592 -0.082,-0.36665 z m 13.810505,0.12221 0,0.52961 -0.041,0.0407 -0.041,0.16295 -0.2444,0 0.2036,-0.69256 0.1223,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3666,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9332,1.0147 0.6926,1.91472 l -0.4889,-0.12221 -0.1629,0.5296 0.3666,0.57035 -0.8555,1.2629 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30364 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57034 c -0.1386,0.96298 0.1611,1.5036 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03694 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51722 -0.6518,-1.2629 l 0.1629,-0.61109 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44812 -0.4074,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12221 0.082,-0.36665 0.4482,0.12221 0.082,-0.36665 -0.4074,-0.12221 0.1629,-0.61109 c 0.3696,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.4 -0.01,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61108 z m -24.5248,0.0407 0.4889,0.12221 -0.4074,0.57035 -0.2444,-0.0815 0.1629,-0.61108 z m 23.3027,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40739 -0.3259,-0.5296 0,-0.0407 z m -16.703,0.0815 0.6519,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.2445,-0.85552 z m 5.7035,0.2037 0.082,0 c -0.036,0.16125 -0.082,0.31655 -0.1222,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.8886,0.0407 0,0.16295 -0.082,0.24444 -0.2036,0 0.041,-0.2037 0.2444,-0.20369 z m -7.7403,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.6367,0.0815 0.6518,0.36665 -0.2851,1.01847 -0.2037,-0.0815 -0.2445,-0.937 0.082,-0.36665 z m 20.8991,0 0.4888,0.12222 0.3667,1.14069 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.4481,-0.12222 -0.041,0.2037 0.2444,0.7333 -0.2444,0.12221 c -0.1069,0.40004 0.086,0.69627 0.5296,0.81478 l -0.5704,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.9332 -0.082,0.16295 -0.5703,-0.32591 0.082,-0.20369 0.4074,-0.77404 c 0.069,-0.55307 -0.1194,-0.87896 -0.4889,-0.97774 l 0.1222,-0.36665 0.4889,0.12222 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09995 0.4481,-1.58882 z m -18.9844,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4073,-0.12221 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2851,-0.52961 0,-0.0407 z m -19.962005,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.2037 z m 1.0999,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.083805,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2036,0.0407 0,0.44813 -1.711,6.35526 -0.4889,-0.12221 0.2852,-0.12222 0.041,-0.20369 0.6926,-3.46281 0.2852,-0.12222 0.041,-1.05921 0.4888,-1.95546 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6438,0.12222 0.041,0.44812 -0.1222,0.0407 -0.082,-0.32591 0.163,-0.16295 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48887 -0.4482,-0.16296 0.082,-0.40739 z m -20.980505,0.32592 0.4889,0.12221 -0.082,0.2037 -0.163,1.38512 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81477 0.041,-0.32591 z m 3.2998,0.0407 0.4482,0.0815 c -0.1069,0.39999 -0.01,0.69501 0.2851,0.77404 l -0.041,0.20369 c -0.4433,-0.11854 -0.7027,-0.10371 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3667,-0.57035 z m 16.825205,0.0407 0.2852,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.7697,0.16296 0.2037,0.0407 -0.041,1.05921 -0.4074,-0.12222 0.2444,-0.97773 z m 20.125,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0961,0 0.2037,0.0407 -0.4481,0.937 -0.2037,-0.0407 0.2037,-0.81478 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57034 -0.9778,0 0.163,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2851,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1326,-0.43446 0.1629,-0.61109 z m -4.318305,0.16296 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.305905,0 0.2037,0.0407 c -0.1069,0.40001 -0.01,0.69504 0.2852,0.77404 l -1.4259,3.50354 0.2037,0.24443 -0.041,0.2037 -0.5296,0.89625 -0.2037,-0.0407 0.163,-1.42586 0.2444,-0.12221 0.1222,-0.44813 0.6926,-3.42207 0.2852,-0.20369 z m -35.361305,0.12222 0.1222,0.85551 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18349 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3667,0.1646 c -0.01,-0.0436 -0.032,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34438 z m 9.451405,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1222,-0.44813 z m -4.807205,0.24444 0.2037,0.0815 -0.163,0.5296 -0.2036,-0.0407 0.1629,-0.57034 z m 28.965305,0 0.2037,0.0407 -0.2851,1.01847 -0.2037,-0.0815 0.2851,-0.97773 z m -20.4916,0.12221 0.3666,0.52961 -0.1629,0.61108 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.40001 -0.4121,0.56665 -0.8555,0.44812 0.107,-0.40002 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12222 0.1629,0.24443 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8365,0.2037 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8963,0.24443 -0.4481,1.75177 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34438 l -0.4481,-0.0815 0.1629,-0.57034 z m -6.1515,0.0407 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.57035 0.041,-0.16295 z m -28.558005,0.0815 -0.2037,1.62955 -0.8147,0.24443 0.2444,-0.89625 c 0.4491,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2851,-0.0815 0.1222,-0.36665 z m 21.876805,0.0407 0.1629,0.0407 0,0.24444 -0.4074,0 0.2445,-0.28518 z m -9.5329,0.0407 0.2037,0 0.1629,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9664,0.24444 0.4889,0.12221 -0.082,0.24444 -0.5296,0.93699 -0.163,-0.24443 -0.2037,-0.0815 -0.5296,0.28517 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.1629,-0.24443 -0.2037,-0.0407 -0.244405,0.12221 0.203605,-1.62955 0.6111,0.16296 0.1222,-0.40739 c 0.7391,0.19754 1.1561,0.0741 1.263,-0.32591 z m 2.8517,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.862605,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.640505,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0407 0.1223,-0.44813 z m -9.288505,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.725205,0.0815 c 0,0.20653 -0.1299,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.8555,-0.20369 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.5481,0 0.4074,0 0.082,0.12221 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.163,-0.24443 0.1223,-0.44813 c 0.1892,0.0506 0.3495,-0.044 0.4888,-0.24443 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59857 -0.6518,0.7333 l -0.1223,-0.0407 0.4482,-0.77404 z m 4.4405,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1223,0.44813 -0.4073,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57035 0,-0.57035 z m -11.9773,0.16296 -0.082,0.36665 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.3259,0.36665 c -0.3477,0.17232 -0.5887,0.44677 -0.7333,0.81478 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44387 -0.02,-0.72709 -0.4074,-0.81478 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24443 z m -14.4216,0.20369 0.1223,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1223,0 l 0,-0.0407 z m -13.729005,0.24443 0.4482,0.0815 -0.082,0.2037 -0.4074,-0.12222 0.041,-0.16296 z m 20.165805,0 0.1629,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24444 0.2036,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.326,0.0407 -0.1474,0.0926 -0.2951,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21898 0.774,0.44813 l -0.4888,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.122,0.22481 0.1522,0.50258 0.041,0.85552 l 0.6518,0.16295 -0.3667,1.09995 -0.6111,-0.12222 0,2.11839 -1.3443,1.1407 0.2037,0.3259 -1.7518,2.4036 0.4481,-0.1222 0.2444,0.082 -0.1222,0.4074 -0.2851,-0.041 -0.2852,-0.3259 -0.2852,-0.041 -0.1222,0.4889 -0.2852,-0.082 2.4851,-7.78118 0.2444,-0.0407 -0.2851,0.97774 0.6518,0.12221 0.4074,-1.30364 -0.4482,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2851,0 0.041,-0.12222 0.2851,-0.0407 0.082,-0.20369 -0.2444,-0.0815 0.163,-0.57034 -0.2037,-0.28518 0.082,-0.20369 0.2851,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12222 -0.163,-0.16296 z m 7.8626,0 0.041,0.16296 -0.2852,-0.0815 0.2444,-0.0815 z m -20.043605,0.12222 0.4482,0.77404 -0.3259,0.16295 -0.163,-0.0407 0.041,-0.89625 z m -0.6925,0.0407 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44812 z m 19.880605,0.16295 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2851,-0.12222 z m -1.3852,0.12222 0.082,0.12221 0,0.28518 -0.4481,-0.12222 0.163,0 0.2037,-0.28517 z m 3.8702,0.12221 0.2445,0.0815 0,0.28517 0,0.65183 0,0.12221 -0.326,0.12222 -0.4073,-0.0815 0.2851,-1.14069 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.380305,0.12222 0.3667,0.48887 -0.4889,-0.12222 0.1222,-0.36665 z m 35.402105,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12222 -0.041,0.20369 -0.7741,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16295 z m 6.4367,0 -0.041,0.20369 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12221 z m -27.172805,0.24443 0,0.20369 -0.4074,0.2037 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.136905,0 0.3666,0.0815 -0.2444,0.69256 -0.3259,-0.0815 0.2037,-0.69256 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.606805,0.0815 0.2037,0.0407 -0.3666,1.34438 c -0.019,-0.29822 -0.091,-0.48679 -0.2445,-0.57034 l 0.041,-0.32592 0.3667,-0.48886 z m 10.307005,0.0815 0.2444,0.0815 -0.1222,0.44813 -0.2852,-0.0407 0.163,-0.48886 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24444 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28517 -0.041,-0.0407 0.082,-0.24444 z m 1.3851,0.0407 0.2444,0.28518 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4074,-0.36665 l 0.163,-0.2037 z m -7.6996,0.2037 0.2851,0.0407 -0.1629,0.48886 -0.2445,-0.0815 0.1223,-0.44813 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.540005,0.0815 -0.1222,0.36665 -0.041,1.42586 -0.6518,0.81478 0.3666,0.0815 -0.4481,0.1222 -0.082,0.2445 0.2852,0.3259 -0.041,0.2037 -0.5704,0.6111 0.082,0.9777 -0.8555,1.4259 0.2852,0.2851 -0.6111,-0.1222 0.4481,-1.5481 -1.5073,0.8555 0.2851,0.2852 -1.0184,0.4481 c -0.1112,-0.2192 -0.218,-0.4174 -0.3259,-0.6518 0,-0.011 0.01,-0.03 0,-0.041 l 0.1222,-0.774 0.2851,0.082 0.6926,0.4481 c -0.2006,-0.6795 -0.5592,-1.0906 -1.1407,-1.2222 l 0.2037,-0.6925 c 0.015,-0.046 0.027,-0.077 0.041,-0.1222 l 0.1222,-0.041 0.041,-0.2037 -0.082,-0.041 c 0.068,-0.2257 0.108,-0.4498 0.163,-0.6518 l 0.1629,-0.1223 0.041,-0.20258 -0.041,-0.12221 c 0.059,-0.23984 0.045,-0.41042 0.082,-0.61109 0.2166,-0.0412 0.4501,-0.15496 0.6926,-0.36665 -0.087,0.52224 -0.036,0.8328 0.2444,0.89626 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.1125 -0.3751,0.2435 -0.5296,0.3667 l -0.041,0.2444 0.4074,0.1222 -0.3259,1.6703 0.5703,0.1223 0.1222,-0.4074 0.4482,-0.2037 -0.2852,-0.2852 -0.2852,-0.082 0.082,-0.2037 1.5074,0.1222 0.2037,-0.6925 -0.5296,-0.1223 0.1222,-0.4074 0.5703,0.1223 0.3667,-1.14077 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54808 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.035905,0 0.163,0.24444 0.2037,0.0815 0.3259,-0.12221 -0.041,0.16295 c -0.3962,0.0368 -0.7257,0.11789 -0.9778,0.2037 l -0.041,0 -0.1629,-0.0407 0.2852,-0.44813 0.2444,-0.0815 z m -12.018,0.0815 0.6111,0.12222 -0.1222,0.40739 -0.4889,-0.52961 z m 3.9517,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.366705,0.12222 0.041,-0.40739 0.122305,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4074,0.12222 -0.082,0.44813 -0.4074,-0.24444 0.082,-0.32591 z m -26.358005,0.0407 0.4074,0.12222 -0.082,0.20369 -0.4074,-0.12221 0.082,-0.2037 z m 1.6703,0 0.2037,0.24443 -0.041,0.2037 -0.3259,-0.32591 0.1629,-0.12222 z m 18.169505,0.0407 c 0.1619,0.0875 0.2758,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.2037 l -0.5296,0 c 0.031,-0.17322 0.06,-0.33608 0.082,-0.48887 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24444 -0.285205,-0.0815 0.041,-0.61108 0.366705,-0.12222 z m -3.299805,0.0815 0.2444,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.163,-0.48886 z m 10.714305,0.0407 0.7333,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1222,0.28518 -0.082,0 -0.2037,-0.28518 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81477 z m 20.0028,0 c -0.1782,0.66667 0.096,1.38755 0.6925,2.11845 l 0.2445,-0.1222 0.1629,0.2444 -0.041,0.1629 c -0.2463,-0.066 -0.4957,0.012 -0.6925,0.163 -0.042,-0.016 -0.074,-0.03 -0.1223,-0.041 l -0.3666,0.1222 c 0.1402,-0.4439 0.062,-0.7271 -0.3259,-0.8148 l -0.4074,0.1222 -0.041,0.082 -0.2852,-0.2037 c 0.2165,-0.5135 0.4453,-0.70982 0.8148,-0.61104 l 0.1222,-0.40739 -0.6111,-0.16295 0.8556,-0.65182 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44813 -0.2852,-0.57035 0.082,-0.36665 z m -17.9659,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2445,-0.32591 0.082,-0.16296 z m -14.258605,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.766005,0 0.7333,0 -0.082,0.2037 -0.6926,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6768,0 0.2037,0.0407 -0.2037,0.81478 -0.2037,-0.0407 0.2037,-0.81478 z m -28.4357,0.16295 0.5703,0.12222 -0.2444,0.69256 -0.3666,-0.61108 0.041,-0.2037 z m 2.1592,0.0407 -0.082,1.1407 0.611,0.163 0.082,-1.18148 -0.611,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40739 z m -13.4438,0.0407 0.1222,0 0.2852,0.73328 -0.1222,0.163 -0.163,0 -0.2037,-0.61111 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48887 -0.3259,0 0,-0.48887 z m 4.0332,0 0.2444,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12222 z m -25.706305,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.172405,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28518 z m -10.918005,0.24444 c 0.2732,-0.0456 0.679405,-0.0134 1.181405,0.0407 l -0.1222,0.40734 c -0.3876,-0.088 -0.750105,0.1822 -0.937005,0.7741 l -0.5704,-0.8963 c 0.053,-0.16642 0.175,-0.28026 0.4482,-0.32588 z m 14.095605,0.0407 0.3259,0 -0.1222,0.20374 -0.2037,0 0,-0.20374 z m 0.7741,0 0.082,0 0,0.20374 -0.041,0 -0.041,-0.20374 z m 15.1548,0.0407 0.4889,0.12222 -0.2852,1.01852 -0.3666,-0.4889 0.1629,-0.65184 z m -17.9658,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12442 z m 10.8365,0 0.2037,0.0407 -0.041,0.12224 -0.2444,0.1222 0,0.082 -0.041,0 0.041,-0.082 0.082,-0.28518 z m 9.5737,0.12224 -0.1223,0.082 -0.082,0.1629 0.2037,0.2445 0,-0.4889 z m -13.8105,0.082 0.4074,0.082 -0.3259,0.4481 -0.326,-0.082 -0.041,-0.1629 0.2852,-0.2852 z m -10.4292,0.041 0.1222,0.082 0,0.2444 -0.1629,-0.041 c 0.032,-0.1024 0.017,-0.1886 0.041,-0.2851 z m 13.8512,0.041 0.6111,0.5296 0.041,0.041 -0.1222,0.6111 c -0.1738,-0.1302 -0.3351,-0.2839 -0.4889,-0.3667 -0.043,-0.2456 -0.071,-0.5151 -0.041,-0.8148 z m -8.5551,0.041 0.3666,0 0,0.2444 -0.3666,0 0,-0.2444 z m -16.458505,0.082 0.1629,0.041 -0.1222,0.4074 -0.2852,-0.082 0.082,-0.2852 0.163,-0.082 z m 4.196105,0.2037 0.5296,0.1222 0,1.1814 c -0.3391,-0.077 -0.521,-0.509 -0.5296,-1.3036 z m 1.7925,0.1629 -0.2444,0.6926 0.6518,0.163 0.2037,-0.6926 -0.6111,-0.163 z m 3.0147,0.2445 c 0.5369,0.1214 0.591,1.2374 0.1629,3.2998 -0.149,0.2487 -0.3559,0.7021 -0.5703,1.1407 l -0.5704,-0.1222 -0.5296,-1.3444 c 0.3877,0.088 0.5932,-0.086 0.7333,-0.5296 l 0.082,-1.1814 0.2037,0.2444 0.6518,0.163 -0.1629,-1.6703 z m 9.6958,0.041 0.1222,0.1222 -0.2444,0.2852 -0.1222,0.4481 -0.1222,0 -0.2852,-0.082 -0.041,-0.4481 0.082,-0.1223 0.2444,0.2445 0.3667,-0.4482 z m 5.3775,0 c 10e-5,0.306 -0.1563,0.4481 -0.5703,0.4481 l 0,0.2037 0.4074,0 -0.3667,0.6518 -0.4073,-0.081 0.082,-0.082 0,-0.2852 -0.041,-0.041 0.4073,-0.774 c 0.1596,-0.01 0.3126,-0.041 0.4889,-0.041 z m -13.4438,0.041 0.2852,0.041 -0.4481,1.2629 -0.082,0.3259 c 0.1979,0.081 0.3666,0.1667 0.5296,0.2444 l -0.2445,0.4481 -0.1222,-0.2037 -0.3259,0.163 -0.2444,-0.041 c 0.067,-0.1419 0.1305,-0.2725 0.2037,-0.4889 l -0.2037,0 0.1629,-0.4888 0.041,0.041 0.2852,0 0.163,-1.3037 z m -8.188505,0.082 0.5704,0.1222 -0.163,0.4074 -0.4074,-0.5296 z m 13.158705,0.082 0.082,0.082 -0.163,-0.041 0.082,-0.041 z m 4.359,0 0.3259,0 c -0.047,0.2542 -0.075,0.4486 -0.082,0.6518 l -0.611,0 0.082,-0.5704 0.2851,-0.082 z m -3.1369,0.082 0.082,0.4888 c -0.2042,-0.1067 -0.3488,-0.235 -0.4481,-0.4074 l 0.3666,-0.082 z m -1.7517,0.082 -0.1223,0.4888 -0.1629,0 0,-0.4074 0.2852,-0.082 z m 18.0065,0.041 0.2037,0.041 -0.1629,0.6518 -0.2037,-0.082 0.1629,-0.6111 z m 0.6519,0 0.4888,0.1222 -0.4074,1.4666 -0.1629,-0.041 c -0.083,-0.019 -0.171,0.021 -0.2445,0.041 l 0,-0.3667 0.326,-1.2221 z m -21.225,0.041 0.1222,0 0,0.041 -0.1222,-0.041 z m 3.5036,0.1222 c 0.081,0.036 0.1343,0.08 0.2036,0.1222 l -0.2444,0.041 0.041,-0.163 z m -12.181,0.082 0.2852,0.041 -0.2852,0.8962 -0.2851,-0.041 0.2851,-0.8962 z m 1.7925,0.1629 -0.1222,0.4482 0.6111,0.1222 -0.4889,-0.5704 z m 19.5954,0 c 0.045,0.041 0.1551,0.1195 0.2037,0.163 l -0.082,0.5296 -0.8962,2.8517 -0.5704,0.8148 0.3667,1.0592 -0.6518,-0.163 -0.3667,2.0777 -0.5296,-0.1222 0,-0.9777 0.3259,-0.1222 0.082,-0.2037 0.163,-1.4666 0.4888,-0.5704 -0.1222,-0.1222 c 0.028,-0.055 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.1222 -0.4074,-0.5703 0.3667,-0.1223 0.2444,0.041 0.082,-1.1406 0.3666,-1.1407 0.5296,0.1222 0.163,-0.6111 z m 1.2629,0.082 0.1223,0.163 -0.163,-0.041 0.041,-0.1222 z m 1.8333,0.1222 0.082,1.6296 0.4889,0.1222 0.2036,-0.2037 -0.2444,0.8148 c -0.1147,-0.1898 -0.1569,-0.2813 -0.2852,-0.4889 l -0.2037,0.081 c -0.022,-0.018 -0.055,-0.024 -0.082,-0.041 l -0.4073,-0.6518 0.4481,-1.2629 z m 0.5296,0 0.3666,0.082 0,0.082 -0.2444,0.3667 -0.2444,-0.082 0.1222,-0.4481 z m 3.7887,0.163 0.2037,0.041 -0.1222,0.4481 -0.2037,-0.082 0.1222,-0.4074 z m 1.7925,0.2444 0.2037,0.082 0,1.0592 0,0.041 c -0.05,0.036 -0.1167,0.064 -0.1629,0.1223 l -0.3667,-0.082 0.3259,-1.2222 z m -32.102205,0.041 0.2444,0.082 -0.9777,3.0962 -0.2444,-0.041 0.9777,-3.1369 z m 29.576405,0.163 0.082,0.041 -0.1629,0.6111 -0.2037,-0.041 0.1222,-0.4482 0.1629,-0.1629 z m -14.0142,0.1629 0.2037,0 0,0.4889 -0.2037,0 0,-0.4889 z m 11.6921,0.082 0.2037,0.082 0.041,0.2445 -0.2852,-0.2037 0.041,-0.1222 z m -24.2804,0.082 -0.1629,0.4482 0.6111,0.1629 0.1629,-0.4888 -0.6111,-0.1223 z m 27.1321,0.041 0.2037,0.041 0.041,0.6926 -0.4074,-0.1222 0.163,-0.6111 z m -29.046805,0.041 0.285205,0.041 -0.2037,0.6519 -0.244505,-0.082 0.163,-0.6111 z m 31.572605,0.2037 0.4074,0.1223 -0.082,1.0592 -0.082,0.3259 -0.2444,-0.081 0.082,-1.1407 c -0.055,-0.013 -0.1121,0 -0.163,0 l 0.082,-0.2852 z m -19.5546,0.2445 0.041,0 0,0.4481 -0.2037,0 0.1629,-0.4481 z m -5.5405,0.041 0.6925,0.1629 -0.5703,1.1815 -0.3259,0.4481 -0.082,0 0.2037,-0.6111 0,-1.0592 c 0.035,-0.028 0.048,-0.074 0.082,-0.1222 z m 5.9479,0.2037 0.4073,0 0,0.4888 0.2445,0 0.041,-0.041 -0.041,0.2852 -0.3259,0.082 -0.041,-0.1222 0.041,-0.2037 -0.3667,-0.082 -0.1629,0.041 c 0.1408,-0.1216 0.2037,-0.2569 0.2037,-0.4481 z m 13.8919,0 0.2444,0.041 0.1223,0.7333 -0.082,0.2444 -0.4074,-0.6111 0.1222,-0.4074 z m -11.8143,0.2037 0.082,0 -0.2037,0.8962 -0.082,0.041 -0.2036,-0.2037 c -0.1036,0 -0.1645,0.01 -0.2445,0.041 l 0.2037,-0.6518 0.4481,-0.1222 z m 0.7741,0 0.4888,0 0.163,0.041 -0.2444,0.774 -0.5296,0.3259 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.2037 0.2852,-0.082 -0.2852,-0.2852 0.1222,-0.3666 z m 2.8517,0 0.6518,0 -0.082,0.2037 -0.6111,-0.1223 0.041,-0.082 z m -22.528605,0.1629 0.6518,0.163 -0.4888,0.6111 -0.3667,-0.082 0.2037,-0.6926 z m 14.951205,0.1222 0.2037,0 0.3666,0.082 -0.4074,0.2037 -0.041,0.2037 0.041,0.1222 -0.1629,0.041 -0.2037,0 0.2037,-0.6518 z m 20.0028,0.041 0.2036,0.041 -0.041,0.2037 -0.2036,-0.041 0.041,-0.2037 z m -18.8214,0.163 0.2444,0.041 -0.041,0.2037 -0.2852,0.041 0.082,-0.2852 z m 6.1923,0 0.2852,0.041 -0.041,0.081 -0.2445,-0.081 0,-0.041 z m 6.1516,0.2037 0.6518,0.1222 0.2852,0.8555 c 0.027,0.314 0.036,0.6162 -0.041,0.937 l -0.2037,-0.082 0.1629,-0.4481 -0.5703,-0.1222 -0.041,0.2037 0.3259,0.8147 -0.3259,0.1222 c -0.1051,0.333 -0.023,0.6073 0.2852,0.7741 -0.04,0.1099 -0.074,0.22 -0.1223,0.3259 l -0.2444,0.082 0.1222,-0.4074 -0.5703,-0.1222 -0.2445,1.7518 c -0.1707,0.1743 -0.3679,0.3712 -0.5703,0.5296 l 0.2037,-0.2852 c 0.09,-0.6138 -0.1266,-0.9904 -0.6111,-1.1 l 0.1222,-0.4074 0.6111,0.1223 0.1222,-0.2852 -0.3259,-0.2852 0.4481,-0.1222 0,-1.1814 0.5297,-1.7925 z m -27.376505,0.041 0.8147,0.4074 -0.3259,1.0999 -0.2852,-0.082 -0.3259,-1.0185 0.1223,-0.4073 z m 2.485,0.041 0.5704,0.1222 -0.082,0.2037 -0.5296,-0.1222 0.041,-0.2037 z m 32.020805,0.1222 0.2851,0.041 -0.2036,0.6926 -0.2852,-0.041 0.2037,-0.6926 z m -23.3027,0.041 0.2037,0 0,0.2037 -0.2444,-0.041 0.041,-0.163 z m 10.144,0 0,0.082 -0.041,0 0.041,-0.082 z m 11.8143,0.2852 -0.3667,1.3443 -0.041,0 0.4074,-1.3443 z m -11.4884,0.082 0.2445,0.081 -0.082,0.2037 -0.2852,0.1222 0.1222,-0.4074 z m 10.307,0 0.041,0 c 0.027,0.1987 0.01,0.418 -0.041,0.6518 l -0.163,-0.041 0.163,-0.6111 z m 1.5888,0 0.1222,0.041 0,0.2037 -0.163,-0.041 0.041,-0.2037 z m -16.3363,0.1222 0.163,0 -0.4482,0.4481 -0.2037,0 0.4889,-0.4481 z m 3.1369,0 0.2852,0 -0.082,0.4481 -0.326,0 0.1223,-0.4481 z m -22.447105,0.2037 0.082,0.1222 -0.041,0.082 c -0.011,-0.069 -0.041,-0.1361 -0.041,-0.2037 z m 20.165705,0 0.5296,0 0.082,0.082 -0.082,0.3259 -0.6111,-0.1222 0.082,-0.2852 z m -18.902805,0.082 0.2037,0.041 0,0.2444 c -0.066,-0.097 -0.1384,-0.184 -0.2037,-0.2852 z m 10.714305,0.2037 -0.082,0.2851 -0.041,0.082 -0.041,0.1222 -0.163,-0.2036 0.3259,-0.2852 z m 19.7176,0 0.2037,0.041 -0.082,0.1629 c -0.028,-0.054 -0.092,-0.1466 -0.1222,-0.2037 z m -4.1554,0.041 0.6111,0.1222 -0.082,0.2444 -0.6111,-0.1629 0.082,-0.2037 z m 7.9441,0 0.163,0.041 -0.2852,0.9777 -0.1222,-0.041 0.2444,-0.9777 z m -29.4542,0.082 1.2222,0.082 -0.2037,0.6111 -1.2629,0 0.2444,-0.6926 z m 10.918,0.041 0.6519,0 0,0.2037 -0.1223,0 -0.611,-0.163 c 0.029,-0.014 0.051,-0.027 0.082,-0.041 z m 14.2994,0.081 0.2852,0.4074 -0.2852,0.4481 -0.2445,-0.041 0.2445,-0.8148 z m 1.1407,0.3259 0.1222,0.6111 -0.2852,-0.082 0.163,-0.5296 z m 4.1553,0.041 0.1223,0 c -0.064,0.2039 -0.057,0.3921 0,0.5296 l -0.041,0 -0.1223,0.4074 0.041,0.8962 -0.4074,0.4889 -0.2036,-0.041 0.3259,-1.1814 -0.4482,-0.1223 0.2445,-0.8147 0.4074,0.1222 0.082,-0.2852 z m -17.2325,0.041 0.3666,0 0,0.2851 -0.2444,0.082 -0.1222,-0.041 0,-0.3259 z m 0.774,0 0.4074,0 -0.1629,0.5703 -0.2445,-0.041 -0.082,-0.082 0.082,0 0,-0.4481 z m 2.037,0 0.4074,0 -0.1223,0.6925 c -0.1459,0.1527 -0.3487,0.2497 -0.5703,0.3259 l -0.6111,-0.4481 c 0.097,0.029 0.2025,0.064 0.3259,0.082 0.4141,0 0.5704,-0.1928 0.5704,-0.6518 z m -22.447105,0.041 c 0.01,0.018 0.071,0.022 0.082,0.041 l -0.082,0 0,-0.041 z m 2.7702,0.041 0.8148,0.2037 -0.082,0.2037 -0.8148,0.082 c -0.02,-0.022 -0.021,-0.059 -0.041,-0.082 l 0.1222,-0.4074 z m 21.428605,0 0.2852,0.1629 -0.082,0.2037 -0.2851,-0.041 0.082,-0.3259 z m -2.3221,0.082 0.2852,0.082 -0.2852,0 0,-0.082 z m -14.2993,0.3666 0.4889,0.5296 -0.2037,0.6518 -0.041,0 -0.2445,-0.3259 -0.5296,-0.1222 c -0.048,0.151 -0.1391,0.2794 -0.2444,0.3667 l -0.8555,-0.2445 c -0.047,-0.2318 -0.222205,-0.4008 -0.611105,-0.4888 l 0.041,-0.2037 0.570305,0.1222 0.2037,0.2444 c 0.1053,-0.3329 0.569,-0.446 1.4259,-0.5296 z m 3.1776,0.3259 0.3667,0.4482 -0.6518,-0.1223 0.2851,-0.3259 z m 21.6731,0 0.1222,0.2037 c -0.02,0.075 -0.087,0.1637 -0.1222,0.2445 l -0.1222,-0.041 0.1222,-0.4074 z m -1.3444,0.1222 0.2037,0.3667 -0.041,0.2037 -0.2444,-0.3667 c 0.023,-0.07 0.061,-0.1319 0.082,-0.2037 z m -25.909905,0.4074 0.2444,0.041 -0.1222,0.4074 -0.2444,-0.041 0.1222,-0.4074 z m -1.5073,0.081 0.2037,0.041 -0.041,0.1222 c -0.061,-0.042 -0.1022,-0.1176 -0.163,-0.1629 z m -3.911,0.082 c 0.1984,0.045 0.3656,0.107 0.5296,0.1222 l 0.4889,0.6111 0,-0.4888 -0.1222,-0.1223 c 0.1736,-0.011 0.3316,-0.066 0.4481,-0.1222 0.1559,0.2002 0.3052,0.4271 0.4889,0.6519 l -0.3259,0.4481 -0.1222,-0.1222 -0.082,-0.163 -0.2852,-0.041 -0.6518,0.2852 0.041,0.6111 c -0.1698,-0.1506 -0.3285,-0.3246 -0.4889,-0.4889 l 0.082,-0.2037 -0.3667,-0.082 c -0.1551,-0.1722 -0.3025,-0.3448 -0.4481,-0.5296 l 0.6518,0.1222 0.163,-0.4889 z m 11.732805,0.2445 0.4481,0 0,0.4888 -0.4481,0 0,-0.4888 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.4406,0.041 0.163,0.2851 -0.041,0.163 -0.9777,0 -0.2852,0 0,-0.041 c 0.097,0.022 0.1955,0.061 0.2852,0.041 0.1794,-0.041 0.3596,-0.1964 0.4888,-0.4074 l 0.3667,-0.041 z m -0.7333,0.041 0,0.041 -0.5296,0 0.5296,-0.041 z m 2.1999,0.041 c 0.1,0.077 0.157,0.2267 0.163,0.3666 l -0.6926,0 0.163,-0.2852 0.3666,-0.082 z m 17.1104,0.041 0.1629,0.041 -0.041,0.1629 -0.1629,-0.082 0.041,-0.1222 z m -21.1435,0.041 0.1222,0 c 0.1262,0.063 0.2198,0.1547 0.2444,0.2851 l -0.3666,0 0,-0.2851 z m 11.692,0.4481 0.5297,0.1222 -0.082,0.2444 -0.5297,-0.1222 0.082,-0.2444 z m -13.0364,0.082 0.163,0.1222 -0.082,0.2037 -0.082,-0.041 0,-0.2852 z m -4.1146,0.082 0.2444,0.041 0.1222,0.082 0.163,0 -0.082,0.2444 -0.3667,0.2037 -0.1222,0.041 0,-0.082 0.1222,0.041 0.041,-0.2037 -0.1222,-0.2851 0,-0.082 z m 25.421,0.041 0.1223,0.4481 -0.1223,0.2852 0,-0.7333 z m -16.1733,0.1629 -0.041,0.2037 -0.041,0.4889 -0.937,-0.1222 -0.082,-0.082 0.7741,-0.3667 -0.3667,-0.082 0.6926,-0.041 z m -3.5035,0.041 -0.041,0.1223 -0.2852,-0.082 0.3259,-0.041 z m 4.7664,0 0.4481,0.082 0,0.041 0,0.2037 c -0.1904,0 -0.2989,0.048 -0.4074,0.1223 l -0.041,-0.4482 z m -2.5665,0.041 -0.1223,0.4482 -0.611,-0.082 -0.2445,-0.2445 -0.082,0.2037 -0.2852,-0.041 0.082,-0.2444 0.082,0 0.2037,0.082 -0.041,-0.082 0.2852,0 0.7333,-0.041 z m 3.7887,0 0.1222,0.041 -0.1222,0 0,-0.041 z m -15.2771,0.041 0.163,0.2445 0.2851,0 0.163,-0.1222 0.2852,0.2851 -0.326,0.3667 c -0.7618,0.018 -1.1993,0.1247 -1.2629,0.3259 l -0.082,0.2037 0.2852,0.082 0.5296,0 -0.2444,0.2852 c -0.3068,0 -0.7246,-0.1575 -1.1814,-0.3667 l 0.1222,-0.3259 -0.366705,-0.082 -0.3259,0.163 c -0.3253,-0.184 -0.6735,-0.4253 -1.0592,-0.6926 0.53,0.1199 0.9408,0.021 1.2222,-0.2852 0.452005,0.097 0.896405,0.163 1.385105,0.163 l 0.082,0 0.1629,0.041 0.041,-0.163 0.1223,-0.1222 z m 1.9147,0.082 c 0.012,0.2782 0.1751,0.4717 0.6111,0.5704 l -0.041,0.1222 -0.1629,0.082 c -0.4017,-0.033 -0.7787,-0.07 -1.1,-0.082 0.1875,-0.1742 0.4654,-0.4655 0.6926,-0.6926 z m 25.1766,0 0.1223,0.041 -0.2445,1.0185 -0.1222,-0.041 0.2444,-1.0185 z m -10.9587,0.082 0.2444,0.082 -0.082,0.2852 -0.1629,0 0,-0.3666 z m -20.817605,0.1223 c 0.2965,0.3446 0.6324,0.7122 0.9778,1.0999 l -0.7333,-0.1629 c -0.294,-0.2508 -0.5828,-0.5253 -0.8556,-0.8148 l 0.6111,-0.1222 z m -1.0592,0.2444 0.4481,0.7333 -0.3259,0 c -0.2313,-0.1353 -0.4738,-0.2499 -0.6925,-0.4074 0.047,-0.067 0.091,-0.1468 0.1222,-0.2444 l 0.4481,-0.082 z m 23.221205,0.163 0.5703,0.1222 0,1.1814 -0.4481,0.1222 -0.5296,-0.1222 0.4074,-1.3036 z m 11.2846,0.1222 -0.2037,0.4074 0.082,-0.326 0.1223,-0.082 z m -16.2955,0.1222 0.2444,0 0,0.082 -0.2444,-0.041 0,-0.041 z m -19.676905,0.1222 c 0.029,0.01 0.054,0 0.082,0 l 0.082,0.082 -0.3666,0 0.2037,-0.082 z m 29.169105,0.041 -0.041,0.3667 -0.2852,-0.082 c 0.1195,-0.087 0.2148,-0.1918 0.3259,-0.2852 z m 3.8294,0 0,0.082 -0.041,0 0.041,-0.082 z m -0.9777,0.041 0.2037,0.082 c -0.072,0.065 -0.1697,0.1008 -0.2445,0.163 -0.1919,0.1594 -0.368,0.3385 -0.5703,0.4888 -0.078,-0.08 -0.1398,-0.2017 -0.2037,-0.3259 0.1573,-0.079 0.2843,-0.1614 0.4481,-0.2444 l 0.3259,0.082 0.041,-0.2037 c 0.01,0 -0.01,-0.038 0,-0.041 z m -23.5471,0.2037 -1.0999,0.5296 -0.163,0 0,-0.2037 c 0.1087,0 0.2966,-0.111 0.5296,-0.2852 l 0.7333,-0.041 z m -4.929405,0.1222 c 0.1297,0.1453 0.2302,0.2561 0.3667,0.4074 l 0,0.2037 c -0.065,-0.043 -0.139,-0.078 -0.2037,-0.1222 l 0.041,-0.082 -0.163,-0.041 c -0.08,-0.056 -0.166,-0.1047 -0.2444,-0.163 l 0.1629,-0.041 0.041,-0.1629 z m 10.021805,0.082 0.3666,0.2444 -0.082,0.082 -0.2037,0 c 0,-0.1207 -0.037,-0.2282 -0.082,-0.3259 z m -2.037,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6405,0 0.4073,0 0,0.082 -0.2444,0.1222 -0.1629,0 0,-0.2036 z m -3.0962,0.1222 0.4074,0.082 -0.4074,0 0,-0.082 z m 5.8257,0 0.2444,0.041 0.2444,0.2852 0.081,0 0,0.4074 c -0.3615,0.031 -0.758,0.061 -1.1407,0.082 l 0.3259,-0.4889 c 0.079,0 0.1558,0 0.2445,0 l 0,-0.3259 z m -6.4775,0.3259 0.6518,0 0,0.4889 -1.0185,0 0.3667,-0.4889 z m 8.1885,0.041 0.2852,0.082 -0.041,0.1223 c -0.1063,0.015 -0.2176,0.027 -0.3259,0.041 l 0.082,-0.2445 z m 9.4107,0.041 c -0.02,0.2877 -0.042,0.5617 0.041,0.7741 l -0.163,0.082 -0.1222,0.4074 -0.3259,-0.4482 0.5703,-0.8147 z m -12.0587,0.041 c 0.01,0 0.03,0 0.041,0 l 0.041,0.041 -0.082,0.2445 -0.2445,-0.041 c 0.043,-0.093 0.1038,-0.1842 0.2445,-0.2445 z m -8.6367,0.163 0.6518,0 0,0.2037 -0.6518,0.2037 0,-0.4074 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.4074 -0.4888,0 0.4888,-0.4074 z m -15.154805,0.2037 0.041,0 0,0.2037 -0.4482,0 0,-0.041 0.4074,-0.163 z m 3.3405,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 4.970205,0 0.6111,0 0,0.2037 -0.6111,0 0,-0.2037 z m 3.9109,0 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 18.0473,0.041 0.082,0 0,0.041 -0.082,-0.041 z m -2.7295,0.082 0.041,0 -0.1629,0.4889 -0.5296,-0.1223 0.041,-0.082 c 0.1755,-0.071 0.4149,-0.2008 0.6111,-0.2851 z m 5.2961,0 c 0.072,0.09 0.1611,0.1484 0.2444,0.2444 l 0,0.041 -0.4074,-0.082 c -0.029,-0.024 -0.055,-0.058 -0.082,-0.082 l 0.2445,-0.1222 z m -32.631805,0.2852 0.6518,0 0,0.2444 -0.6518,0 0,-0.2444 z m 2.9332,0 0.3666,0 -0.3666,0.5296 0,-0.5296 z m -3.5443,0.2444 0.4481,0 0,0.2852 -0.4481,0 0,-0.2852 z m 9.329205,0 0.6111,0 1.0184,0.2852 1.2222,-0.2852 1.3036,0 0,0.4889 -5.1738,0 0,-0.2037 1.0185,-0.2852 z m 4.522,0 4.6035,0 -0.4481,0.4889 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.4889 z m 5.459,0 0.5703,0 0,0.2852 -0.5703,0 0,-0.2852 z m 15.3178,0 c -0.021,0.067 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.163 0.041,-0.041 z m -30.513405,0.2852 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+           id="path6192-4"
+           transform="matrix(0.61596339,0,0,0.61596335,-413.88323,329.71724)" />
+        <g
+           inkscape:export-ydpi="600"
+           inkscape:export-xdpi="600"
+           inkscape:export-filename="/Volumes/partage/private/marketing/Design/ChartesGraphiques/ModelWriter/png/logo_modelwriter_HD.png"
+           id="g4593-7"
+           transform="matrix(0.39217453,0,0,0.39217453,-625.0906,1023.5742)">
+          <g
+             id="g4324-8"
+             transform="matrix(1.0083233,0,0,1.0083233,11.632425,-451.09721)">
+            <text
+               sodipodi:linespacing="125%"
+               id="text4326-4"
+               y="108.4253"
+               x="102.82677"
+               style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:47.02912903px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none"
+               xml:space="preserve"><tspan
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1"
+                 y="108.4253"
+                 x="102.82677"
+                 id="tspan4328-5"
+                 sodipodi:role="line"><tspan
+                   id="tspan4330-0"
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1">M</tspan><tspan
+                   id="tspan4332-3"
+                   style="font-size:43.5675621px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1">ODEL</tspan></tspan></text>
+            <text
+               xml:space="preserve"
+               style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:47.02912903px;line-height:125%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+               x="240.09686"
+               y="124.76314"
+               id="text4334-6"
+               sodipodi:linespacing="125%"><tspan
+                 sodipodi:role="line"
+                 id="tspan4336-1"
+                 x="240.09686"
+                 y="124.76314"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px"><tspan
+                   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#faa542;fill-opacity:1"
+                   id="tspan4338-0">W</tspan><tspan
+                   style="font-size:43.5675621px;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:-1.36148632px;fill:#faa542;fill-opacity:1"
+                   id="tspan4340-6">RITER</tspan></tspan></text>
+          </g>
+          <g
+             id="g4400-3"
+             transform="translate(24.224454,-101.5825)">
+            <g
+               transform="matrix(0.62138123,0.05946504,-0.05946504,0.62138123,93.923956,-868.76894)"
+               id="g4376-2">
+              <path
+                 d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329"
+                 id="path4378-0"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="ccscscscsc"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+              <path
+                 d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702"
+                 id="path4380-6"
+                 inkscape:connector-curvature="0"
+                 sodipodi:nodetypes="ccccscc"
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none" />
+            </g>
+            <g
+               style="fill:#faa542;fill-opacity:1"
+               id="g4394-1"
+               transform="matrix(-0.62138123,-0.05946504,0.05946504,-0.62138123,366.91998,366.23079)">
+              <path
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+                 sodipodi:nodetypes="ccscscscsc"
+                 inkscape:connector-curvature="0"
+                 id="path4396-5"
+                 d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329" />
+              <path
+                 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none"
+                 sodipodi:nodetypes="ccccscc"
+                 inkscape:connector-curvature="0"
+                 id="path4398-5"
+                 d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702" />
+            </g>
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/mapping/releng/org.eclipse.intent.branding/build.properties b/mapping/releng/org.eclipse.intent.branding/build.properties
new file mode 100644
index 0000000..24a4c7f
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/build.properties
@@ -0,0 +1,7 @@
+bin.includes = META-INF/,\
+               plugin.xml,\
+               plugin_customization.ini,\
+               icons/,\
+               splash.bmp,\
+               plugin.properties,\
+               intro/
diff --git a/mapping/releng/org.eclipse.intent.branding/icons/about.gif b/mapping/releng/org.eclipse.intent.branding/icons/about.gif
new file mode 100644
index 0000000..d39bbf9
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/icons/about.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/icons/logo_16.gif b/mapping/releng/org.eclipse.intent.branding/icons/logo_16.gif
new file mode 100644
index 0000000..aff9faa
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/icons/logo_16.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/icons/logo_32.gif b/mapping/releng/org.eclipse.intent.branding/icons/logo_32.gif
new file mode 100644
index 0000000..a1832ba
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/icons/logo_32.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/icons/logo_64.gif b/mapping/releng/org.eclipse.intent.branding/icons/logo_64.gif
new file mode 100644
index 0000000..f1f2600
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/icons/logo_64.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/css/style.css b/mapping/releng/org.eclipse.intent.branding/intro/css/style.css
new file mode 100644
index 0000000..26a5b26
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/css/style.css
@@ -0,0 +1,252 @@
+html {
+	font-size: 100%;
+}
+
+body {
+	margin: 0;
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	line-height: 18px;
+	color: #003e5e;
+	background-color: #ffffff;
+	padding: 20px 0 10px 0;
+	text-align: justify;
+}
+
+a {
+	color: #408BBC;
+	text-decoration: none;
+}
+
+a:hover {
+	color: #003E5E;
+	text-decoration: none;
+}
+
+#logo {
+	width: 200px;
+	margin-bottom: 30px;
+	}
+
+.separator {
+	background: -moz-linear-gradient(left center, #f7f9ff 0%, #BDBDBD 50%, #f7f9ff 99%)
+		repeat scroll 0 0 transparent;
+	background: -webkit-gradient(linear, left top, right top, color-stop(0%, #f7f9ff),
+		color-stop(50%, #BDBDBD), color-stop(99%, #f7f9ff) );
+	background: -webkit-linear-gradient(left, #f7f9ff 0%, #BDBDBD 50%, #f7f9ff 99%)
+		;
+	background: -o-linear-gradient(left, #f7f9ff 0%, #BDBDBD 50%, #f7f9ff 99%)
+		;
+	background: -ms-linear-gradient(left, #f7f9ff 0%, #BDBDBD 50%, #f7f9ff 99%)
+		;
+	background: linear-gradient(left, #f7f9ff 0%, #BDBDBD 50%, #f7f9ff 99%);
+	height: 1px;
+	margin: 15px 0 10px;
+}
+
+hr {
+	border: 0 none;
+	color: #003E5E;
+}
+
+.row-fluid:before,.row-fluid:after {
+	display: table;
+	content: "";
+}
+
+.row-fluid:after {
+	clear: both;
+}
+
+.row-fluid>[class *="span"] {
+	float: left;
+	/*margin-left: 2.127659574%;*/
+}
+
+.row-fluid>[class *="span"]:first-child {
+	margin-left: 0;
+}
+
+[class *="span"] {
+	float: left;
+}
+
+.row-fluid>.span9 {
+	width: 62.07%;
+}
+
+.row-fluid>.span3 {
+	width: 37.93%;
+}
+
+@media ( min-width : 1200px) {
+	[class *="span"] {
+		float: left;
+		margin-left: 30px;
+	}
+	.span9 {
+		width: 870px;
+	}
+	.span3 {
+		width: 270px;
+	}
+	.row-fluid {
+		width: 100%; *
+		zoom: 1;
+	}
+	.row-fluid:before,.row-fluid:after {
+		display: table;
+		content: "";
+	}
+	.row-fluid:after {
+		clear: both;
+	}
+	.row-fluid>[class *="span"] {
+		float: left;
+		margin-left: 2.564102564%;
+	}
+	.row-fluid>[class *="span"]:first-child {
+		margin-left: 0;
+	}
+	.row-fluid>.span9 {
+		width: 74.358974359%;
+	}
+	.row-fluid>.span3 {
+		width: 23.076923077%;
+	}
+}
+
+.span9 {
+	width: 700px;
+}
+
+.span3 {
+	width: 275px !important;
+	margin-right: 20px;
+}
+
+.container-fluid {
+	padding-left: 20px;
+	padding-right: 20px; *
+	zoom: 1;
+}
+
+.container-fluid:before,.container-fluid:after {
+	display: table;
+	content: "";
+}
+
+.container-fluid:after {
+	clear: both;
+}
+
+.hero-unit {
+	min-height: 255px;
+	padding: 20px;
+	background-color: transparent;
+}
+
+p {
+	font-size: 14px;
+	line-height: 21px;
+	color: inherit;
+	text-align: justify;
+	margin: 5px 0 10px 0;
+}
+
+p.small {
+	font-size: 12px !important;
+}
+
+#left-column {
+	margin: 0em;
+	padding: 0.75em;
+	float: left;
+	width: 50%;
+}
+
+.articletitle {
+	color: #003E5E;
+	font-weight: normal;
+	line-height: normal;
+	margin: 0;
+	text-shadow: 0 0 1px rgba(17, 17, 17, 0.4), 0 2px 1px rgba(0, 0, 0, 0.2)
+		;
+}
+
+.first {
+	color: #408BBC;
+	}
+
+.bubble {
+	background: url("bubble.png") no-repeat scroll left bottom transparent;
+	height: 45px;
+	padding: 20px 0 0 30px;
+}
+
+
+h2 {
+		font-size: 22px;
+}
+
+
+ul {
+	list-style-image: url("square_blue.png");
+	margin: 3px 0 0;
+}
+
+li {
+	line-height: 24px;
+}
+
+.centered {
+	width: 280px;
+	margin: 0 auto;
+	padding-top: 5px;
+}
+
+.layout_video {
+	width: 400px;
+	margin: 0 auto;
+	padding-top: 30px;
+}
+
+.layout_img {
+	width: 600px;
+	margin: 0 auto;
+	padding-top: 30px;
+}
+
+.layout_footer {
+	padding: 1px;
+	width: 220px;
+	margin: 0 auto;
+}
+
+.layout_footer  p{
+	font-size: 12px;
+}
+
+.breadcrumb {
+	font-size: 12px;
+    list-style: none outside none;
+    margin: 0 0 20px 1px;
+    padding: 0;
+}
+.breadcrumb li {
+    display: inline-block;
+}
+.breadcrumb li a{
+	text-decoration: underline;
+}
+.breadcrumb .divider {
+    padding: 0 3px;
+}
+.breadcrumb .active {
+    color: #003E5E;
+	text-shadow: 0 0 1pt rgba(17, 17, 17, 0.2), 0 1.2pt 1pt rgba(0, 0, 0, 0.2)
+		;
+}
+
+footer,header {
+	display: block;
+}
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/findhelp.html b/mapping/releng/org.eclipse.intent.branding/intro/findhelp.html
new file mode 100644
index 0000000..ee2060b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/findhelp.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Welcome to Intent</title>
+    <!-- Bootstrap -->
+    <link rel="stylesheet" type="text/css" href="css/style.css" /> 
+</head>
+
+<body>
+    <div class="container-fluid">
+      <div class="row-fluid">
+        <div class="span3">
+          <img src="images/about.png" width="200" />
+        </div><!--/span-->
+      
+       <div class="span9">
+      	<div class="hero-unit">
+      		<ul class="breadcrumb">
+					<li>
+					<a href="index.html">Welcome</a> <span class="divider">/ </span>
+					</li>
+					<li class="active">Find help</li>
+			</ul>
+			<h2><a href="https://www.eclipse.org/intent/support/index.html">Find Help</a></h2>
+		   <hr class="separator"></hr>
+	           <div>
+	            <ul>
+	            	<li><a https://www.eclipse.org/intent/support/index.html">Community support</a></li>
+	            	<li><a https://www.eclipse.org/intent/support/index.html">Professional support</a></li>
+	            </ul>
+	       	 </div>
+	        </div>
+
+        </div>
+      
+	  <hr class="separator"></hr>
+      
+      <footer>
+      <div class="layout_footer">
+        <p>&#169; 2015 - 2017 Obeo - All rights reserved</p>
+      </div>  
+      </footer>
+   
+        </div><!--/span-->
+      </div><!--/row-->
+    </div><!--/.fluid-container-->
+</body>
+</html>
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/getinvolved.html b/mapping/releng/org.eclipse.intent.branding/intro/getinvolved.html
new file mode 100644
index 0000000..75fbf42
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/getinvolved.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Welcome to Intent</title>
+    <!-- Bootstrap -->
+    <link rel="stylesheet" type="text/css" href="css/style.css" /> 
+</head>
+
+<body>
+    <div class="container-fluid">
+      <div class="row-fluid">
+        <div class="span3">
+          <img src="images/about.png" width="200" />
+        </div><!--/span-->
+      
+       <div class="span9">
+      	<div class="hero-unit">
+      		<ul class="breadcrumb">
+					<li>
+					<a href="index.html">Welcome</a> <span class="divider">/ </span>
+					</li>
+					<li class="active">Get Involved</li>
+			</ul>
+			<h2>How to help?</h2>
+		   <hr class="separator"></hr>
+		   <div>
+	            	<h3>Reporting bugs</h3> 
+	            	<p>The best ways to contribute are by finding, <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Mylyn%20Docs%20Intent">reporting bugs</a> and helping us to improve the documentation.</p></li>
+	        </div>
+        </div>
+      
+	  <hr class="separator"></hr>
+      
+      <footer>
+      <div class="layout_footer">
+        <p>&#169; 2015 - 2017 Obeo - All rights reserved</p>
+      </div>  
+      </footer>
+   
+        </div><!--/span-->
+      </div><!--/row-->
+    </div><!--/.fluid-container-->
+</body>
+</html>
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/gettingstarted.html b/mapping/releng/org.eclipse.intent.branding/intro/gettingstarted.html
new file mode 100644
index 0000000..d10a768
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/gettingstarted.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Welcome to Intent</title>
+    <!-- Bootstrap -->
+    <link rel="stylesheet" type="text/css" href="css/style.css" /> 
+</head>
+
+<body>
+    <div class="container-fluid">
+      <div class="row-fluid">
+        <div class="span3">
+          <img src="images/about.png" width="200" />
+        </div><!--/span-->
+      
+       <div class="span9">
+      	<div class="hero-unit">
+      		<ul class="breadcrumb">
+					<li>
+					<a href="index.html">Welcome</a> <span class="divider">/ </span>
+					</li>
+					<li class="active">Getting started</li>
+			</ul>
+			<h2>Getting started</h2>
+		   <hr class="separator"></hr>
+		   	<div>
+		    	<h3>First steps</h3>
+	            <ul>
+	            	<li>TODO</li>
+	            </ul>
+		   <div>
+		   <h3>Documentation</h3>
+	            <ul>
+	            	<li><a href="https://wiki.eclipse.org/Intent">Full documentation</a></li>
+	            </ul>
+	       </div>
+	       <div>
+		   <h3>Other related projects</h3>
+	            <ul>
+	            	<li>https://itea3.org/project/modelwriter.html</li>
+	            	<li>http://modelwriter.eu/</li>
+	            </ul>
+	         </div>
+        </div>
+      
+	  <hr class="separator"></hr>
+      
+      <footer>
+      <div class="layout_footer">
+        <p>&#169; 2015 - 2016 Obeo - All rights reserved</p>
+      </div>  
+      </footer>
+   
+        </div><!--/span-->
+      </div><!--/row-->
+    </div><!--/.fluid-container-->
+</body>
+</html>
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/images/about.png b/mapping/releng/org.eclipse.intent.branding/intro/images/about.png
new file mode 100644
index 0000000..4c557e8
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/images/about.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/index.html b/mapping/releng/org.eclipse.intent.branding/intro/index.html
new file mode 100644
index 0000000..9288fae
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/index.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Welcome to Intent</title>
+    <!-- Bootstrap -->
+    <link rel="stylesheet" type="text/css" href="css/style.css" /> 
+</head>
+
+<body>
+    <div class="container-fluid">
+      <div class="row-fluid">
+        <div class="span3">
+          <img src="images/about.png" width="200" />
+        </div><!--/span-->
+      
+       <div class="span9">
+      	<div class="hero-unit">
+      	<h2>Welcome to <a href="https://www.eclipse.org/intent/">Intent</a></h2>
+		   <hr class="separator"></hr>
+		   <div>
+	            <ul>
+	            	<li><a href="gettingstarted.html">Getting started</a></li>
+	            	<li><a href="findhelp.html">Find help</a>	</li>
+	            	<li><a href="getinvolved.html">Get involved</a></li>
+	            </ul>
+	        </div>
+	        <div>
+	        Visit Intent web site : <a https://www.eclipse.org/intent/">https://www.eclipse.org/intent/</a>
+	        </div>
+        </div>
+      
+	  <hr class="separator"></hr>
+      
+      <footer>
+      <div class="layout_footer">
+        <p>&#169; 2015 - 2017 Obeo - All rights reserved</p>
+      </div>  
+      </footer>
+   
+        </div><!--/span-->
+      </div><!--/row-->
+    </div><!--/.fluid-container-->
+</body>
+</html>
diff --git a/mapping/releng/org.eclipse.intent.branding/intro/product_welcome_intro.xml b/mapping/releng/org.eclipse.intent.branding/intro/product_welcome_intro.xml
new file mode 100644
index 0000000..89d103c
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/intro/product_welcome_intro.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<introContent>
+	<!-- Root page -->
+	<page id="root" content="index.html"/>
+</introContent>
\ No newline at end of file
diff --git a/mapping/releng/org.eclipse.intent.branding/plugin.properties b/mapping/releng/org.eclipse.intent.branding/plugin.properties
new file mode 100644
index 0000000..6c7189c
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/plugin.properties
@@ -0,0 +1,14 @@
+pluginName = Intent
+providerName = Obeo
+
+productName=Intent
+aboutText=Intent\n\
+\n\
+Version: 0.10.0\n\
+\n\
+(c) Copyright Obeo 2015-2017. All rights reserved.\n\
+\n\
+Visit https://www.eclipse.org/intent/\n\
+\n\
+This product includes software developed by the Eclipse Foundation http://www.eclipse.org/\n\
+This product includes software developed by the Apache Software Foundation http://apache.org/\n\
diff --git a/mapping/releng/org.eclipse.intent.branding/plugin.xml b/mapping/releng/org.eclipse.intent.branding/plugin.xml
new file mode 100644
index 0000000..39a9342
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/plugin.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+   <extension point="org.eclipse.ui.activities">
+      <!-- EMF MDD Tools -->
+      <activity
+            id="org.eclipse.emf.activity"
+            description="%activity.emf.desc"
+            name="%activity.emf">
+      </activity>
+      <!-- EMF Project and EMF Generator Model wizards and Reload action --> 
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.codegen\.ecore\.ui/.*">
+      </activityPatternBinding>      
+      <!-- Model importers -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.importer/.*">
+      </activityPatternBinding>
+      <!-- Model exporters -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.exporter/.*">
+      </activityPatternBinding>
+      <!-- Ecore editor -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.ecore\.editor/.*Ecore.*">
+      </activityPatternBinding>
+      <!-- Create Dynamic Instance action -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.ecore\.editor/.*CreateDynamic.*">
+      </activityPatternBinding>
+      <!-- XML Schema to Ecore mapping -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.mapping\.xsd2ecore\.editor/.*">
+      </activityPatternBinding>
+      <!-- Ecore to Ecore mapping -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.mapping\.ecore2ecore\.editor/.*">
+      </activityPatternBinding>
+      <!-- Ecore to XML mapping -->
+      <activityPatternBinding
+            activityId="org.eclipse.emf.activity"
+            pattern="org\.eclipse\.emf\.mapping\.ecore2xml\.ui/.*">
+      </activityPatternBinding>
+      <!-- Validation -->
+
+      <!-- Reflective Editors -->
+      <activity
+            id="org.eclipse.emf.reflective.activity"
+            description="%activity.emf.reflective.desc"
+            name="%activity.emf.reflective">
+      </activity>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.reflective.activity"
+            pattern="org\.eclipse\.emf\.ecore\.editor/.Open*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.reflective.activity"
+            pattern="org\.eclipse\.emf\.ecore\.editor/.*Reflective.*">
+      </activityPatternBinding>
+
+      <!-- EMF JET -->
+      <activity
+            id="org.eclipse.emf.jet.activity"
+            description="%activity.emf.jet.desc"
+            name="%activity.emf.jet">
+      </activity>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.jet.activity"
+            pattern="org\.eclipse\.emf\.codegen\.ui/.*">
+      </activityPatternBinding>
+
+      <!-- Sample XML Schema Editor -->
+      <activity
+            id="org.eclipse.xsd.activity"
+            description="%activity.xsd.desc"
+            name="%activity.xsd">
+      </activity>
+      <activityPatternBinding
+            activityId="org.eclipse.xsd.activity"
+            pattern="org\.eclipse\.xsd\.editor/.*">
+      </activityPatternBinding>
+
+      <!-- EMF Examples -->
+      <activity
+            id="org.eclipse.emf.examples.activity"
+            description="%activity.emf.examples.desc"
+            name="%activity.emf.examples">
+      </activity>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.emf\.example\.installer/.*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.xsd\.example\.installer/.*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.emf\.examples\.library\.editor/.*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.emf\.query\.examples/.*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.emf\.transaction\.examples/.*">
+      </activityPatternBinding>
+      <activityPatternBinding
+            activityId="org.eclipse.emf.examples.activity"
+            pattern="org\.eclipse\.emf\.validation\.examples/.*">
+      </activityPatternBinding>
+
+      <!-- The category should be something that makes sense for the product -->
+      <category
+            description="%activity.cat.emf.desc"
+            id="org.eclipse.emf.Category"
+            name="%activity.cat.emf">
+      </category>
+
+      <categoryActivityBinding
+            activityId="org.eclipse.emf.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+      <categoryActivityBinding
+            activityId="org.eclipse.emf.reflective.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+      <categoryActivityBinding
+            activityId="org.eclipse.emf.jet.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+      <categoryActivityBinding
+            activityId="org.eclipse.xsd.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+      <categoryActivityBinding
+            activityId="org.eclipse.emf.examples.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+    
+    
+     <!-- Viewpoint Specification -->
+      <activity
+            id="org.eclipse.sirius.specification.activity"
+            description="Viewpoint specification"
+            name="viewpointspecification">
+      </activity>
+      <activityPatternBinding
+            activityId="org.eclipse.sirius.specification.activity"
+            pattern=".*/org.eclipse.sirius.ui.specificationproject.wizard">
+      </activityPatternBinding>
+    
+     <categoryActivityBinding
+            activityId="org.eclipse.sirius.specification.activity"
+            categoryId="org.eclipse.emf.Category">
+      </categoryActivityBinding>
+   </extension>
+    
+    
+   <extension point="org.eclipse.core.runtime.products" id="product">
+    <product name="Intent" application="org.eclipse.ui.ide.workbench">
+      <property name="windowImages" value="icons/logo_16.gif,icons/logo_32.gif,icons/logo_64.gif"/>
+      <property name="appName" value="Intent"/>
+      <property name="aboutImage" value="icons/about.gif"/>
+      <property name="aboutText" value="Intent &#x0A;&#x0A;Version  0.10.0&#x0A;&#x0A;&#x0A;(c) Copyright (c) 2015-2017 Obeo. All Rights Reserved.&#x0A;Visit http://www.obeo.fr"/>
+      <property name="startupForegroundColor" value="000000"/>
+      <property name="startupMessageRect" value="3,300,495,15"/>
+      <property name="startupProgressRect" value="3,315,495,15"/>
+      <property name="preferenceCustomization" value="plugin_customization.ini"/>
+      <property
+            name="cssTheme"
+            value="org.eclipse.e4.ui.css.theme.e4_default">
+      </property>
+    </product>
+  </extension>
+   <extension
+         point="org.eclipse.ui.intro">
+      <introProductBinding
+            introId="org.eclipse.intent.welcome.intro"
+            productId="org.eclipse.intent.product">
+      </introProductBinding>
+      <intro
+            class="org.eclipse.ui.intro.config.CustomizableIntroPart"
+            icon="icons/logo_16.gif"
+            id="org.eclipse.intent.welcome.intro">
+      </intro>
+   </extension>
+   <extension
+         point="org.eclipse.ui.intro.config">
+      <config
+            content="intro/product_welcome_intro.xml"
+            id="org.eclipse.intent.welcome.config"
+            introId="org.eclipse.intent.welcome.intro">
+         <presentation
+               home-page-id="root">
+            <implementation
+                  kind="html"
+                  os="win32,linux,macosx">
+            </implementation>
+         </presentation>
+      </config>
+   </extension>
+    
+    
+</plugin>
diff --git a/mapping/releng/org.eclipse.intent.branding/plugin_customization.ini b/mapping/releng/org.eclipse.intent.branding/plugin_customization.ini
new file mode 100644
index 0000000..c6b4741
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/plugin_customization.ini
@@ -0,0 +1,3 @@
+org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true
+org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight
+org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
diff --git a/mapping/releng/org.eclipse.intent.branding/pom.xml b/mapping/releng/org.eclipse.intent.branding/pom.xml
new file mode 100644
index 0000000..91fa56a
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2016 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+    Obeo - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.branding</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <name>Intent Branding</name>
+  
+ <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-source-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.branding/splash.bmp b/mapping/releng/org.eclipse.intent.branding/splash.bmp
new file mode 100755
index 0000000..78be510
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/splash.bmp
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/splash.png b/mapping/releng/org.eclipse.intent.branding/splash.png
new file mode 100644
index 0000000..878b752
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/splash.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.branding/splash.svg b/mapping/releng/org.eclipse.intent.branding/splash.svg
new file mode 100644
index 0000000..1d6faa3
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.branding/splash.svg
@@ -0,0 +1,4159 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="splash.svg"
+   inkscape:version="0.92.1 r15371"
+   version="1.1"
+   id="svg3790"
+   height="297mm"
+   width="210mm">
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.9899495"
+     inkscape:cx="377.10103"
+     inkscape:cy="1549.7988"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4324"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1806"
+     inkscape:window-height="870"
+     inkscape:window-x="2349"
+     inkscape:window-y="415"
+     inkscape:window-maximized="0"
+     inkscape:snap-global="false"
+     showborder="false">
+    <sodipodi:guide
+       orientation="1,0"
+       position="306.00887,281.22647"
+       id="guide3907"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="790.85714,106.66667"
+       id="guide4809"
+       inkscape:locked="false" />
+  </sodipodi:namedview>
+  <defs
+     id="defs3792">
+    <inkscape:perspective
+       id="perspective3798"
+       inkscape:persp3d-origin="396.85039 : 374.17322 : 1"
+       inkscape:vp_z="793.70078 : 561.25983 : 1"
+       inkscape:vp_y="0 : 1066.6667 : 0"
+       inkscape:vp_x="0 : 561.25983 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.53333333 : 1"
+       inkscape:vp_y="0 : 1066.6667 : 0"
+       inkscape:vp_z="1.0666667 : 0.53333333 : 1"
+       inkscape:persp3d-origin="0.53333333 : 0.35555555 : 1"
+       id="perspective3808" />
+    <linearGradient
+       y2="135"
+       x2="353.57135"
+       y1="240"
+       x1="359.28571"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,16.840076,-385.12332)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3770"
+       xlink:href="#linearGradient3615-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3615-2">
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1;"
+         offset="0"
+         id="stop3617-3" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3619-2" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3227-5">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3229-1" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3231-7" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3821">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3823" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3825" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3776"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3828">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3832" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-543.44709,-641.38931)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3834"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3836">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3838" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3840" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3778"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3843">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3845" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3847" />
+    </linearGradient>
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-543.44709,-642.39946)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3849"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3851">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3853" />
+      <stop
+         style="stop-color:#345363;stop-opacity:1;"
+         offset="1"
+         id="stop3855" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3597-9">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3599-4" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3601-8" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1333.8754,557.29692)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3782"
+       xlink:href="#linearGradient3597-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3862">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3864" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3866" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-27.200724,469.56325)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3784"
+       xlink:href="#linearGradient3597-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3869">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3871" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3873" />
+    </linearGradient>
+    <linearGradient
+       y2="290.35715"
+       x2="702.10712"
+       y1="290.35715"
+       x1="581.10712"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2682.5475,707.53148)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3786"
+       xlink:href="#linearGradient3597-9"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3876">
+      <stop
+         style="stop-color:#4d7a91;stop-opacity:1;"
+         offset="0"
+         id="stop3878" />
+      <stop
+         style="stop-color:#88adc0;stop-opacity:1;"
+         offset="1"
+         id="stop3880" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.53333333 : 1"
+       inkscape:vp_y="0 : 1066.6667 : 0"
+       inkscape:vp_z="1.0666667 : 0.53333333 : 1"
+       inkscape:persp3d-origin="0.53333333 : 0.35555555 : 1"
+       id="perspective2991" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4287"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.53333333 : 1"
+       inkscape:vp_y="0 : 1066.6667 : 0"
+       inkscape:vp_z="1.0666667 : 0.53333333 : 1"
+       inkscape:persp3d-origin="0.53333333 : 0.35555555 : 1"
+       id="perspective4301" />
+    <linearGradient
+       y2="323.64511"
+       x2="755.04388"
+       y1="283.64511"
+       x1="622.55377"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4329"
+       xlink:href="#linearGradient3227-5"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3242"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3250"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3382"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3386"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3331"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient3335"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <filter
+       id="filter3345"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3347"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3349"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3351"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3353">
+        <feMergeNode
+           id="feMergeNode3355"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3357"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3359"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3361"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3363"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3365"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3367">
+        <feMergeNode
+           id="feMergeNode3369"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3371"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3373"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3375"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3377"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3379"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3381">
+        <feMergeNode
+           id="feMergeNode3383"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3385"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3387"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3389"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3391"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3393"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3395">
+        <feMergeNode
+           id="feMergeNode3397"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3399"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3401"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3403"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3405"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3407"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3409">
+        <feMergeNode
+           id="feMergeNode3411"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3413"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3415"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3417"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3419"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3421"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3423">
+        <feMergeNode
+           id="feMergeNode3425"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3427"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3429"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3431"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3433"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3435"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3437">
+        <feMergeNode
+           id="feMergeNode3439"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3441"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3443"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3445"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3447"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3449"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3451">
+        <feMergeNode
+           id="feMergeNode3453"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3455"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3457"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3459"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3461"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3463"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3465">
+        <feMergeNode
+           id="feMergeNode3467"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3469"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3471"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3473"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3475"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3477"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3479">
+        <feMergeNode
+           id="feMergeNode3481"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3483"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3485"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3487"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3489"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3491"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3493">
+        <feMergeNode
+           id="feMergeNode3495"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3497"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3499"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3501"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3503"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3505"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3507">
+        <feMergeNode
+           id="feMergeNode3509"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3511"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3513"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3515"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3517"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3519"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3521">
+        <feMergeNode
+           id="feMergeNode3523"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3525"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3527"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3529"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3531"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3533"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3535">
+        <feMergeNode
+           id="feMergeNode3537"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3539"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3541"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3543"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3545"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3547"
+         in="bluralpha"
+         dx="0"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3549">
+        <feMergeNode
+           id="feMergeNode3551"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3553"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3555"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3557"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3559"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3561"
+         in="bluralpha"
+         dx="0"
+         dy="-4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3563">
+        <feMergeNode
+           id="feMergeNode3565"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3567"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4402"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4404"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4406"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4408"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4410">
+        <feMergeNode
+           id="feMergeNode4412"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4414"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4674"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4676"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4678"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4680"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4682">
+        <feMergeNode
+           id="feMergeNode4684"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4686"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4798"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4802"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <filter
+       id="filter4812"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4814"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4816"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4818"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4820">
+        <feMergeNode
+           id="feMergeNode4822"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4824"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4826"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4828"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4830"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4832"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4834">
+        <feMergeNode
+           id="feMergeNode4836"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4838"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4840"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4842"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4844"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4846"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4848">
+        <feMergeNode
+           id="feMergeNode4850"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4852"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4854"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4856"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4858"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4860"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4862">
+        <feMergeNode
+           id="feMergeNode4864"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4866"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4868"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4870"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4872"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4874"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4876">
+        <feMergeNode
+           id="feMergeNode4878"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4880"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4882"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4884"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4886"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4888"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4890">
+        <feMergeNode
+           id="feMergeNode4892"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4894"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4896"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4898"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4900"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4902"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4904">
+        <feMergeNode
+           id="feMergeNode4906"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4908"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4910"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4912"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4914"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4916"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4918">
+        <feMergeNode
+           id="feMergeNode4920"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4922"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4924"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4926"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4928"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4930"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4932">
+        <feMergeNode
+           id="feMergeNode4934"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4936"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4938"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4940"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4942"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4944"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4946">
+        <feMergeNode
+           id="feMergeNode4948"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4950"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4952"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4954"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4956"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4958"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4960">
+        <feMergeNode
+           id="feMergeNode4962"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4964"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4966"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4968"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4970"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4972"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4974">
+        <feMergeNode
+           id="feMergeNode4976"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4978"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4980"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4982"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4984"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4986"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4988">
+        <feMergeNode
+           id="feMergeNode4990"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4992"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4994"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4996"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4998"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5000"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5002">
+        <feMergeNode
+           id="feMergeNode5004"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5006"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter5008"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur5010"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5012"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5014"
+         in="bluralpha"
+         dx="4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5016">
+        <feMergeNode
+           id="feMergeNode5018"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5020"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3473"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3475"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3477"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3479"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3481">
+        <feMergeNode
+           id="feMergeNode3484"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3486"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3488"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3490"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3492"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3494"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3496">
+        <feMergeNode
+           id="feMergeNode3498"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3500"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3502"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3504"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3506"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3508"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3510">
+        <feMergeNode
+           id="feMergeNode3512"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3514"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3516"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3518"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3520"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3522"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3524">
+        <feMergeNode
+           id="feMergeNode3526"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3528"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3530"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3532"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3534"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3536"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3538">
+        <feMergeNode
+           id="feMergeNode3540"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3542"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3544"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3546"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3548"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3550"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3552">
+        <feMergeNode
+           id="feMergeNode3554"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3556"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3558"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3560"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3562"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3564"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3566">
+        <feMergeNode
+           id="feMergeNode3568"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3570"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3572"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3574"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3576"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3578"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3580">
+        <feMergeNode
+           id="feMergeNode3582"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3584"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3586"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3588"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3590"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3592"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3594">
+        <feMergeNode
+           id="feMergeNode3596"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3598"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3600"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3602"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3604"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3606"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3608">
+        <feMergeNode
+           id="feMergeNode3610"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3612"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3614"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3616"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3618"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3620"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3622">
+        <feMergeNode
+           id="feMergeNode3624"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3626"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3628"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3630"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3632"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3634"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3636">
+        <feMergeNode
+           id="feMergeNode3638"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3640"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3642"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3644"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3646"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3648"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3650">
+        <feMergeNode
+           id="feMergeNode3652"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3654"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3656"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3658"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3660"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3662"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3664">
+        <feMergeNode
+           id="feMergeNode3666"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3668"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3670"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3672"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3674"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3676"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3678">
+        <feMergeNode
+           id="feMergeNode3680"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3682"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3684"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3686"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3688"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3690"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3692">
+        <feMergeNode
+           id="feMergeNode3694"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3696"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3698"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3700"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3702"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3704"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3706">
+        <feMergeNode
+           id="feMergeNode3708"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3710"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter3712"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur3714"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix3716"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset3718"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge3720">
+        <feMergeNode
+           id="feMergeNode3722"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode3724"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9293"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9295"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9297"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9299"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9301">
+        <feMergeNode
+           id="feMergeNode9303"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9305"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9077"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9079"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9081"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9083"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9085">
+        <feMergeNode
+           id="feMergeNode9087"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9089"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-7" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-4" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9237"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9239"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9241"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9243"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9245">
+        <feMergeNode
+           id="feMergeNode9247"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9249"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9223"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9225"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9227"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9229"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9231">
+        <feMergeNode
+           id="feMergeNode9233"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9235"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9209"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9211"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9213"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9215"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9217">
+        <feMergeNode
+           id="feMergeNode9219"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9221"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4213"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4215"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4217"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4219"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4221">
+        <feMergeNode
+           id="feMergeNode4223"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4225"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4241"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4243"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4245"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4247"
+         in="bluralpha"
+         dx="0"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4249">
+        <feMergeNode
+           id="feMergeNode4251"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4253"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4269"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4271"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4273"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4275"
+         in="bluralpha"
+         dx="0"
+         dy="-4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4277">
+        <feMergeNode
+           id="feMergeNode4279"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4281"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4285"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <filter
+       id="filter4318"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4320"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4322"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.5 0 " />
+      <feOffset
+         id="feOffset4324"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4326">
+        <feMergeNode
+           id="feMergeNode4328"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4330"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4332"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4334"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4336"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset4338"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4340">
+        <feMergeNode
+           id="feMergeNode4342"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4344"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4346"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9237-3"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9239-6"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9241-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9243-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9245-9">
+        <feMergeNode
+           id="feMergeNode9247-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9249-7"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9223-6"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9225-3"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9227-9"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9229-1"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9231-0">
+        <feMergeNode
+           id="feMergeNode9233-5"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9235-8"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9209-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9211-9"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9213-0"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9215-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9217-4">
+        <feMergeNode
+           id="feMergeNode9219-8"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9221-8"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-1"
+       id="linearGradient5972"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-162.6078,616.6023)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6076"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6080"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6196"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50552,245.52314)"
+       x1="-1.0714296"
+       y1="7.3214297"
+       x2="350.71429"
+       y2="7.3214297" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6198"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50538,245.52314)"
+       x1="-1.1364633"
+       y1="243.9391"
+       x2="350.64923"
+       y2="243.9391" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6200"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6204"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <filter
+       id="filter6249"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur6251"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6253"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset6255"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6257">
+        <feMergeNode
+           id="feMergeNode6259"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6261"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter6263"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur6265"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6267"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset6269"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6271">
+        <feMergeNode
+           id="feMergeNode6273"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6275"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter6277"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur6279"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6281"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset6283"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6285">
+        <feMergeNode
+           id="feMergeNode6287"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6289"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter6291"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur6293"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6295"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.4 0 " />
+      <feOffset
+         id="feOffset6297"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6299">
+        <feMergeNode
+           id="feMergeNode6301"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6303"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9077-8"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9079-2"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9081-6"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9083-7"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9085-9">
+        <feMergeNode
+           id="feMergeNode9087-2"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9089-3"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-0">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-1" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9237-8"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9239-0"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9241-6"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9243-3"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9245-4">
+        <feMergeNode
+           id="feMergeNode9247-5"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9249-6"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter6461"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur6463"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix6465"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset6467"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge6469">
+        <feMergeNode
+           id="feMergeNode6471"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode6473"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter9223-4"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur9225-9"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix9227-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset9229-0"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge9231-6">
+        <feMergeNode
+           id="feMergeNode9233-4"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode9235-3"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4356"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4360"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-0"
+       id="linearGradient4368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-2506.6273,-1560.4453)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <filter
+       id="filter4377"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4379"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4381"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4383"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4385">
+        <feMergeNode
+           id="feMergeNode4387"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4389"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4414"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4416"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4418"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4420"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4422">
+        <feMergeNode
+           id="feMergeNode4424"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4426"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4428"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4430"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4432"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4434"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4436">
+        <feMergeNode
+           id="feMergeNode4438"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4440"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4442"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4444"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4446"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4448"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4450">
+        <feMergeNode
+           id="feMergeNode4452"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4454"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       id="filter4456"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-.25"
+       y="-.25">
+      <feGaussianBlur
+         id="feGaussianBlur4458"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4460"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4462"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4464">
+        <feMergeNode
+           id="feMergeNode4466"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4468"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5341"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5343"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5345"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5347"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5349">
+        <feMergeNode
+           id="feMergeNode5351"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5353"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-1-1-1"
+       id="linearGradient5282"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,-2461.1274,-1278.5966)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3165-1-1-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3167-7-7-6" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3169-4-4-2" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5327"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5329"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5331"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5333"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5335">
+        <feMergeNode
+           id="feMergeNode5337"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5339"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5313"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5315"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5317"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5319"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5321">
+        <feMergeNode
+           id="feMergeNode5323"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5325"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter5299"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur5301"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix5303"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset5305"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge5307">
+        <feMergeNode
+           id="feMergeNode5309"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode5311"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4362"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4364"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4366"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4368"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4370">
+        <feMergeNode
+           id="feMergeNode4372"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4374"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4348"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4350"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4352"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4354"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4356">
+        <feMergeNode
+           id="feMergeNode4358"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4360"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4334"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4336"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4338"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4340"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4342">
+        <feMergeNode
+           id="feMergeNode4344-1"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4346"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter11658"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur11660"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix11662"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset11664"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge11666">
+        <feMergeNode
+           id="feMergeNode11668"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode11670"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4362-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4364-4"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4366-0"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4368-9"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4370-4">
+        <feMergeNode
+           id="feMergeNode4372-8"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4374-8"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       id="linearGradient3165-8-2"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-8-4"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-2-5"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4348-5"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4350-1"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4352-7"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4354-1"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4356-1">
+        <feMergeNode
+           id="feMergeNode4358-5"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4360-2"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4334-7"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4336-6"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4338-1"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4340-4"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4342-2">
+        <feMergeNode
+           id="feMergeNode4344-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4346-2"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter7774"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur7776"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix7778"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset7780"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge7782">
+        <feMergeNode
+           id="feMergeNode7784"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode7786"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient6091"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.300058,0,0,1.3036437,259.76284,644.22274)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6093"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50552,245.52314)"
+       x1="-1.0714296"
+       y1="7.3214297"
+       x2="350.71429"
+       y2="7.3214297" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6095"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50538,245.52314)"
+       x1="-1.1364633"
+       y1="243.9391"
+       x2="350.64923"
+       y2="243.9391" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6097"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,388.247)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3597-9"
+       id="linearGradient6099"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8541381,0,0,1.3036437,-48.757944,384.46363)"
+       x1="581.10712"
+       y1="290.35715"
+       x2="702.10712"
+       y2="290.35715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient6101"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3036437,0,0,1.3036437,-301.77933,389.25715)"
+       x1="622.55377"
+       y1="283.64511"
+       x2="755.04388"
+       y2="323.64511" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3597-9"
+       id="linearGradient6103"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.3575926,-2.8936755,0,1333.8754,557.29692)"
+       x1="581.10712"
+       y1="290.35715"
+       x2="702.10712"
+       y2="290.35715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3597-9"
+       id="linearGradient6105"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0384179,0,0,1.0830358,-27.200724,469.56325)"
+       x1="581.10712"
+       y1="290.35715"
+       x2="702.10712"
+       y2="290.35715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3597-9"
+       id="linearGradient6107"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.1251041,-6.8169736,0,2682.5475,707.53148)"
+       x1="581.10712"
+       y1="290.35715"
+       x2="702.10712"
+       y2="290.35715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-2"
+       id="linearGradient6109"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,549.9115,550.21259)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4362-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4364-3"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4366-8"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4368-4"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4370-9">
+        <feMergeNode
+           id="feMergeNode4372-4"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4374-9"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient7469"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       id="linearGradient3165-8-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3167-8-3"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3169-2-4"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4348-1"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4350-5"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4352-2"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4354-5"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4356-1-1">
+        <feMergeNode
+           id="feMergeNode4358-3"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4360-9"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter4334-2"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur4336-0"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix4338-6"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset4340-8"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge4342-2-7">
+        <feMergeNode
+           id="feMergeNode4344-9"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode4346-0"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter7513"
+       inkscape:label="Drop shadow"
+       width="1.5"
+       height="1.5"
+       x="-0.25"
+       y="-0.25">
+      <feGaussianBlur
+         id="feGaussianBlur7515"
+         in="SourceAlpha"
+         stdDeviation="2"
+         result="blur" />
+      <feColorMatrix
+         id="feColorMatrix7517"
+         result="bluralpha"
+         type="matrix"
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0 " />
+      <feOffset
+         id="feOffset7519"
+         in="bluralpha"
+         dx="-4"
+         dy="4"
+         result="offsetBlur" />
+      <feMerge
+         id="feMerge7521">
+        <feMergeNode
+           id="feMergeNode7523"
+           in="offsetBlur" />
+        <feMergeNode
+           id="feMergeNode7525"
+           in="SourceGraphic" />
+      </feMerge>
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4650"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4652"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50552,245.52314)"
+       x1="-1.0714296"
+       y1="7.3214297"
+       x2="350.71429"
+       y2="7.3214297" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3227-5"
+       id="linearGradient4654"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3014901,0,0,1.3036437,258.50538,245.52314)"
+       x1="-1.1364633"
+       y1="243.9391"
+       x2="350.64923"
+       y2="243.9391" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4659"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4165366,0,0,1.3034829,270.48221,424.24418)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4666"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4165366,0,0,1.3034829,270.48221,24.24418)"
+       x1="359.28571"
+       y1="240"
+       x2="353.57135"
+       y2="135" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4714"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4764"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,270.04683,811.40415)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4803"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4853"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,270.04683,1231.4041)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4855"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4899"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,890.04683,811.40415)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4901"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4945"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,890.04683,1231.4041)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient3900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,270.04683,1631.4041)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient3902"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient3923"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,890.04683,1631.4041)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient3925"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient4745"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,890.04683,2011.4041)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3165-8-6"
+       id="linearGradient4747"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1915651,0,0,0.1611116,607.37313,337.14688)"
+       x1="348.89258"
+       y1="220.17154"
+       x2="348.89258"
+       y2="566.41748" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3615-2"
+       id="linearGradient3971"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4170462,0,0,1.4304473,278.61826,-671.45304)"
+       x1="350.01523"
+       y1="237.67511"
+       x2="336.45663"
+       y2="42.779255" />
+  </defs>
+  <metadata
+     id="metadata3795">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Calque 1">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none"
+       x="550.40375"
+       y="661.85229"
+       id="text2932"
+       transform="scale(0.99954733,1.0004529)"><tspan
+         sodipodi:role="line"
+         id="tspan2934"
+         x="550.40375"
+         y="661.85229"
+         style="font-size:39.98194504px;line-height:1.25"> </tspan></text>
+    <text
+       transform="scale(0.99954733,1.0004529)"
+       id="text4590"
+       y="1061.6713"
+       x="550.40375"
+       style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none"
+       xml:space="preserve"><tspan
+         y="1061.6713"
+         x="550.40375"
+         id="tspan4592"
+         sodipodi:role="line"
+         style="font-size:39.98194504px;line-height:1.25"> </tspan></text>
+    <rect
+       y="-657.14862"
+       x="275.58157"
+       height="329.0025"
+       width="499.00253"
+       id="rect3929"
+       style="opacity:0.99142857;fill:url(#linearGradient3971);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.997491;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       inkscape:export-filename="/Volumes/partage/private/marketing/Design/Produits/UMLDesigner/splashscreen/png/splashscreen_UML_5.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <rect
+       transform="matrix(1.073713,0,0,1.073713,2.6401789,-954.90334)"
+       y="485.64908"
+       x="529.2757"
+       height="39.10931"
+       width="39.10931"
+       id="rect3943"
+       style="opacity:0.99142857;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.01200008;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3614);enable-background:accumulate"
+       inkscape:export-filename="Z:\private\général\Charte graphique\OD\OD6.0\splashscreen\png\splashscreen_OD6.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       transform="matrix(1.0736865,0,0,1.073713,-1.6373811,-956.29964)"
+       id="path3945"
+       d="m 664.30928,462.60713 -2.5665,0.48886 0,1.34437 0.5703,-0.61108 0.6519,0 0,0.20369 -1.2222,0.40739 0,2.07767 0.2037,0 -0.2037,0.28517 0,0.8555 c -0.1242,0.11339 -0.1889,0.18925 -0.2852,0.28518 l 0,0.48885 c 0.096,-0.0462 0.1848,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24442 0,8.55509 0.6111,2.24062 0.082,0.57033 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.108,0.10817 0.163,0.16295 l 0,0.16296 -0.2445,-0.0815 c -0.024,-0.006 -0.057,-10e-4 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61107 -0.4074,0.0815 0,3.87017 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.8555 c -0.09,0.26172 -0.1903,0.5021 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2037,-0.0815 0,11.1216 0.163,-1.1814 0.1222,0.0407 0,1.01848 0.2037,0 0.4889,0.52959 c -0.1,0.0821 -0.1897,0.19341 -0.2445,0.36665 l -0.2036,-0.24443 -0.082,0 -0.163,-0.65181 0,0.57033 -0.041,0 -0.2444,0.12222 0,0.89624 0.2851,-0.12221 0,0.32591 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.3667,-0.12222 0,0.24442 -0.3667,0 0,0.85552 -0.2851,0.0815 0,0.20368 0.2851,-0.0815 0,0.0815 c 0.4141,4e-5 0.5704,-0.14214 0.5704,-0.44812 l -0.2037,-0.20369 0.5296,0 -0.12221,0.0815 -0.082,0.24443 0.1222,0 0,0.0815 0.2037,0.24442 0,0.28517 -1.0185,0 0,0.24444 3.3813,0 c 0.2347,-0.63833 0.527,-0.97773 0.937,-0.97773 l 0,-0.40739 -0.5703,0 -0.2852,0.2037 -0.1629,0 -0.24451,-0.32591 0.082,-0.24443 -0.2444,0.0815 -0.6518,0 -0.32591,0.12222 0,-0.0407 -0.3667,-0.0815 -0.28521,0.2037 -0.44809,-0.2037 0,-0.24442 1.05921,0 0,-0.2037 -0.20371,-0.20369 0,-0.24443 0.48889,0.16295 -0.082,0.2037 0.57029,0.12221 0.28521,-0.0407 0.61109,0.2037 -0.082,0.24442 0.2852,0.0815 0.5703,-0.0407 0.65179,0.24443 0,0.2037 c -0.3219,6e-5 -0.81629,0.38652 -1.38509,1.18142 l 18.5769,0 c 0.082,-0.0802 0.16341,-0.16304 0.24451,-0.24444 0.212,0.0756 0.504,0.16494 0.73329,0.24444 l 1.4666,0 -0.2445,-0.40739 1.1407,0.0815 0.20371,0.0815 -0.041,0.16296 -0.52958,0.0815 0.73329,0 7.86261,0 0.041,-0.16296 c 0.061,0.0307 0.13559,0.0557 0.2037,0.0815 l -0.041,0.0815 1.30359,0 0.36671,-0.24444 -0.041,0.24444 2.5665,0 0.082,-0.24444 0.2445,0.0407 -0.082,0.2037 0.44809,0 0,-1.34438 -0.082,0.24444 -0.24441,-0.0407 0.12221,-0.40739 0.20371,0.0815 0,-9.04394 -0.12221,-0.0407 0.12221,-0.57034 0,-1.71102 -0.28522,0.0815 -0.041,0.20368 0.2037,0.32592 -0.61109,1.09994 -0.20371,-0.0407 0.937,-3.50352 0,-1.58879 -0.2852,0.12221 -0.041,1.05921 -0.6518,2.36283 -0.5703,0.28516 1.18141,-4.39976 0.36671,0.57035 0,-1.34437 -0.163,-0.0407 0.163,-0.57034 0,-1.83324 c -0.25982,-0.39207 -0.52391,-0.78276 -0.8148,-1.14067 l 0.8148,0.0407 0,-1.22215 -0.20371,0.85551 -0.24451,-0.0815 0.32592,-1.18142 0.1223,0.0407 0,-3.54425 -0.082,0.28517 -0.44821,-0.12222 0.52959,-2.03692 0,-7.98475 -0.041,0.12222 -0.8147,0 -0.6519,-0.36665 -0.8147,0 0.041,-0.2037 -0.326,-0.52959 0.082,-0.28517 0.2037,0.0407 0.8556,0.77402 0.28511,-0.16295 0.082,-0.28516 c -0.3162,-0.38756 -1.75491,-1.08881 -4.31831,-2.07767 l -1.0999,0 2.811,1.18142 -0.1223,0.40738 0.28521,-0.16296 0.69259,0.2037 -0.48888,0.81477 -0.20371,-0.0407 -0.16291,-0.28516 -0.2445,-0.0407 -0.36659,0.12221 0.12221,-0.40739 0.36658,-0.16295 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.2852,0.20369 -0.2444,-0.0407 -0.6926,-0.48886 -0.5703,0.36664 -1.5481,-1.26289 -1.8333,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54806 0.2037,0.0407 -0.1629,0.69256 -0.4482,-0.12222 -0.082,0.20369 c 0.3277,0.0876 0.5625,0.55849 0.6926,1.38511 l -0.1629,0.69256 -0.2445,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89624 -0.4889,-0.12222 -0.2036,0.93699 0.4481,0.12221 -0.1222,0.40739 -0.4482,-0.12221 -0.1222,0.40737 0.4481,0.12222 -0.1629,0.69256 c -0.4097,-0.10952 -0.6971,0.12321 -0.937,0.69255 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28518 -0.2037,0.28518 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28518 l 0.2037,0 0,-0.20369 -0.163,-0.16296 c 0.014,-0.071 0.021,-0.12963 0.041,-0.20368 l 0.5296,0.16295 0.163,-0.65182 -0.4074,-0.61107 0.937,-1.38511 -0.2037,-0.0407 0.2852,-0.16296 0.082,-0.28517 -0.2037,-1.46658 0.6518,-0.24443 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06751 -0.199,-1.68476 -1.0592,-1.91471 l 0.2851,-0.16295 0.082,-0.24443 -1.5888,0 0,0.0815 0.6926,0.16295 -0.937,0.7333 c 0.085,-0.31635 0.049,-0.64018 -0.041,-0.97773 l -1.5888,0 -0.2037,0.69256 -0.2445,-0.0407 0.163,-0.65182 -0.937,0 0.2444,0.48886 -0.082,0.44813 -0.3666,-0.57035 0.082,-0.36664 -0.4481,0 -0.8555,3.09613 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12222 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18142 0.3666,-1.42584 -0.4888,0 -0.6111,2.36283 -0.2444,0 0.611,-2.36283 -2.6072,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.0592 c -0.9988,-0.37943 -1.8221,-0.65178 -2.4443,-0.65181 -0.1476,0.37417 -0.4355,0.625 -0.7741,0.77402 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.20369 l -0.041,-0.20369 0.5704,-0.0815 0,-0.28517 c 0,-0.2009 -0.2546,-0.36699 -0.774,-0.48887 l -0.041,-0.20369 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13728 -0.624,-0.21603 -1.0185,-0.28517 l -1.711,0 0,0.16295 -0.2444,0.0815 -0.081,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97773 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83263 0,-0.93699 -0.041,0.0407 -0.1629,0.61107 0.2037,0.28518 z m -34.3428,-12.75115 -0.2852,0.44812 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12221 z m 13.4845,0.0407 0.4482,0.12222 -0.041,0.24443 -0.4482,-0.12222 0.041,-0.24443 z m -16.2955,0.36665 0,0.48887 -0.4481,0 0.4481,-0.48887 z m 7.8218,0 0.082,0.0407 0.2037,0.89624 c -0.2224,-0.0204 -0.4372,-0.0455 -0.611,-0.0815 l 0.2036,-0.65181 -0.041,-0.16296 0.163,-0.0407 z m 1.4666,0 0.4074,0.48887 -0.4074,0 0,-0.48887 z m -2.5665,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4482,0 0,0.28517 -0.4482,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.9739,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24442 -0.163,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24442 z m 13.0364,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57034 0.2852,-0.16295 z m 11.8143,0.0407 0.4481,0.12221 -0.1222,0.48886 -0.4889,-0.12222 0.163,-0.48885 z m -5.8257,0.16295 0.2444,0.0407 -0.1629,1.58881 -0.2852,0.16295 -0.1222,0.48886 -0.5296,2.52579 -0.6518,-0.65181 1.0999,-2.64801 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01846 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.774,3.87015 -0.2852,0.16295 -0.082,1.14068 -0.2037,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0956 0.4481,-0.21289 0.4481,-0.36665 l -0.2851,-0.28516 1.3851,-5.21454 z m -17.7214,0.20369 0.2445,0 0.041,0.16296 -0.082,0.0407 -0.1222,0 -0.082,-0.2037 z m 14.5438,0.12222 0.2037,0.0407 -0.082,0.44813 -0.2444,-0.0815 0.1222,-0.40739 z m 12.6291,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0815 0.1222,-0.40739 z m -29.8209,0.0407 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m -2.0777,0.20369 1.0592,0 c -0.029,0.0977 -0.082,0.18869 -0.1222,0.28518 l -0.937,0 0,-0.28518 z m 11.855,0 0,0.5296 -0.4888,0 0.4888,-0.5296 z m 24.3619,0.16296 c -0.074,0.27638 0.1417,0.51306 0.5703,0.65181 l 0,-0.52959 -0.5703,-0.12222 z m -6.0701,0.3259 0.4481,0.12222 -0.3666,1.30363 -0.4482,-0.12222 0,-1.18141 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48886 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.075,-0.3749 0.082,-0.57034 l 1.7925,-0.16295 z m 0.3667,0 0.6518,0.20369 0,0.28517 -0.8555,0 0.2037,-0.28517 0,-0.20369 z m 1.0184,0 0.041,0 0.2852,0.44812 -0.041,0.0407 -0.2852,0 0,-0.48886 z m 1.8333,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36665 -0.082,0.20369 -0.4481,0.85551 c -0.076,0.6131 0.1199,0.99044 0.5296,1.09994 l -0.1222,0.40738 -0.5296,-0.12222 -0.082,0.28517 0.2444,0.28517 -0.3667,0.12222 0.041,1.18142 -0.4888,1.79249 -0.5296,-0.12222 -0.4074,-1.30363 0.1222,-0.48886 0.2444,0.0407 -0.1222,0.48886 0.4481,0.12221 0.041,-0.20369 -0.2851,-0.81477 0.2851,-0.12222 c 0.1186,-0.44345 -0.079,-0.76487 -0.5703,-0.89624 l 0.6518,-0.28517 -0.1222,0.40739 0.4889,0.12221 0.3666,-3.21834 0.041,-0.20369 z m -20.4917,0.12221 0.2445,0.0407 0.1222,0.48886 -0.3259,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.7404,0.0815 0.4482,0 -0.4482,0.5296 0,-0.5296 z m 1.3037,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2573,0.20542 -0.343,0.30401 -0.5704,0.48886 l -0.2037,-0.24443 0,-0.28517 z m 1.3036,0 0.3667,0 0.4074,0 0,0.2037 -0.082,-0.0815 -0.4889,0.12221 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28517 z m 1.1407,0 0.6111,0 -0.041,0.28517 -0.5703,0 0,-0.28517 z m 7.2923,0 0.6518,0 -0.082,0.24443 0.1222,0.44812 -0.2852,0.0407 -0.4073,-0.65181 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24443 -0.2037,0.0407 -0.082,-0.28517 z m 21.1434,0 0.8148,0 0.2445,0.0407 -0.082,0.20369 -1.1,0.16295 0.1222,-0.40738 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40738 -0.2444,-0.0815 0.1222,-0.40738 z m 5.2553,0 -0.082,0.20369 0.4889,0.12221 0.041,-0.20368 -0.4481,-0.12222 z m 10.144,0.36664 0.4889,0.12222 0.4074,0.57034 -0.6518,0.32591 0.2851,0.0815 -0.6111,1.01847 c -0.3276,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.20369 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.73329 -0.4481,-0.12221 0.163,-0.69256 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.082,-0.44813 z m -24.7285,0.0815 0.082,0.28517 -0.2444,0 0,-0.24443 0.1629,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.611,0 0.1629,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16296 0.2445,-0.0815 z m 3.748,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.0592,0 0.8148,0 0,0.24443 -0.8148,0 0,-0.24443 z m 22.3656,0.0407 0.4482,0.12222 0.2851,0.28517 0.081,-0.40739 0.2445,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1629,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.774,0.73329 l -0.3667,-0.61107 0.3667,-1.30364 z m -31.0022,0.0407 0.2851,0.2037 -0.2037,0.0815 -0.082,-0.28518 z m -4.7257,0.0815 0.041,0.0815 -0.1223,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16296 -0.041,0.20368 -0.5296,-0.12221 0.041,-0.24443 z m -20.4917,0.0407 0.3667,0 0,0.28517 -0.3667,0 0,-0.28517 z m 3.5443,0 0.2037,0 c 0.2933,0.10004 0.5027,0.25431 0.6518,0.48886 l -0.082,0.12221 c 0.049,0.098 0.1129,0.18842 0.163,0.28517 l -0.3667,0 0,0.24444 0.5296,0.0815 c 0.074,0.13781 0.168,0.27231 0.2445,0.40738 l -1.7925,0 0,-0.20369 c 0.5521,10e-5 0.8147,-0.22357 0.8147,-0.5296 l -0.3666,-0.40738 0,-0.48886 z m -9.2885,0.0407 0.1223,0.44812 -0.2037,0.0407 -0.082,-0.3259 0.1629,-0.16295 z m -3.5035,0.0815 0.082,0.44811 -0.4481,0.12222 -0.041,-0.16296 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6296,0.0407 c 0.2851,1.0667 0.7124,1.54313 1.3036,1.38511 l 0.082,0.16295 -0.163,0.24443 -0.2444,-0.12221 c -0.5964,0.73086 -0.8708,1.45176 -0.6926,2.1184 l -0.8555,-0.65181 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61107 l 0.9777,-0.73329 -0.4481,-0.93699 -0.041,-0.16295 0.4074,-0.12222 z m 23.5878,0.24443 0.4481,0.12221 -0.082,0.24444 -0.4481,-0.12222 0.082,-0.24443 z m -14.9512,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.5514,0.0407 c 0.1566,0.12931 0.3291,0.24634 0.5704,0.36665 l 0,-0.16295 0.082,0.36665 0,0.0815 -0.4482,0.12221 -0.2037,-0.77404 z m 23.2212,0.0407 0.4481,0.12222 0,0.97772 -0.2852,0.12222 -0.041,0.20369 -0.1629,1.46659 -0.4074,0.57034 0.2037,0.24443 -0.3259,0.20369 0.3666,0.57034 -0.2852,0.12221 -0.2444,-0.0407 -0.041,1.14067 -0.3259,1.14068 -0.4481,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.1629,0.0407 c 0.083,0.20379 0.1422,0.44083 0.163,0.69256 l -0.041,0.2037 -0.163,-0.24444 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54806 0.774,-2.85169 0.4481,-0.81477 -0.2851,-1.0592 0.52959,0.16294 0.32591,-2.07766 z m -28.4358,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.2852,-0.16296 -0.2037,0.0815 0.3667,0.48886 -0.4889,0.61108 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48885 -0.163,0 -0.2037,0.28516 -0.2037,0 0.3667,-0.61107 1.2629,-0.2037 z m 4.8072,0 0.163,0.65182 -0.2037,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.0885,0.28517 0.2037,0 0,0.28518 -0.2037,0.24442 -0.2445,0 0,-0.3259 c 0.078,-0.065 0.1634,-0.13004 0.2445,-0.2037 z m 32.5911,0.40739 1.5073,1.34436 -0.1222,0.44813 -0.5296,-0.16295 -0.4889,1.79249 -0.2037,-0.0407 0.4074,-2.48505 -0.2852,0.12221 -0.3259,-0.0815 0.041,-0.93699 z m 4.4812,0 0.7741,0 -0.1222,0.40738 -0.6926,-0.20369 0.041,-0.20369 z m -27.4172,0.12221 0.041,0 0.2037,0.20369 -0.163,0.0407 -0.082,-0.24443 z m 3.422,0 0.5704,0 0,0.20369 -0.5704,0 0,-0.20369 z m 5.4998,0 0.041,0 0,0.20369 -0.082,0 0.041,-0.20369 z m 0.5296,0.16295 c -0.014,0.0596 -0.024,0.0992 -0.041,0.16296 l 0.4074,0.12222 c -0.1395,0.12917 -0.3455,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4888,-0.24444 z m -4.6442,0.0407 0.6518,0.2037 0,0.44813 c -0.414,0 -0.6518,0.1829 -0.6518,0.48885 l -0.163,0 c 0,-0.45891 -0.1313,-0.73324 -0.4074,-0.73329 l 0,-0.20369 0.5704,-0.2037 z m 11.4476,0.0407 0.3259,0.61109 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.2037 z m -18.0881,0.0407 0.5704,0.28517 0.6518,2.36284 0,0.0815 -0.3667,-0.5296 -0.2037,0 0.5704,0.85551 0.041,0.65182 0.2852,0.12221 -0.3667,0.57034 -1.1814,-4.39976 z m 15.4401,0 0.2444,0.0407 -0.2852,1.09994 -0.2444,-0.0407 0.2852,-1.09994 z m -7.0886,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48886 0.041,0.16295 -0.4889,0.12222 -0.1629,-0.65181 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16295 0.6518,2.36284 -0.2852,-0.16296 -0.8147,-3.05538 z m -7.8218,0.0815 0.082,0.36664 -0.2037,0.0407 -0.082,-0.36663 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61107 0.082,0.24444 0.2444,0.16295 c -0.7759,0.20743 -1.0756,0.74802 -0.937,1.71101 l 0.3667,0.57035 -0.2037,0.0407 0.5703,0.24442 -0.1629,1.30363 0.082,0.28518 0.2444,0.12221 -0.2037,0.0407 0.5704,0.85551 c -0.141,0.11253 -0.2864,0.23952 -0.4481,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4073,-0.12222 -0.2036,-0.81476 -0.4482,0.12221 -0.2037,-0.81478 0.4074,-0.1222 -0.1222,-0.44813 -0.6518,0.20369 0.082,0.44812 -0.2037,0.0407 -0.163,-0.61107 c 0.1174,-0.74568 0.3563,-1.1839 0.6519,-1.2629 l -0.082,-0.16295 -0.4074,0.0815 -0.163,-0.61108 0.2037,-0.0407 1.3444,-2.03692 z m 31.3282,0.20368 0.2444,0.0407 0.2445,0.28518 0.2851,-0.12222 0.6926,0.16295 0.4481,2.28136 -0.041,0.2037 0.2852,0.0815 0.2852,-0.12221 0.2444,0.0407 -0.6926,2.64799 c -0.6158,-0.3229 -0.8481,-0.90563 -0.611,-1.79249 l -0.2037,-0.0815 0.2851,-0.12221 0.1223,-0.48886 0.082,-1.18142 -0.5704,-0.12221 -0.6925,2.68873 0.2444,0.28517 -0.3667,0.12222 -0.041,0.2037 0.2037,2.19987 -0.8147,0 c -0.1161,0.56731 -0.1894,1.08429 -0.2445,1.50732 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.3259,0.12221 -0.4481,-0.12221 -0.163,-0.93699 0.5704,-0.48886 0,-0.12222 c 0.055,0.0879 0.1486,0.16719 0.2852,0.2037 l 0.2037,0.0407 0.082,-0.20369 0.2444,-1.87397 0.3666,-0.5296 0.7333,-3.62572 0.2445,-0.89626 -0.4482,-0.12221 -0.3666,1.34437 -0.3667,0.12222 0.2445,0.28517 -0.1222,0.48885 -0.5296,-0.16294 0.8147,-3.09614 z m -9.207,0.12222 0.2037,0.0407 -0.2444,0.89625 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01846 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81477 -0.2037,0.0407 -0.2445,-0.77403 0.2445,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12221 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2037,0.69255 -0.2037,-0.0407 0.163,-0.69255 z m -26.5618,0.0407 0.1222,0.44812 -0.3259,0.48886 -0.082,-0.36664 0.2852,-0.57034 z m 13.892,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24444 0.1222,0.12221 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12221 0.774,0.20369 -0.041,0.24443 -0.774,-0.20369 0.041,-0.24443 z m -8.7182,0.0407 0.5704,0.16295 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24443 z m -15.4807,0.0407 0,0.61107 0.4481,0 c 0,0.33786 0.036,0.62662 0.1222,0.81477 -0.2101,0.0426 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.3667,-0.40738 -0.6518,0.20368 c 0,-0.11014 -0.034,-0.2077 -0.082,-0.28516 l -0.2444,-0.89625 1.3443,-0.16295 z m 2.8924,0 0.2852,0.20369 0.2037,0 1.874,-0.20369 0,0.20369 -0.2852,0.65182 c 0.3992,-0.22119 0.701,-0.47342 0.8148,-0.77403 0.071,0.0934 0.1312,0.19368 0.2037,0.28516 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2445,0.28517 0.1629,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2852,0.3259 l 0.041,0.16295 -0.2037,-0.20368 -0.2444,0.1222 0.041,0.69257 -0.2445,0.12221 -0.081,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3666,0.0815 0.041,-0.2037 -0.2851,-0.52959 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.20369 -0.7741,-0.20369 -0.4481,0.44813 -0.163,-0.24444 0,-0.20369 c 0.2416,3e-5 0.4327,0.0163 0.6111,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40738 z m 16.2956,0 0.2444,0.0815 -0.2444,0.89624 -0.2445,-0.0815 0.2445,-0.89625 z m -19.9621,0.40738 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.548,0.0815 0.2444,0.28517 -0.2037,0.36665 -0.163,-0.52961 0,-0.0815 0.1223,-0.0407 z m -10.5107,0.12221 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.8361,0 0.1629,0 0,0.24444 -0.1629,0 0,-0.24444 z m -16.6622,0.0407 0.5296,0.93699 0.041,0.16295 -0.2037,0.28517 0.774,1.83323 -0.5296,0.32591 -0.2852,-1.50732 -0.1222,-0.44812 -0.2444,-0.12222 -0.163,-1.42585 0.2037,-0.0407 z m -0.8963,0.0407 1.1407,4.2368 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16296 -0.6925,-3.46276 -0.041,-0.2037 -0.2852,-0.12221 0.4888,-0.12222 z m 19.8806,0.0815 0.2444,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44812 z m -7.7811,0.0815 0.6518,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.3259,0.16295 l -0.3259,-0.0815 0,-0.28517 z m -9.207,0.12221 0.1222,0.36664 -0.2037,0.0407 -0.1222,-0.36664 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24443 0.2444,0.0407 -0.1629,0.48887 -0.2037,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8137,0.0815 0.3666,0 c -0.096,0.17536 -0.2074,0.27297 -0.3666,0.28518 l 0,-0.28518 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61108 -0.1222,0.40738 -0.4481,-0.12221 0.2444,-0.89625 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.29569 0.1603,0.56116 0.6518,0.69255 l -0.2444,0.89626 c -0.1374,-0.16029 -0.2848,-0.28993 -0.4481,-0.40739 l 0.041,-0.2037 -0.4482,-0.12221 0.2445,-0.89625 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.1629,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5704,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4144,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12221 l -0.1223,-0.0407 0.163,-0.0815 z m -15.603,0.16295 0.082,0.16296 0.3259,2.93317 0.4074,-0.12222 -0.1222,-0.36665 0.611,0.24443 c -0.4434,0.11852 -0.6364,0.41477 -0.5296,0.81477 l 0.2445,0.12222 -0.2445,0.7333 0.041,0.20368 0.4482,-0.1222 -0.1223,-0.44813 0.2037,-0.0407 0.1223,0.44813 -0.3667,1.14067 -0.3666,-0.0815 c -0.056,0.0711 -0.069,0.1343 -0.1223,0.20368 l -0.4481,-1.58879 0.041,-1.09994 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16296 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4482,-0.93698 l -0.4482,-0.77404 -0.041,-0.16296 0.5704,-0.36664 z m 31.1652,0 0.5296,0.12222 -0.2037,0.69255 -0.5296,-0.12222 0.2037,-0.69255 z m -28.9246,0.28517 -0.4074,0.0815 0.041,0.2037 0.4074,-0.12222 -0.041,-0.16295 z m 4.7257,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9067,0 0.5296,0.12222 -0.1222,0.48887 0.4481,0.12221 0.1629,-0.69256 0.4482,0.57035 -0.5704,0.81476 -0.1629,1.87397 -0.4482,0.52961 -0.2444,-0.0407 c 0.5137,-1.92151 0.411,-2.92094 -0.2444,-3.09613 l 0.2037,-0.69256 z m -20.0436,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.7926,0 0.2037,0 c 0.1368,0.16131 0.1865,0.38537 0.1629,0.65182 l -0.1222,0 -0.2444,-0.65182 z m -2.5666,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5476,0.16295 0.2444,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2133,-0.17919 -0.3259,-0.24443 l -0.041,-0.28518 z m -7.1701,0.16296 0.2852,0 c 0,0.0715 0.024,0.14662 0.041,0.20369 l -0.4074,0 0.082,-0.20369 z m 0.7333,0.0815 0.4074,0.12221 -0.3259,0 -0.082,-0.12221 z m -6.7219,0.12221 0.2037,0.0815 -0.082,1.22216 -0.082,0.20368 -0.2037,-0.0815 0.041,-0.48885 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6253,0.0407 0.3259,0.0815 -0.163,0.65181 -0.2037,-0.0815 -0.041,-0.52959 0.082,-0.12222 z m -15.3586,0.0407 0,0.20369 -0.1222,0 0.1222,-0.20369 z m -1.4666,0.16296 0.1222,0 0.1223,0.16294 0.082,0.28517 -0.3259,-0.40738 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.1629,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24443 c -0.1412,0.67657 -0.1364,1.03082 0.1222,1.09994 l -0.2444,0.2037 -0.082,0.16295 -0.041,0.24444 -0.1222,0.0407 -0.163,-0.57035 0.4482,-0.0815 c -0.206,-0.77057 -0.1475,-1.24296 0.1222,-1.34437 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.73329 0.2852,0.0815 -0.3259,0.12221 -0.082,0.24444 0.2444,0.28516 -0.082,0.16295 -0.4074,0.57035 0.041,0.8555 -0.6518,1.30364 0.2444,0.28516 -0.4888,-0.16295 0.3666,-1.34437 -1.1814,0.73329 0.2444,0.28517 -0.8555,0.44812 -0.082,1.01846 -0.4074,0.69256 c 0.08,-0.49941 0.011,-0.79803 -0.2037,-0.8555 l 0.2852,-0.16296 0.041,-0.20369 0.2037,-1.30364 c 0.1374,-0.12989 0.2764,-0.27148 0.4074,-0.40738 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2444,-0.5296 0.051,-0.0555 0.1128,-0.10648 0.1629,-0.16296 l 0.2445,0.0407 0.082,-0.36665 0.3666,-0.16295 -0.1629,-0.16296 c 0.072,-0.0919 0.1339,-0.19121 0.2036,-0.28516 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.1351,-0.2161 0.2037,-0.3259 l 0.2852,0.0815 0.2852,-1.0592 c 0.1084,-0.19992 0.2226,-0.4049 0.3259,-0.61109 l -0.1223,-0.16295 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.2037 l 0.2445,-0.24443 z m -22.1619,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.4319,0.20369 0.4889,0.12222 -0.4074,0.93698 c -0.091,-0.13611 -0.2088,-0.26481 -0.3667,-0.36665 l 0.2852,-0.69255 z m -10.8773,0.16296 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9778,0.0407 0.4073,0.12221 -0.041,0.16296 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3923,0.32591 0.4074,0.0815 -0.1629,0.65181 -0.2852,-0.57035 0.041,-0.16294 z m 23.9138,0.0407 c 0.4519,0.27923 0.6049,0.76825 0.4074,1.50732 l -0.5297,1.0592 c -0.1997,1.12233 -0.2914,1.89099 -0.2851,2.40357 l -0.163,-0.0407 0.041,-0.77403 0.1222,-0.48886 -0.3666,-0.77403 0.8962,-2.1184 -0.1222,-0.77403 z m -21.8361,0.1222 0.2445,0 0,0.2037 -0.2445,0 0,-0.2037 z m 12.0995,0 0.041,0 -0.163,0.57035 c -0.02,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77404 z m -19.9621,0.0407 0.2037,0.0407 0.1222,0.24443 -0.3666,-0.12221 0.041,-0.16296 z m -4.1146,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6258,0 c 0.1217,0.0561 0.2252,0.11426 0.4074,0.16295 l -0.082,0.36665 -0.163,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.1245,0.0815 0.2444,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1223,-0.48887 z m -25.4618,0.0815 c 0.1305,0.006 0.2859,0.0201 0.4481,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69255 l -0.4481,-0.77403 c 0.047,-0.1747 0.2132,-0.25603 0.4889,-0.28517 l 0.3666,0 -0.041,-0.0407 z m 14.0141,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1477,0.0407 0.2851,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5703,0 0,0.0815 -0.3666,0.57033 0.1222,0.16296 -0.6111,-0.16296 c 0.107,-0.16057 0.1904,-0.41428 0.2852,-0.65181 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44812 0,0.0407 -0.082,0.16295 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2427,-0.4948 -0.2037,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.016,-0.15375 0.041,-0.24442 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.326,0 -0.041,0.2037 -0.2445,0 0,0.48885 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.52961 0.2445,-0.0407 0,-0.48885 -0.2852,0.0407 -0.041,-0.24443 z m -7.6996,0.0815 0,0.77403 c -0.2652,-0.0831 -0.4074,-0.28893 -0.4074,-0.65181 0.1827,2e-5 0.3,-0.0425 0.4074,-0.12222 z m 5.5405,0 0.4074,0.12222 -0.082,0.36665 -0.4482,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65181 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24443 0,0.28518 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.20369 0.2444,-0.36665 0.163,-0.28516 -0.4482,-0.12222 0.5704,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1762,0.0407 0.2852,0.0407 l 0,0.65181 -0.2444,-0.0815 -0.041,0.12222 -0.1223,0 0,0.44812 0,0.0815 0.4482,0.12222 0.041,-0.2037 0.1629,0 -0.5296,0.77403 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12221 0.082,0.24444 -0.1222,0.20368 c -0.155,0.0762 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c 0,-0.0298 0.01,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43312 -0.1524,-0.79238 -0.2444,-1.0592 l 0.4481,-1.62953 z m -7.2922,0.44811 c 0.2126,0.11968 0.3123,0.32246 0.2851,0.61109 l -0.2037,-0.12222 -0.082,-0.48887 z m 18.3324,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.20369 0.082,0.36664 c -0.1678,-0.14916 -0.2705,-0.48917 -0.2851,-1.01846 z m 25.3396,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.9355,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.8962,0.0407 0.4481,0.93698 -0.2037,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.5177,0 0.4074,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.7333,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44813 z m 7.1293,0.0815 0.082,0.12221 0.2852,0.0815 0.082,-0.0407 -0.2037,1.34437 -0.6926,2.52579 -0.2444,0.48886 -0.082,-0.36665 0.2037,-0.28516 -0.2037,-0.2037 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.12222 0.2037,0.0407 0.041,-1.0592 0.2852,-0.97772 0.4074,0.0815 0.1222,-0.52961 0.041,0 0,-0.0815 c -0.1251,-0.22968 -0.1809,-0.50832 -0.2037,-0.81476 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24444 0,0.0407 -0.1629,0.52959 -0.2037,-0.0815 0.2037,-0.81476 z m -20.2472,0.20369 0.4074,0.12222 -0.1222,0.36665 -0.2852,-0.48887 z m -10.6329,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36664 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48886 z m 27.4173,0 0.3666,0.0815 c -0.05,0.18574 -0.025,0.33526 0,0.44811 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.3353 -0.041,-0.44812 z m -3.9517,0.0815 0.041,0 c -0.023,0.12022 -0.051,0.23872 -0.082,0.36664 l -0.041,0 0.082,-0.36664 z m -17.314,0.0407 0.2037,0.0407 -0.2444,0.81476 -0.2037,-0.0407 0.2444,-0.81476 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.16799 0.4074,0.24442 l -0.163,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12222 l 0.1222,-0.36663 z m -21.9175,0.16294 0.082,0 c 0.01,0.0632 0,0.14341 0,0.20369 l -0.082,-0.20369 z m 32.4688,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.2429,0.36665 0.041,0.12222 -0.1629,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7627,0.16296 0.2037,0.0815 -0.7333,2.81096 -0.2037,-0.0815 0.7333,-2.81095 z m 9.4514,0 -0.2037,0.81476 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2444,0.0407 l 0.2444,-0.89625 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17118 -0.5033,0.28723 -1.0185,0.40738 l 0.082,-0.24444 0.937,-0.3259 z m 8.5959,0.12222 c 0.1067,0.18436 0.2375,0.33744 0.3667,0.48885 l 0,0.12222 0.1629,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.20369 l -0.163,0.65182 -0.2036,-0.0407 c 0.071,-0.26673 -0.1677,-0.49255 -0.6111,-0.61108 l 0.2444,-0.8555 z m 1.0185,0.0407 0,0.1222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4481,0.1222 -0.041,0.2037 -0.4888,-0.12222 0.082,-0.20368 z m -24.1989,0.0407 0.1222,0.44812 0.2445,0.89625 -0.4482,0.7333 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36664 -0.2037,-0.0407 -0.2037,-0.24442 -0.2444,-0.0815 -0.082,0.44812 -0.2444,-0.0407 0.6518,-2.40357 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.1293,0 0.2037,0.0407 -0.082,0.36665 -0.2036,-0.0407 0.082,-0.36665 z m 14.5438,0.0407 -0.082,0.24443 0.6926,0.16296 0.082,-0.20369 -0.6926,-0.2037 z m -28.6801,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.126,0.1796 -0.3024,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.1447,-0.11438 0.3061,-0.20677 0.4888,-0.24443 z m 13.3623,0.20369 c 0.1273,0.11381 0.2392,0.22321 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24444 z m -12.9549,0.2037 0.041,0 0.3259,0.12221 c 0.028,0.10642 0.051,0.19752 0.082,0.28518 l -0.2037,0.77402 -0.2037,-0.0407 c 0.1426,-0.53338 0.011,-0.85797 -0.2852,-0.93699 l -0.2037,0.0815 0.041,-0.16296 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5666,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.4438,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16294 0,-0.48885 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4073,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0185,0 0.4074,0 0,0.20369 c -0.1952,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28517 z m -19.4325,0.0815 0.163,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8105,0.12222 0,0.5296 -0.041,0.0407 -0.041,0.16296 -0.2444,0 0.2037,-0.69255 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.1222 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28516 z m 3.0554,0.16296 -0.082,0.36664 -0.3666,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.0441,0 c 0.6944,0.36415 0.9331,1.01469 0.6925,1.9147 l -0.4888,-0.12221 -0.163,0.52959 0.3666,0.57035 -0.8555,1.26289 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28516 0.1629,1.30363 -0.5703,0.24443 0.2037,0.0407 -0.3667,0.57034 c -0.1386,0.96297 0.1611,1.50358 0.937,1.71102 l -0.2444,0.16296 -0.082,0.24442 0.082,0.61108 -1.3444,-2.03692 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16295 c -0.2956,-0.079 -0.5344,-0.51721 -0.6518,-1.26289 l 0.1629,-0.61108 0.2037,0.0407 -0.082,0.44813 0.6926,0.20369 0.082,-0.44813 -0.4074,-0.12221 0.2444,-0.81477 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.12221 0.082,-0.36665 0.4482,0.12222 0.082,-0.36665 -0.4074,-0.12222 0.1629,-0.61107 c 0.3696,0.0988 0.5984,-0.13822 0.8148,-0.65182 0.1069,-0.39999 0,-0.61476 -0.4481,-0.73329 l 0.1629,-0.61107 z m -24.5248,0.0407 0.4888,0.12221 -0.4074,0.57035 -0.2444,-0.0815 0.163,-0.61108 z m 23.3026,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40739 -0.3259,-0.5296 0,-0.0407 z m -16.7029,0.0815 0.6518,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.2444,-0.85552 z m 5.7034,0.2037 0.082,0 c -0.036,0.16124 -0.082,0.31655 -0.1222,0.44812 l -0.082,0 0.1222,-0.44812 z m 4.8887,0.0407 0,0.16295 -0.082,0.24443 -0.2037,0 0.041,-0.20369 0.2444,-0.20369 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12222 z m -8.6367,0.0815 0.6519,0.36665 -0.2852,1.01846 -0.2037,-0.0815 -0.2444,-0.93699 0.082,-0.36665 z m 20.8991,0 0.4888,0.12222 0.3667,1.14068 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44812 -0.4481,-0.12222 -0.041,0.2037 0.2444,0.73328 -0.2444,0.12222 c -0.1069,0.40004 0.086,0.69625 0.5296,0.81477 l -0.5704,0.24443 0.082,-0.36665 -0.4074,-0.1222 -0.3259,2.93316 -0.082,0.16296 -0.5703,-0.32591 0.082,-0.2037 0.4074,-0.77402 c 0.069,-0.55308 -0.1194,-0.87895 -0.4889,-0.97773 l 0.1222,-0.36665 0.4889,0.12222 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09994 0.4481,-1.58881 z m -18.9843,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4074,-0.12222 0.041,-0.20369 z m 11.2032,0 0.1629,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28517 -0.2851,-0.5296 0,-0.0407 z m -19.9621,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.20369 z m 1.1,0.0815 0.1629,0.0407 0,0.16295 -0.1629,0.65181 -0.2037,-0.0815 0.2037,-0.77403 z m 31.0837,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2037,0.0407 0,0.44812 -1.7111,6.35521 -0.4888,-0.12222 0.2851,-0.12221 0.041,-0.2037 0.6926,-3.46277 0.2852,-0.12222 0.041,-1.0592 0.4888,-1.95544 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65181 -0.2037,-0.0815 0.1629,-0.57033 0.041,-0.0407 z m -15.6437,0.12221 0.041,0.44812 -0.1222,0.0407 -0.082,-0.3259 0.1629,-0.16296 z m 12.792,0 0.2037,0.0407 -0.1223,0.36664 -0.2037,-0.0407 0.1223,-0.36664 z m -9.5737,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48886 -0.4481,-0.16296 0.082,-0.40738 z m -20.9805,0.3259 0.4889,0.12222 -0.082,0.20369 -0.163,1.38512 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81477 0.041,-0.32591 z m 3.2999,0.0407 0.4481,0.0815 c -0.1069,0.39998 -0.01,0.69501 0.2852,0.77404 l -0.041,0.20368 c -0.4434,-0.11853 -0.7027,-0.10371 -0.7741,0.16296 l -0.2037,-0.0407 -0.082,-0.61107 0.3667,-0.57035 z m 16.8251,0.0407 0.2852,0 -0.082,0.24443 -0.2037,0 0,-0.24443 z m -13.7697,0.16296 0.2037,0.0407 -0.041,1.0592 -0.4074,-0.12222 0.2444,-0.97772 z m 20.125,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.0961,0 0.2037,0.0407 -0.4481,0.93698 -0.2037,-0.0407 0.2037,-0.81476 0.2444,-0.12222 z m -19.5139,0.12222 0.937,0.0407 -0.1222,0.57033 -0.9777,0 0.1629,-0.61107 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.326,0 0,0.2037 -0.3667,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.5296 -0.2851,0.12221 -0.2037,-0.0407 c 0.062,-0.23333 0.1326,-0.43444 0.1629,-0.61107 z m -4.3183,0.16296 0.2037,0.0407 -0.1222,0.36664 -0.2037,-0.0407 0.1222,-0.36664 z m 32.3059,0 0.2037,0.0407 c -0.1069,0.4 -0.01,0.69502 0.2852,0.77402 l -1.4259,3.50352 0.2037,0.24442 -0.041,0.20369 -0.5296,0.89625 -0.2037,-0.0407 0.163,-1.42585 0.2444,-0.12222 0.1222,-0.44812 0.6926,-3.42204 0.2852,-0.20368 z m -35.3613,0.12221 0.1222,0.85551 0.2037,0.12222 c -0.012,0.0965 -0.014,0.18347 -0.041,0.28516 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3666,0.16296 c -0.01,-0.0436 -0.031,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.1629,-1.34437 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1223,-0.44813 z m -4.8072,0.24444 0.2037,0.0815 -0.1629,0.52961 -0.2037,-0.0407 0.1629,-0.57034 z m 28.9654,0 0.2037,0.0407 -0.2852,1.01847 -0.2037,-0.0815 0.2852,-0.97772 z m -20.4917,0.12221 0.3667,0.52961 -0.163,0.61107 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.4 -0.412,0.56665 -0.8555,0.44812 0.107,-0.40002 -0.01,-0.6555 -0.4481,-0.77403 l 0.041,-0.20369 0.4074,0.12221 0.1629,0.24444 c 0.08,-0.29997 0.4464,-0.45431 1.1,-0.52961 z m 10.8365,0.2037 0.1223,0 0,0.12221 -0.1223,-0.12221 z m 13.118,0 0.8962,0.24443 -0.4481,1.75175 c -0.2956,-0.079 -0.3768,-0.54438 -0.163,-1.34437 l -0.4481,-0.0815 0.163,-0.57033 z m -6.1516,0.0407 0.2852,0.52959 -0.041,0.2037 -0.2852,-0.57034 0.041,-0.16295 z m -28.558,0.0815 -0.2036,1.62954 -0.8148,0.24443 0.2444,-0.89624 c 0.4491,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36664 -0.2851,-0.0815 0.1222,-0.36665 z m 21.8768,0.0407 0.1629,0.0407 0,0.24443 -0.4074,0 0.2445,-0.28517 z m -9.5329,0.0407 0.2037,0 0.1629,0.24443 -0.2851,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9664,0.24443 0.4889,0.12221 -0.082,0.24443 -0.5296,0.93699 -0.163,-0.24443 -0.2036,-0.0815 -0.5297,0.28516 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.611,0.44812 l -0.163,-0.24442 -0.2037,-0.0407 -0.2444,0.12221 0.2037,-1.62954 0.6111,0.16295 0.1222,-0.40738 c 0.739,0.19754 1.156,0.0741 1.2629,-0.32591 z m 2.8518,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1222,-0.40739 z m 6.6404,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2445,-0.0407 0.1223,-0.44813 z m -9.2885,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12221 0,0.0407 -0.2037,-0.0407 0.041,-0.12221 z m 15.7252,0.0815 c 0,0.20654 -0.1299,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16295 0,-0.0407 0.8555,-0.2037 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.2037 l -0.2444,0 0,-0.2037 z m 1.5481,0 0.4074,0 0.082,0.12222 -0.2037,0.81477 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.20369 -0.2037,-0.20369 -0.4074,0 -0.1629,-0.24443 0.1222,-0.44812 c 0.1892,0.0505 0.3495,-0.044 0.4889,-0.24444 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.098,0.33787 -0.3274,0.59856 -0.6518,0.73329 l -0.1222,-0.0407 0.4481,-0.77403 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.12222 c 0.2001,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1222,0.44812 -0.4074,-0.12222 0.1222,-0.44812 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57033 0,-0.57033 z m -11.9773,0.16295 -0.082,0.36664 0.4074,0.12222 0.1223,-0.36665 -0.4482,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4482,0.12221 0.1629,-0.61108 0.3259,0.36665 c -0.3477,0.17232 -0.5886,0.44677 -0.7333,0.81477 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44386 -0.02,-0.72709 -0.4074,-0.81477 l -0.2037,-0.0407 c 0.071,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24443 -0.4074,-0.12221 0.082,-0.24443 z m -14.4215,0.20369 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4481,0.0815 -0.082,0.20369 -0.4074,-0.12221 0.041,-0.16296 z m 20.1657,0 0.163,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24443 0.2037,0.0407 c 0.1185,0.0317 0.2232,0.0419 0.3259,0.0407 -0.1474,0.0926 -0.2951,0.12532 -0.4889,0.0815 l -0.2037,0.65181 c 0.3876,0.0877 0.6345,0.21897 0.774,0.44813 l -0.4888,0.24443 0.4074,0.0815 0.082,-0.28516 c 0.1221,0.22481 0.1522,0.50257 0.041,0.8555 l 0.6518,0.16296 -0.3666,1.09994 -0.6111,-0.12222 0,2.1184 -1.3444,1.14068 0.2037,0.32591 -1.7518,2.40356 0.4481,-0.1222 0.2445,0.0815 -0.1222,0.40738 -0.2852,-0.0407 -0.2852,-0.32592 -0.2852,-0.0407 -0.1222,0.48886 -0.2852,-0.0815 2.4851,-7.78105 0.2445,-0.0407 -0.2852,0.97772 0.6518,0.12222 0.4074,-1.30363 -0.4481,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2852,0 0.041,-0.12222 0.2852,-0.0407 0.082,-0.20369 -0.2445,-0.0815 0.163,-0.57034 -0.2037,-0.28517 0.082,-0.20369 0.2852,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12221 -0.163,-0.16295 z m 7.8626,0 0.041,0.16295 -0.2852,-0.0815 0.2444,-0.0815 z m -20.0435,0.12222 0.4481,0.77402 -0.3259,0.16296 -0.163,-0.0407 0.041,-0.89624 z m -0.6926,0.0407 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0.1222,-0.44813 z m 19.8806,0.16296 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12222 z m -1.3852,0.12222 0.082,0.12221 0,0.28516 -0.4481,-0.12221 0.163,0 0.2037,-0.28516 z m 3.8702,0.12221 0.2445,0.0815 0,0.28517 0,0.65182 0,0.12222 -0.3259,0.12221 -0.4074,-0.0815 0.2851,-1.14067 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.3803,0.12221 0.3667,0.48887 -0.4889,-0.12222 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12221 -0.041,0.2037 -0.7741,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16296 z m 6.4367,0 -0.041,0.2037 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12222 z m -27.1728,0.24444 0,0.20369 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.3259 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.1369,0 0.3666,0.0815 -0.2444,0.69255 -0.3259,-0.0815 0.2037,-0.69255 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6068,0.0815 0.2037,0.0407 -0.3666,1.34438 c -0.019,-0.29822 -0.091,-0.4868 -0.2445,-0.57035 l 0.041,-0.3259 0.3667,-0.48886 z m 10.307,0.0815 0.2444,0.0815 -0.1222,0.44812 -0.2852,-0.0407 0.163,-0.48886 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24443 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44812 -0.2037,0 0.2444,-0.85551 0.163,-0.28517 -0.041,-0.0407 0.081,-0.24444 z m 1.3851,0.0407 0.2444,0.28517 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25346 -0.4073,-0.36664 l 0.1629,-0.2037 z m -7.6996,0.2037 0.2851,0.0407 -0.1629,0.48886 -0.2444,-0.0815 0.1222,-0.44811 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48886 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.54,0.0815 -0.1222,0.36664 -0.041,1.42585 -0.65179,0.81477 0.36659,0.0815 -0.44809,0.12221 -0.082,0.24444 0.2852,0.3259 -0.041,0.20369 -0.57039,0.61108 0.082,0.97773 -0.8555,1.42585 0.2852,0.28516 -0.6111,-0.12222 0.4481,-1.54805 -1.5073,0.8555 0.2852,0.28517 -1.0185,0.44812 c -0.1112,-0.21925 -0.218,-0.41747 -0.3259,-0.65181 -0.01,-0.0107 0,-0.03 0,-0.0407 l 0.1222,-0.77403 0.2852,0.0815 0.6925,0.44812 c -0.2005,-0.6795 -0.5592,-1.09061 -1.1407,-1.22216 l 0.2037,-0.69255 c 0.015,-0.0461 0.027,-0.0769 0.041,-0.12222 l 0.1223,-0.0407 0.041,-0.2037 -0.082,-0.0407 c 0.068,-0.22572 0.1079,-0.44974 0.1629,-0.65181 l 0.163,-0.12222 0.041,-0.20369 -0.041,-0.12222 c 0.059,-0.23982 0.045,-0.4104 0.082,-0.61107 0.2165,-0.0412 0.45,-0.15496 0.6925,-0.36665 -0.087,0.52224 -0.036,0.83278 0.2445,0.89625 l -0.3259,0.20369 -0.041,0.0815 c -0.1806,0.11242 -0.3752,0.24349 -0.5297,0.36665 l -0.041,0.24443 0.4074,0.12221 -0.3259,1.67028 0.57039,0.12222 0.12221,-0.40739 0.44808,-0.2037 -0.2852,-0.28516 -0.28511,-0.0815 0.082,-0.20369 1.5073,0.12222 0.2037,-0.69256 -0.52959,-0.12221 0.1222,-0.40739 0.57039,0.12222 0.3666,-1.14068 0.2444,-0.16296 -0.2037,-0.0407 0.4889,-1.54806 0.3259,-0.12221 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.163,0.24443 0.2037,0.0815 0.3259,-0.12222 -0.041,0.16296 c -0.3962,0.0368 -0.7257,0.11789 -0.9778,0.20369 l -0.041,0 -0.16291,-0.0407 0.28521,-0.44813 0.24441,-0.0815 z m -12.01791,0.0815 0.611,0.12221 -0.12221,0.40739 -0.48879,-0.5296 z m 3.9516,0.12221 0.3259,0.0815 -0.041,0.16296 -0.2851,0.0815 0,-0.0407 0,-0.28518 z m 4.80719,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61108 -0.36659,0.12221 0.041,-0.40738 0.12221,-0.40739 z m 29.5765,0.0407 0.2036,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1223,-0.36665 z m -7.4553,0.32591 0.40741,0.12222 -0.082,0.44811 -0.40741,-0.24442 0.082,-0.32591 z m -26.35799,0.0407 0.4074,0.12222 -0.082,0.20369 -0.40741,-0.12222 0.082,-0.20369 z m 1.6703,0 0.2037,0.24443 -0.041,0.20369 -0.3259,-0.3259 0.1629,-0.12222 z m 18.16949,0.0407 c 0.1619,0.0875 0.2758,0.18386 0.4889,0.28517 -0.019,0.0576 -0.041,0.1396 -0.041,0.20368 l -0.52959,0 c 0.031,-0.17321 0.06,-0.33606 0.082,-0.48885 z m -3.2591,0.20369 0.16301,0 0,0.0407 -0.16301,-0.0407 z m -12.1402,0.20369 -0.082,0.57034 -0.041,0.24443 -0.2851,-0.0815 0.041,-0.61109 0.3666,-0.12221 z m -3.2998,0.0815 0.2444,0.0407 -0.1222,0.48887 -0.2852,-0.0407 0.163,-0.48887 z m 10.7143,0.0407 0.73329,0.16296 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.12221,0.28516 -0.082,0 -0.2037,-0.28516 c 0.017,-0.3233 -0.065,-0.59919 -0.163,-0.81478 z m 20.00279,0 c -0.17819,0.66667 0.096,1.38754 0.6925,2.1184 l 0.24451,-0.12221 0.1629,0.24443 -0.041,0.16296 c -0.2463,-0.0659 -0.4957,0.0124 -0.6925,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3667,0.12222 c 0.1402,-0.44386 0.062,-0.72707 -0.32591,-0.81477 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.20369 c 0.2165,-0.51357 0.4453,-0.70986 0.8148,-0.61108 l 0.1222,-0.40738 -0.611,-0.16295 0.8555,-0.65183 z m 2.4036,0.0407 0.32591,0.48887 -0.1222,0.44812 -0.28521,-0.57034 0.082,-0.36665 z m -17.9659,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2444,-0.32591 0.082,-0.16296 z m -14.2586,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.21799,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.76599,0 0.7333,0 -0.082,0.20369 -0.69259,0.0815 c 0.022,-0.10672 0.02,-0.18393 0.041,-0.28517 z m -3.99239,0.0815 0.041,0 0,0.12221 -0.041,0 0,-0.12221 z m 19.67679,0 0.20371,0.0407 -0.20371,0.81476 -0.2037,-0.0407 0.2037,-0.81476 z m -28.4357,0.16295 0.5704,0.12222 -0.2445,0.69255 -0.3666,-0.61107 0.041,-0.2037 z m 2.15921,0.0407 -0.082,1.14068 0.6111,0.16295 0.082,-1.18141 -0.6111,-0.12222 z m 19.5546,0.12222 0.16301,0.0407 -0.12221,0.44811 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40738 z m -13.4438,0.0407 0.12221,0 0.2852,0.73329 -0.1222,0.16295 -0.163,0 -0.20371,-0.61108 c 0,-0.0113 -0.01,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.082,0.48885 -0.3259,0 0,-0.48885 z m 4.03319,0 0.24441,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12221 z m -25.70619,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.17229,0.0815 -0.041,0.16295 0.041,0.0407 0,-0.20369 z m -21.55089,0.0407 0.082,0 0,0.3259 -0.20371,-0.0407 0.12221,-0.28516 z m -10.918,0.24442 c 0.27319,-0.0456 0.6794,-0.0134 1.1814,0.0407 l -0.1222,0.40739 c -0.3876,-0.0877 -0.75,0.1822 -0.937,0.77403 l -0.5704,-0.89386 c 0.053,-0.16645 0.1749,-0.28029 0.44821,-0.32592 z m 14.0956,0.0407 0.3259,0 -0.1222,0.2037 -0.2037,0 0,-0.2037 z m 0.77409,0 0.082,0 0,0.2037 -0.041,0 -0.041,-0.2037 z m 15.15481,0.0407 0.48889,0.12222 -0.2852,1.01846 -0.3666,-0.48886 0.16291,-0.65182 z m -17.9658,0.0407 0.24441,0.0407 -0.28511,0.0815 0.041,-0.12222 z m 10.8365,0 0.2037,0.0407 -0.041,0.12222 -0.24441,0.12221 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.5737,0.12222 -0.1222,0.0815 -0.082,0.16295 0.20361,0.24443 0,-0.48886 z m -13.8105,0.0815 0.40741,0.0815 -0.32591,0.44813 -0.3259,-0.0815 -0.041,-0.16295 0.28511,-0.28517 z m -10.4292,0.0407 0.1223,0.0815 0,0.24443 -0.16301,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28518 z m 13.8513,0.0407 0.611,0.5296 0.041,0.0407 -0.1222,0.61108 c -0.1738,-0.13018 -0.3351,-0.28386 -0.48879,-0.36665 -0.043,-0.24559 -0.071,-0.51515 -0.041,-0.81477 z m -8.5552,0.0407 0.36659,0 0,0.24443 -0.36659,0 0,-0.24443 z m -16.4585,0.0815 0.16291,0.0407 -0.12221,0.40738 -0.2851,-0.0815 0.082,-0.28517 0.1629,-0.0815 z m 4.1961,0.20369 0.5296,0.12222 0,1.18141 c -0.3391,-0.0767 -0.521,-0.50904 -0.5296,-1.30363 z m 1.79251,0.16296 -0.24441,0.69255 0.6518,0.16296 0.2037,-0.69257 -0.61109,-0.16294 z m 3.01469,0.24442 c 0.53689,0.1214 0.591,1.23745 0.1629,3.29982 -0.149,0.24871 -0.3558,0.70204 -0.57029,1.14068 l -0.5704,-0.12222 -0.52959,-1.34436 c 0.3877,0.0877 0.5932,-0.0857 0.73329,-0.52961 l 0.082,-1.18141 0.20371,0.24443 0.65189,0.16296 -0.163,-1.67029 z m 9.6958,0.0407 0.1222,0.12222 -0.24441,0.28517 -0.1222,0.44812 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44813 0.082,-0.12221 0.2445,0.24443 0.3666,-0.44813 z m 5.3776,0 c 0,0.30601 -0.1563,0.44815 -0.5704,0.44813 l 0,0.20369 0.40741,0 -0.36659,0.65182 -0.40741,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.40741,-0.77404 c 0.1595,-0.009 0.3126,-0.0407 0.4888,-0.0407 z m -13.4439,0.0407 0.2852,0.0407 -0.44809,1.26289 -0.082,0.32591 c 0.198,0.0814 0.36659,0.1667 0.52959,0.24444 l -0.2444,0.44812 -0.1223,-0.2037 -0.3259,0.16296 -0.24441,-0.0407 c 0.067,-0.14188 0.1305,-0.2725 0.2037,-0.48886 l -0.2037,0 0.163,-0.48886 0.041,0.0407 0.2851,0 0.16301,-1.30363 z m -8.1885,0.0815 0.5704,0.12221 -0.163,0.40739 -0.40741,-0.5296 z m 13.1587,0.0815 0.082,0.0815 -0.163,-0.0407 0.082,-0.0407 z m 4.359,0 0.32591,0 c -0.046,0.25427 -0.075,0.44864 -0.082,0.65181 l -0.611,0 0.082,-0.57034 0.2851,-0.0815 z m -3.13689,0.0815 0.082,0.48887 c -0.2042,-0.10677 -0.34879,-0.235 -0.44809,-0.40739 l 0.3667,-0.0815 z m -1.75171,0.0815 -0.1222,0.48886 -0.163,0 0,-0.40738 0.2852,-0.0815 z m 18.00661,0.0407 0.2036,0.0407 -0.1629,0.65181 -0.2037,-0.0815 0.163,-0.61107 z m 0.6518,0 0.48879,0.12222 -0.40729,1.46658 -0.16301,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2444,0.0407 l 0,-0.36664 0.32591,-1.22216 z m -21.22501,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.5036,0.12222 c 0.081,0.0361 0.13431,0.0796 0.20371,0.12221 l -0.24451,0.0407 0.041,-0.16295 z m -12.181,0.0815 0.2852,0.0407 -0.2852,0.89625 -0.28511,-0.0407 0.28511,-0.89625 z m 1.7926,0.16296 -0.1223,0.44812 0.6111,0.12221 -0.4888,-0.57033 z m 19.5954,0 c 0.045,0.041 0.155,0.11944 0.20361,0.16294 l -0.082,0.52961 -0.8962,2.85169 -0.5704,0.81478 0.36671,1.0592 -0.6518,-0.16296 -0.36671,2.07766 -0.52959,-0.12221 0,-0.97772 0.32591,-0.12222 0.082,-0.2037 0.163,-1.46659 0.48889,-0.57033 -0.1223,-0.12222 c 0.028,-0.0546 0.041,-0.12719 0.041,-0.20369 l 0.2037,-0.12222 -0.40741,-0.57033 0.36671,-0.12222 0.2444,0.0407 0.082,-1.14068 0.3667,-1.14067 0.5296,0.12221 0.1629,-0.61107 z m 1.2629,0.0815 0.1222,0.16295 -0.163,-0.0407 0.041,-0.12221 z m 1.8332,0.12221 0.082,1.62955 0.48889,0.12221 0.20371,-0.20369 -0.2445,0.81477 c -0.1147,-0.18977 -0.1569,-0.28133 -0.28511,-0.48886 l -0.2037,0.0815 c -0.022,-0.0177 -0.056,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4481,-1.2629 z m 0.5296,0 0.3667,0.0815 0,0.0815 -0.2445,0.36665 -0.24441,-0.0815 0.12221,-0.44813 z m 3.78869,0.16296 0.2037,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.1222,-0.40739 z m 1.7925,0.24443 0.20371,0.0815 0,1.0592 0,0.0407 c -0.05,0.0364 -0.11671,0.0642 -0.16291,0.12222 l -0.3667,-0.0815 0.3259,-1.22216 z m -32.1022,0.0407 0.2444,0.0815 -0.9777,3.09612 -0.2444,-0.0407 0.9777,-3.13686 z m 29.5764,0.16296 0.082,0.0407 -0.1629,0.61108 -0.2037,-0.0407 0.1222,-0.44812 0.1629,-0.16295 z m -14.0141,0.16295 0.20361,0 0,0.48886 -0.20361,0 0,-0.48886 z m 11.692,0.0815 0.20371,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12221 z m -24.28039,0.0815 -0.16291,0.44812 0.6111,0.16296 0.1629,-0.48887 -0.61109,-0.12221 z m 27.1321,0.0407 0.2037,0.0407 0.041,0.69257 -0.40741,-0.12222 0.163,-0.61108 z m -29.0468,0.0407 0.28521,0.0407 -0.20371,0.65183 -0.2444,-0.0815 0.1629,-0.61109 z m 31.5726,0.2037 0.40741,0.12222 -0.082,1.0592 -0.082,0.32591 -0.24441,-0.0815 0.082,-1.14068 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5546,0.24443 0.041,0 0,0.44813 -0.2037,0 0.1629,-0.44813 z m -5.5405,0.0407 0.6926,0.16296 -0.5704,1.18141 -0.3259,0.44812 -0.082,0 0.2037,-0.61107 0,-1.0592 c 0.035,-0.0284 0.048,-0.0738 0.081,-0.12222 z m 5.9479,0.2037 0.40741,0 0,0.48885 0.2444,0 0.041,-0.0407 -0.041,0.28517 -0.3259,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.36671,-0.0815 -0.1629,0.0407 c 0.1408,-0.12156 0.2037,-0.25687 0.2037,-0.44811 z m 13.8919,0 0.2445,0.0407 0.1222,0.73329 -0.082,0.24444 -0.4074,-0.61109 0.1222,-0.40737 z m -11.81421,0.20369 0.082,0 -0.2037,0.89624 -0.082,0.0407 -0.2037,-0.20369 c -0.1036,0 -0.1645,0.009 -0.2445,0.0407 l 0.2037,-0.65182 0.4481,-0.12221 z m 0.774,0 0.4889,0 0.1629,0.0407 -0.2444,0.77403 -0.5296,0.32591 -0.2445,0 0.082,-0.2037 0.163,0 0,-0.20369 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36664 z m 2.85171,0 0.6518,0 -0.082,0.20368 -0.611,-0.1222 0.041,-0.0815 z m -22.5286,0.16295 0.6518,0.16295 -0.4888,0.61108 -0.3667,-0.0815 0.2037,-0.69256 z m 14.9512,0.12221 0.2037,0 0.3666,0.0815 -0.40741,0.20369 -0.041,0.2037 0.041,0.12221 -0.1629,0.0407 -0.2037,0 0.2037,-0.65182 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.20369 -0.2037,-0.0407 0.041,-0.20369 z m -18.82141,0.16296 0.24441,0.0407 -0.041,0.2037 -0.2851,0.0407 0.082,-0.28517 z m 6.19231,0 0.2852,0.0407 -0.041,0.0815 -0.2444,-0.0815 0,-0.0407 z m 6.1516,0.20369 0.6518,0.12222 0.2852,0.8555 c 0.027,0.314 0.036,0.61617 -0.041,0.93699 l -0.20371,-0.0815 0.16291,-0.44812 -0.5703,-0.12221 -0.041,0.20369 0.32591,0.81477 -0.32591,0.12221 c -0.1051,0.33293 -0.023,0.6072 0.28521,0.77403 -0.041,0.10991 -0.074,0.22 -0.12221,0.32591 l -0.2445,0.0815 0.12221,-0.40739 -0.5703,-0.12221 -0.24441,1.75176 c -0.1708,0.17431 -0.368,0.3712 -0.57039,0.52959 l 0.2037,-0.28517 c 0.09,-0.61375 -0.12649,-0.99033 -0.61109,-1.09994 l 0.1222,-0.40738 0.61109,0.12222 0.12221,-0.28517 -0.32591,-0.28518 0.44821,-0.12221 0,-1.18142 0.52959,-1.79249 z m -27.3765,0.0407 0.81471,0.40739 -0.32591,1.09994 -0.28511,-0.0815 -0.3259,-1.01846 0.1222,-0.40739 z m 2.485,0.0407 0.5704,0.12221 -0.081,0.2037 -0.5296,-0.12222 0.041,-0.20369 z m 32.02081,0.12221 0.2852,0.0407 -0.2037,0.69255 -0.28521,-0.0407 0.20371,-0.69256 z m -23.3026,0.0407 0.2037,0 0,0.2037 -0.2445,-0.0407 0.041,-0.16296 z m 10.1439,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8143,0.28517 -0.36659,1.34437 -0.041,0 0.4073,-1.34437 z m -11.48839,0.0815 0.2445,0.0815 -0.082,0.2037 -0.2852,0.12221 0.1222,-0.40739 z m 10.307,0 0.041,0 c 0.027,0.19876 0.01,0.41807 -0.041,0.65183 l -0.163,-0.0407 0.163,-0.61109 z m 1.5888,0 0.1222,0.0407 0,0.2037 -0.1629,-0.0407 0.041,-0.2037 z m -16.33631,0.12222 0.163,0 -0.4482,0.44813 -0.2037,0 0.48889,-0.44813 z m 3.1369,0 0.2852,0 -0.082,0.44813 -0.3259,0 0.1222,-0.44813 z m -22.4471,0.20369 0.082,0.12222 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5296,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12221 0.081,-0.28518 z m -18.90279,0.0815 0.2037,0.0407 0,0.24443 c -0.066,-0.0966 -0.13829,-0.18401 -0.2037,-0.28517 z m 10.71429,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.1629,-0.20368 0.3259,-0.28517 z m 19.7176,0 0.2037,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.1553,0.0407 0.611,0.12221 -0.082,0.24442 -0.611,-0.16294 0.082,-0.20369 z m 7.94399,0 0.163,0.0407 -0.2852,0.97773 -0.1222,-0.0407 0.2444,-0.97772 z m -29.4542,0.0815 1.22221,0.0815 -0.20371,0.61107 -1.26289,0 0.2444,-0.69255 z m 10.9181,0.0407 0.6518,0 0,0.20369 -0.1222,0 -0.6111,-0.16295 c 0.029,-0.0137 0.051,-0.0271 0.081,-0.0407 z m 14.2993,0.0815 0.28521,0.40738 -0.28521,0.44813 -0.2444,-0.0407 0.2444,-0.81477 z m 1.14071,0.3259 0.1222,0.61108 -0.28521,-0.0815 0.16301,-0.52961 z m 4.15539,0.0407 0.12221,0 c -0.064,0.20395 -0.057,0.39208 0,0.5296 l -0.041,0 -0.1222,0.40738 0.041,0.89626 -0.4074,0.48885 -0.20371,-0.0407 0.32591,-1.18142 -0.44809,-0.12222 0.2444,-0.81477 0.4074,0.12222 0.082,-0.28517 z m -17.2326,0.0407 0.3667,0 0,0.28517 -0.2445,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.774,0 0.4074,0 -0.1629,0.57034 -0.2445,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.037,0 0.40741,0 -0.1222,0.69256 c -0.146,0.15266 -0.3488,0.24964 -0.5704,0.3259 l -0.61109,-0.44812 c 0.097,0.029 0.20249,0.0644 0.3259,0.0815 0.4141,0 0.5704,-0.19281 0.5704,-0.65182 z m -22.44709,0.0407 c 0.01,0.0179 0.071,0.0223 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7702,0.0407 0.8148,0.20369 -0.082,0.20369 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40738 z m 21.42871,0 0.2851,0.16295 -0.082,0.2037 -0.2851,-0.0407 0.082,-0.32591 z m -2.3222,0.0815 0.28521,0.0815 -0.28521,0 0,-0.0815 z m -14.2993,0.36665 0.48889,0.5296 -0.2037,0.65182 -0.041,0 -0.2445,-0.32591 -0.52959,-0.12222 c -0.048,0.151 -0.1391,0.2794 -0.24441,0.36665 l -0.8555,-0.24443 c -0.047,-0.23181 -0.22209,-0.40088 -0.61109,-0.48887 l 0.041,-0.20368 0.5704,0.12221 0.2036,0.24443 c 0.1053,-0.33289 0.569,-0.44605 1.4259,-0.5296 z m 3.1776,0.3259 0.3667,0.44813 -0.65179,-0.12221 0.2851,-0.32592 z m 21.67309,0 0.12221,0.2037 c -0.02,0.075 -0.087,0.16363 -0.12221,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.34439,0.12222 0.20371,0.36665 -0.041,0.2037 -0.2444,-0.36665 c 0.023,-0.0703 0.061,-0.13195 0.082,-0.2037 z m -25.9099,0.40739 0.24441,0.0407 -0.1222,0.40739 -0.24441,-0.0407 0.1222,-0.40739 z m -1.5073,0.0815 0.20371,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.10221,-0.11766 -0.163,-0.16295 z m -3.91099,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.48889,0.61107 0,-0.48885 -0.1222,-0.12222 c 0.17359,-0.0109 0.33159,-0.0657 0.44809,-0.12221 0.1559,0.20013 0.3052,0.42705 0.48889,0.65181 l -0.3259,0.44812 -0.1222,-0.12221 -0.082,-0.16296 -0.28521,-0.0407 -0.65179,0.28518 0.041,0.61107 c -0.1697,-0.1506 -0.3284,-0.32459 -0.48889,-0.48886 l 0.082,-0.20369 -0.3666,-0.0815 c -0.1552,-0.17217 -0.30259,-0.34479 -0.4482,-0.52961 l 0.6518,0.12222 0.163,-0.48885 z m 11.7328,0.24443 0.4482,0 0,0.48885 -0.4482,0 0,-0.48885 z m 11.6921,0 0.1629,0 0,0.1222 -0.1629,-0.1222 z m -4.44051,0.0407 0.16291,0.28516 -0.041,0.16295 -0.97771,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.1794,-0.0411 0.3596,-0.19639 0.4888,-0.40737 l 0.3667,-0.0407 z m -0.73329,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.19989,0.0407 c 0.1,0.0769 0.15689,0.22679 0.1629,0.36665 l -0.69259,0 0.163,-0.28517 0.3667,-0.0815 z m 17.11031,0.0407 0.1629,0.0407 -0.041,0.16296 -0.1629,-0.0815 0.041,-0.12222 z m -21.14351,0.0407 0.12221,0 c 0.1262,0.0632 0.21979,0.15471 0.2445,0.28517 l -0.36671,0 0,-0.28517 z m 11.6921,0.44813 0.5296,0.12222 -0.082,0.24443 -0.5296,-0.12222 0.082,-0.24443 z m -13.0365,0.0815 0.163,0.12221 -0.082,0.2037 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2444,0.0407 0.1222,0.0815 0.16301,0 -0.082,0.24444 -0.3666,0.20368 -0.1223,0.0407 0,-0.0815 0.1223,0.0407 0.041,-0.20368 -0.1223,-0.28518 0,-0.0815 z m 25.4211,0.0407 0.1222,0.44812 -0.1222,0.28517 0,-0.73329 z m -16.1734,0.16296 -0.041,0.20368 -0.041,0.48887 -0.937,-0.12222 -0.081,-0.0815 0.77409,-0.36664 -0.3667,-0.0815 0.6926,-0.0407 z m -3.50351,0.0407 -0.041,0.12222 -0.28521,-0.0815 0.32591,-0.0407 z m 4.7664,0 0.44821,0.0815 0,0.0407 0,0.20368 c -0.19051,-3e-5 -0.299,0.0479 -0.40741,0.12222 l -0.041,-0.44812 z m -2.5665,0.0407 -0.1222,0.44812 -0.6111,-0.0815 -0.2445,-0.24444 -0.082,0.2037 -0.28511,-0.0407 0.082,-0.24442 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2851,0 0.7333,-0.0407 z m 3.78869,0 0.12221,0.0407 -0.12221,0 0,-0.0407 z m -15.2771,0.0407 0.163,0.24442 0.28511,0 0.163,-0.12222 0.2852,0.28518 -0.3259,0.36664 c -0.7619,0.018 -1.1994,0.12476 -1.2629,0.32592 l -0.082,0.20368 0.28511,0.0815 0.5296,0 -0.24441,0.28517 c -0.3067,1e-5 -0.7246,-0.15749 -1.1814,-0.36665 l 0.1222,-0.3259 -0.36671,-0.0815 -0.3259,0.16296 c -0.3253,-0.18391 -0.6735,-0.42525 -1.0592,-0.69256 0.52999,0.11988 0.94079,0.0209 1.2222,-0.28518 0.452,0.0971 0.8964,0.16296 1.3851,0.16296 l 0.082,0 0.163,0.0407 0.041,-0.16296 0.12221,-0.1222 z m 1.91471,0.0815 c 0.012,0.27819 0.1751,0.47169 0.61109,0.57035 l -0.041,0.12221 -0.16291,0.0815 c -0.4016,-0.0334 -0.77869,-0.0703 -1.1,-0.0815 0.1876,-0.17417 0.4654,-0.46551 0.6926,-0.69256 z m 25.17669,0 0.12221,0.0407 -0.24451,1.01847 -0.1222,-0.0407 0.2445,-1.01848 z m -10.9588,0.0815 0.24441,0.0815 -0.082,0.28517 -0.16291,0 0,-0.36665 z m -20.81759,0.12222 c 0.2965,0.34462 0.63239,0.71226 0.9778,1.09994 l -0.7333,-0.16296 c -0.294,-0.25078 -0.5828,-0.52524 -0.8555,-0.81476 l 0.611,-0.12222 z m -1.05921,0.24443 0.44821,0.73329 -0.32591,0 c -0.2314,-0.13531 -0.4738,-0.24992 -0.69259,-0.40738 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.44809,-0.0815 z m 23.2212,0.16296 0.5703,0.12221 0,1.18142 -0.4481,0.12222 -0.5296,-0.12222 0.40741,-1.30363 z m 11.2847,0.12221 -0.2037,0.40738 0.082,-0.3259 0.1222,-0.0815 z m -16.2956,0.12222 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.67691,0.12222 c 0.029,0.006 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.36659,0 0.2037,-0.0815 z m 29.1691,0.0407 -0.041,0.36664 -0.2852,-0.0815 c 0.1195,-0.0874 0.2148,-0.19178 0.3259,-0.28516 z m 3.8294,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2037,0.0815 c -0.072,0.0648 -0.1696,0.10081 -0.2445,0.16296 -0.1919,0.15941 -0.368,0.33853 -0.5703,0.48886 -0.078,-0.0803 -0.1398,-0.20168 -0.2037,-0.32591 0.1573,-0.0786 0.2843,-0.16145 0.4481,-0.24443 l 0.3259,0.0815 0.041,-0.2037 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.20369 -1.0999,0.5296 -0.163,0 0,-0.20369 c 0.1087,10e-6 0.2966,-0.11103 0.5296,-0.28517 l 0.7333,-0.0407 z m -4.9294,0.12222 c 0.1297,0.14533 0.2302,0.25608 0.3667,0.40738 l 0,0.2037 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.163,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2444,-0.16296 l 0.1629,-0.0407 0.041,-0.16295 z m 10.0218,0.0815 0.3666,0.24444 -0.082,0.0815 -0.2037,0 c 0,-0.12071 -0.037,-0.22822 -0.082,-0.32591 z m -2.037,0.32591 0.6519,0 0,0.2037 -0.6519,0 0,-0.2037 z m 6.6405,0 0.4074,0 0,0.0815 -0.2445,0.12222 -0.1629,0 0,-0.2037 z m -3.0962,0.12222 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8257,0 0.2444,0.0407 0.2444,0.28516 0.082,0 0,0.40739 c -0.3615,0.0312 -0.7579,0.0611 -1.1406,0.0815 l 0.32591,-0.48887 c 0.079,-0.004 0.1557,0 0.2444,0 l 0,-0.3259 z m -6.4775,0.3259 0.6518,0 0,0.48887 -1.0185,0 0.3667,-0.48887 z m 8.1885,0.0407 0.2852,0.0815 -0.041,0.12222 c -0.1063,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24443 z m 9.4107,0.0407 c -0.02,0.28762 -0.042,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40737 -0.3259,-0.44811 0.5703,-0.81478 z m -12.0587,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2445,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2445,-0.24443 z m -8.6367,0.16295 0.6519,0 0,0.2037 -0.6519,0.20369 0,-0.40739 z m 1.0185,0 0.4889,0 0,0.2037 -0.4889,0 0,-0.2037 z m 3.585,0 0.3667,0 -0.3667,0.40739 -0.4888,0 0.4888,-0.40739 z m -15.1548,0.2037 0.041,0 0,0.20369 -0.4482,0 0,-0.0407 0.4074,-0.16295 z m 3.3406,0 0.611,0 0,0.20369 -0.611,0 0,-0.20369 z m 4.9701,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.9109,0 0.6519,0 0,0.20369 -0.6519,0 0,-0.20369 z m 18.0474,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.163,0.48886 -0.5296,-0.12221 0.041,-0.0815 c 0.17551,-0.0707 0.415,-0.20083 0.6111,-0.28518 z m 5.296,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24444 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2445,-0.12222 z m -32.6318,0.28518 0.6518,0 0,0.24442 -0.6518,0 0,-0.24442 z m 2.9332,0 0.3666,0 -0.3666,0.52959 0,-0.52959 z m -3.5443,0.24442 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.6111,0 1.0184,0.28517 1.2222,-0.28517 1.30371,0 0,0.48887 -5.1739,0 0,-0.2037 1.0185,-0.28517 z m 4.522,0 4.60351,0 -0.4481,0.48887 -0.2037,-0.2037 -1.0185,0.2037 -2.4851,0 -0.4481,-0.48887 z m 5.459,0 0.5704,0 0,0.28517 -0.5704,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.20369 l -0.041,0 0.041,-0.16295 0.041,-0.0407 z m -30.5134,0.28517 1.0185,0 0,0.2037 -1.0185,0 0,-0.2037 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#ef2929;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3558);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\général\Charte graphique\OD\OD6.0\splashscreen\png\splashscreen_OD6.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       inkscape:connector-curvature="0" />
+    <path
+       transform="matrix(1.0736935,0,0,1.073713,-1.6431211,-956.29964)"
+       id="path3947"
+       d="m 604.33044,486.94949 -2.5666,0.48887 0,1.34437 0.5704,-0.61108 0.6518,0 0,0.20369 -1.2222,0.40739 0,2.07766 0.2037,0 -0.2037,0.28516 0,0.85552 c -0.1242,0.11339 -0.1888,0.18925 -0.2852,0.28516 l 0,0.48887 c 0.096,-0.0462 0.1848,-0.0603 0.2852,-0.12222 l 0,0.7333 -0.2852,0.24443 0,8.55509 0.6111,2.24062 0.082,0.57034 c -0.028,0.0807 -0.061,0.16776 -0.082,0.24442 0.066,0.0489 0.108,0.10818 0.163,0.16296 l 0,0.16295 -0.2445,-0.0815 c -0.024,-0.006 -0.057,-0.001 -0.082,0 0.036,-0.12665 0.062,-0.25693 0.1223,-0.36665 l -0.163,-0.61108 -0.4074,0.0815 0,3.87016 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.8555 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69255 l 0,0.97772 0.2445,0.0815 -0.041,0.16296 -0.2037,-0.0815 0,11.12162 0.1629,-1.18142 0.1222,0.0407 0,1.01846 0.2037,0 0.4889,0.5296 c -0.1,0.0821 -0.1897,0.19341 -0.2444,0.36665 l -0.2037,-0.24443 -0.082,0 -0.163,-0.65182 0,0.57034 -0.041,0 -0.2444,0.12221 0,0.89625 0.2852,-0.12221 0,0.3259 -0.1223,-0.0407 -0.1222,0.40738 0.2445,0.0407 0.3666,-0.12221 0,0.24443 -0.3666,0 0,0.85551 -0.2852,0.0815 0,0.2037 0.2852,-0.0815 0,0.0815 c 0.414,4e-5 0.5703,-0.14215 0.5703,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1222,0.0815 -0.082,0.24444 0.1222,0 0,0.0815 0.2037,0.24444 0,0.28517 -1.0185,0 0,0.24442 3.3814,0 c 0.2346,-0.63832 0.5269,-0.97772 0.937,-0.97772 l 0,-0.40738 -0.5704,0 -0.2852,0.20369 -0.1629,0 -0.2444,-0.32591 0.082,-0.24443 -0.2445,0.0815 -0.6518,0 -0.3259,0.12222 0,-0.0407 -0.3667,-0.0815 -0.2851,0.20369 -0.4482,-0.20369 0,-0.24443 1.0593,0 0,-0.2037 -0.2037,-0.20369 0,-0.24443 0.4888,0.16295 -0.082,0.20369 0.5704,0.12222 0.2851,-0.0407 0.6111,0.2037 -0.082,0.24443 0.2852,0.0815 0.5703,-0.0407 0.6519,0.24443 0,0.20369 c -0.3219,6e-5 -0.8163,0.38651 -1.3852,1.18141 l 18.577,0 c 0.082,-0.0802 0.1634,-0.16302 0.2444,-0.24442 0.2121,0.0756 0.504,0.16493 0.7333,0.24442 l 1.4666,0 -0.2444,-0.40738 1.1407,0.0815 0.2037,0.0815 -0.041,0.16295 -0.5297,0.0815 0.7333,0 7.8626,0 0.041,-0.16294 c 0.061,0.0307 0.1356,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3037,0 0.3666,-0.24442 -0.041,0.24442 2.5666,0 0.082,-0.24442 0.2444,0.0407 -0.082,0.20368 0.4481,0 0,-1.34436 -0.082,0.24442 -0.2444,-0.0407 0.1222,-0.40737 0.2037,0.0815 0,-9.04395 -0.1222,-0.0407 0.1222,-0.57034 0,-1.71102 -0.2851,0.0815 -0.041,0.20369 0.2036,0.32591 -0.611,1.09994 -0.2037,-0.0407 0.937,-3.50351 0,-1.5888 -0.2852,0.12221 -0.041,1.0592 -0.6518,2.36284 -0.5704,0.28517 1.1815,-4.39976 0.3666,0.57034 0,-1.34437 -0.163,-0.0407 0.163,-0.57034 0,-1.83323 c -0.2597,-0.39208 -0.5239,-0.78277 -0.8148,-1.14068 l 0.8148,0.0407 0,-1.22215 -0.2037,0.8555 -0.2444,-0.0815 0.3259,-1.18141 0.1222,0.0407 0,-3.54426 -0.082,0.28518 -0.4481,-0.12222 0.5296,-2.03692 0,-7.98475 -0.041,0.12221 -0.8148,0 -0.6518,-0.36664 -0.8148,0 0.041,-0.2037 -0.3259,-0.5296 0.082,-0.28517 0.2037,0.0407 0.8555,0.77403 0.2852,-0.16295 0.082,-0.28518 c -0.3163,-0.38755 -1.755,-1.0888 -4.3183,-2.07766 l -1.1,0 2.811,1.18142 -0.1222,0.40739 0.2851,-0.16296 0.6926,0.2037 -0.4889,0.81476 -0.2037,-0.0407 -0.1629,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40738 0.3667,-0.16295 0,-0.0407 -0.2445,-0.28517 -0.2444,-0.0815 -0.2852,0.20369 -0.2444,-0.0407 -0.6926,-0.48886 -0.5703,0.36665 -1.5481,-1.2629 -1.8332,0 -0.082,0.32591 -0.2445,-0.0407 0.082,-0.28517 -3.2998,0 1.0184,1.54807 0.2037,0.0407 -0.1629,0.69255 -0.4481,-0.12222 -0.082,0.2037 c 0.3276,0.0876 0.5624,0.55849 0.6925,1.38511 l -0.1629,0.69255 -0.2445,-0.0815 0.1223,-0.44812 -0.7333,-0.20369 -0.163,0.44813 0.4889,0.1222 -0.2445,0.89626 -0.4888,-0.12222 -0.2037,0.93699 0.4481,0.12221 -0.1222,0.40738 -0.4481,-0.12221 -0.1223,0.40738 0.4482,0.12222 -0.163,0.69256 c -0.4096,-0.10952 -0.6971,0.1232 -0.937,0.69255 -0.022,0.0836 -0.038,0.17514 -0.041,0.24443 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0894 -0.01,-0.18893 0,-0.28517 l 0.2037,0 0,-0.20369 -0.163,-0.16296 c 0.014,-0.071 0.021,-0.12963 0.041,-0.20369 l 0.5296,0.16295 0.163,-0.65181 -0.4074,-0.61108 0.937,-1.3851 -0.2037,-0.0407 0.2852,-0.16296 0.082,-0.28517 -0.2037,-1.46659 0.6518,-0.24443 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.06751 -0.199,-1.68476 -1.0592,-1.91471 l 0.2852,-0.16296 0.082,-0.24443 -1.5889,0 0,0.0815 0.6926,0.16295 -0.937,0.73329 c 0.085,-0.31633 0.049,-0.64017 -0.041,-0.97772 l -1.5888,0 -0.2037,0.69255 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48887 -0.082,0.44812 -0.3667,-0.57034 0.082,-0.36665 -0.4481,0 -0.8555,3.09613 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12221 l -0.041,0 -0.163,-0.24443 0.2852,-0.12222 0.082,-1.18142 0.3667,-1.42585 -0.4889,0 -0.6111,2.36284 -0.2444,0 0.6111,-2.36284 -2.6073,0 -0.041,0.16296 0.4481,0.12221 -0.2852,1.0592 c -0.9988,-0.37943 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4355,0.62502 -0.774,0.77404 -0.017,-0.069 -0.022,-0.13369 -0.041,-0.20369 l -0.041,-0.2037 0.5703,-0.0815 0,-0.28517 c 0,-0.20088 -0.2546,-0.36698 -0.774,-0.48885 l -0.041,-0.2037 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2787,-0.13727 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16296 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12222 -0.163,0.16295 -0.081,-0.28517 -2.7295,0 -0.2037,0.97772 -0.3259,0 0,-0.48885 c 0.085,-0.17618 0.1553,-0.35747 0.2037,-0.48887 l -2.4036,0 z m 36.2576,12.83263 0,-0.93698 -0.041,0.0407 -0.163,0.61107 0.2037,0.28517 z m -34.3429,-12.75115 -0.2852,0.44813 -0.4888,0.0815 0.082,-0.28517 0,-0.12221 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12221 -0.041,0.24444 -0.4481,-0.12222 0.041,-0.24443 z m -16.2956,0.36665 0,0.48885 -0.4481,0 0.4481,-0.48885 z m 7.8219,0 0.082,0.0407 0.2037,0.89624 c -0.2225,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16294 0.1629,-0.0407 z m 1.4666,0 0.4074,0.48885 -0.4074,0 0,-0.48885 z m -2.5666,0.16295 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1515,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2145,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.9739,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24444 -0.163,0 c 0.038,-0.0692 0.088,-0.17949 0.1223,-0.24444 z m 13.0364,0 0.2037,0.0815 -0.1629,0.65182 -0.3259,-0.57034 0.2851,-0.16296 z m 11.8143,0.0407 0.4481,0.12222 -0.1222,0.48887 -0.4889,-0.12222 0.163,-0.48887 z m -5.8257,0.16296 0.2445,0.0407 -0.163,1.5888 -0.2852,0.16296 -0.1222,0.48886 -0.5296,2.52579 -0.6518,-0.65183 1.1,-2.64799 -0.2445,-0.28518 0.082,-0.20369 0.5704,-1.01846 z m 0.9778,0.0407 0.5703,0.12221 -0.2852,0.16296 -0.082,0.20369 -0.774,3.87016 -0.2852,0.16295 -0.082,1.14068 -0.2037,0.77403 -0.5703,0 0.1629,-0.57034 c 0.245,-0.0956 0.4482,-0.21288 0.4482,-0.36665 l -0.2852,-0.28516 1.3851,-5.21453 z m -17.7214,0.20369 0.2444,0 0.041,0.16296 -0.082,0.0407 -0.1222,0 -0.082,-0.2037 z m 14.5437,0.12222 0.2037,0.0407 -0.082,0.44812 -0.2444,-0.0815 0.1222,-0.40738 z m 12.6291,0.0407 0.2037,0.0815 -0.082,0.40737 -0.2444,-0.0815 0.1222,-0.40738 z m -29.8209,0.0407 0.6519,0 0,0.20369 -0.6519,0 0,-0.20369 z m -2.0776,0.20369 1.0592,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28516 l -0.937,0 0,-0.28516 z m 11.855,0 0,0.5296 -0.4889,0 0.4889,-0.5296 z m 24.3618,0.16295 c -0.074,0.27638 0.1417,0.51307 0.5704,0.65182 l 0,-0.52961 -0.5704,-0.12221 z m -6.0701,0.32591 0.4481,0.12221 -0.3666,1.30364 -0.4481,-0.12222 0,-1.18142 0.3666,-0.12221 z m -17.0696,0.44812 0,0.48886 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57033 l 1.7926,-0.16296 z m 0.3667,0 0.6518,0.2037 0,0.28516 -0.8555,0 0.2037,-0.28516 0,-0.2037 z m 1.0185,0 0.041,0 0.2851,0.44812 -0.041,0.0407 -0.2851,0 0,-0.48886 z m 1.8332,0 -0.082,0.32591 -0.2852,0.0407 0.1223,-0.3259 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6518,0.36664 -0.082,0.2037 -0.4481,0.8555 c -0.076,0.61312 0.1199,0.99046 0.5296,1.09995 l -0.1222,0.40738 -0.5296,-0.12221 -0.082,0.28517 0.2444,0.28517 -0.3666,0.12222 0.041,1.18141 -0.4889,1.79249 -0.5296,-0.12221 -0.4074,-1.30364 0.1222,-0.48885 0.2444,0.0407 -0.1222,0.48885 0.4482,0.12222 0.041,-0.20369 -0.2852,-0.81477 0.2852,-0.12222 c 0.1185,-0.44345 -0.079,-0.76488 -0.5704,-0.89624 l 0.6518,-0.28518 -0.1222,0.40739 0.4889,0.12222 0.3666,-3.21834 0.041,-0.2037 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48886 -0.3259,-0.0815 0,-0.36664 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.52959 0,-0.52959 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20541 -0.3429,0.30401 -0.5704,0.48886 l -0.2037,-0.24443 0,-0.28516 z m 1.3037,0 0.3666,0 0.4074,0 0,0.20368 -0.082,-0.0815 -0.4889,0.12221 0,0.24444 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.163,-0.28516 z m 1.1406,0 0.6111,0 -0.041,0.28516 -0.5703,0 0,-0.28516 z m 7.2923,0 0.6518,0 -0.082,0.24442 0.1222,0.44813 -0.2851,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24442 -0.2037,0.0407 -0.082,-0.28516 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.20369 -1.1,0.16296 0.1223,-0.40738 z m -12.9142,0.0815 0.2036,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.081,0.20369 0.4888,0.12222 0.041,-0.2037 -0.4481,-0.12221 z m 10.1439,0.36665 0.4889,0.12221 0.4074,0.57035 -0.6518,0.3259 0.2852,0.0815 -0.6111,1.01846 c -0.3277,-0.0876 -0.363,-0.37134 -0.2445,-0.81477 l 0.2852,-0.16296 0.041,-0.20369 0,-0.93698 z m -1.3851,0.28517 0.2445,0.0815 0.041,0.73329 -0.4482,-0.12222 0.163,-0.69255 z m -25.5025,0.0407 0,0.40739 -0.2852,0 -0.082,-0.32591 0.3667,-0.0815 z m 23.9137,0.0407 0.2444,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44811 z m -24.7285,0.0815 0.082,0.28518 -0.2444,0 0,-0.24444 0.1629,-0.0407 z m -8.2292,0.0407 1.0184,0 c -0.1009,0.0837 -0.1917,0.16588 -0.2851,0.24444 l -0.7333,0 0,-0.24444 z m 2.0776,0 0.4482,0 0,0.24444 -0.6111,0 0.1629,-0.24444 z m 7.8626,0 0,0.24444 -0.2036,0 -0.041,-0.16296 0.2444,-0.0815 z m 3.748,0 0.4074,0 0,0.24444 -0.4074,0 0,-0.24444 z m 1.0592,0 0.8148,0 0,0.24444 -0.8148,0 0,-0.24444 z m 22.3657,0.0407 0.4481,0.12222 0.2852,0.28516 0.082,-0.40738 0.2444,0.0407 -0.1222,0.44812 -0.2037,-0.0815 0.163,0.28517 -0.1223,0.48887 c -0.3277,-0.0875 -0.616,0.14207 -0.774,0.73329 l -0.3666,-0.61107 0.3666,-1.30364 z m -31.0023,0.0407 0.2852,0.20368 -0.2037,0.0815 -0.082,-0.28516 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16294 -0.041,0.2037 -0.5296,-0.12222 0.041,-0.24442 z m -20.4917,0.0407 0.3667,0 0,0.28516 -0.3667,0 0,-0.28516 z m 3.5443,0 0.2037,0 c 0.2933,0.10003 0.5027,0.2543 0.6518,0.48885 l -0.081,0.12222 c 0.049,0.098 0.1129,0.18841 0.163,0.28517 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.13781 0.1679,0.27232 0.2444,0.40739 l -1.7925,0 0,-0.20369 c 0.5521,1e-4 0.8148,-0.22358 0.8148,-0.5296 l -0.3667,-0.40739 0,-0.48885 z m -9.2884,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.1629,-0.16296 z m -3.5036,0.0815 0.082,0.44813 -0.4481,0.12222 -0.041,-0.16296 0.3259,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6296,0.0407 c 0.2851,1.0667 0.7124,1.54314 1.3036,1.38511 l 0.082,0.16296 -0.1629,0.24443 -0.2445,-0.12221 c -0.5964,0.73086 -0.8708,1.45176 -0.6925,2.1184 l -0.8555,-0.65182 0.611,-0.16295 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.8148,-0.61107 l 0.9778,-0.7333 -0.4482,-0.93699 -0.041,-0.16295 0.4074,-0.12222 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12221 0.082,-0.24444 z m -14.9512,0.0815 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 4.6035,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2445,-0.2037 z m -10.5514,0.0407 c 0.1566,0.12931 0.3292,0.24634 0.5704,0.36665 l 0,-0.16295 0.082,0.36665 0,0.0815 -0.4481,0.12222 -0.2037,-0.77403 z m 23.2212,0.0407 0.4481,0.12222 0,0.97772 -0.2851,0.12222 -0.041,0.20369 -0.163,1.46659 -0.4074,0.57033 0.2037,0.24444 -0.3259,0.20369 0.3666,0.57034 -0.2851,0.12221 -0.2445,-0.0407 -0.041,1.14068 -0.3259,1.14068 -0.4481,-0.16296 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.1629,0.0407 c 0.083,0.20378 0.1422,0.44083 0.163,0.69256 l -0.041,0.20369 -0.163,-0.24443 -0.2851,-0.0815 -0.041,0.0407 0.2444,-1.54806 0.774,-2.8517 0.4482,-0.81477 -0.2852,-1.0592 0.5296,0.16295 0.3259,-2.07766 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2852,-0.16295 -0.2037,0.0815 0.3667,0.48885 -0.4889,0.61109 -0.3259,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48886 -0.163,0 -0.2037,0.28517 -0.2037,0 0.3667,-0.61108 1.2629,-0.20369 z m 4.8072,0 0.1629,0.65181 -0.2037,0.0407 -0.2037,-0.61107 0.2445,-0.0815 z m -7.0886,0.28517 0.2037,0 0,0.28516 -0.2037,0.24444 -0.2444,0 0,-0.3259 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.2037 z m 32.5911,0.40738 1.5073,1.34437 -0.1222,0.44813 -0.5296,-0.16296 -0.4889,1.79249 -0.2037,-0.0407 0.4074,-2.48505 -0.2851,0.12222 -0.326,-0.0815 0.041,-0.93699 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6926,-0.2037 0.041,-0.20369 z m -27.4173,0.12222 0.041,0 0.2037,0.20369 -0.163,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.20369 -0.5703,0 0,-0.20369 z m 5.4997,0 0.041,0 0,0.20369 -0.082,0 0.041,-0.20369 z m 0.5296,0.16295 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16296 l 0.4074,0.12221 c -0.1394,0.12918 -0.3455,0.16299 -0.6518,0.16296 l -0.2037,0 0,-0.20369 0.4889,-0.24444 z m -4.6442,0.0407 0.6518,0.2037 0,0.44812 c -0.414,0 -0.6518,0.18289 -0.6518,0.48886 l -0.163,0 c 0,-0.45891 -0.1313,-0.73324 -0.4074,-0.73329 l 0,-0.20369 0.5704,-0.2037 z m 11.4476,0.0407 0.3259,0.61108 -0.041,0.20369 -0.3259,-0.61108 0.041,-0.20369 z m -18.088,0.0407 0.5703,0.28517 0.6518,2.36283 0,0.0815 -0.3666,-0.5296 -0.2037,0 0.5703,0.8555 0.041,0.65183 0.2852,0.12221 -0.3667,0.57034 -1.1814,-4.39976 z m 15.44,0 0.2444,0.0407 -0.2852,1.09994 -0.2444,-0.0407 0.2852,-1.09994 z m -7.0886,0.12222 0.5704,0.20369 0,0.24443 -0.7741,0 0.2037,-0.24443 0,-0.20369 z m -9.2884,0.20369 0.4888,0.48886 0.041,0.16295 -0.4888,0.12222 -0.163,-0.65181 0.1222,-0.12222 z m 1.9962,0.12222 0.3259,0.3259 0,0.0815 0.082,0.0407 0.2037,0.24444 -0.163,0.16295 0.6518,2.36284 -0.2851,-0.16296 -0.8148,-3.05538 z m -7.8219,0.0815 0.082,0.36664 -0.2037,0.0407 -0.082,-0.36664 0.2037,-0.0407 z m 2.4443,0.20369 -0.082,0.61108 0.082,0.24443 0.2445,0.16296 c -0.776,0.20743 -1.0756,0.74802 -0.937,1.71101 l 0.3666,0.57035 -0.2037,0.0407 0.5704,0.24443 -0.163,1.30363 0.082,0.28517 0.2445,0.12222 -0.2037,0.0407 0.5703,0.85551 c -0.1409,0.11253 -0.2864,0.23951 -0.4481,0.40738 l -0.082,-0.20369 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81477 -0.4481,0.12222 -0.2037,-0.81477 0.4073,-0.12221 -0.1222,-0.44813 -0.6518,0.20369 0.082,0.44812 -0.2037,0.0407 -0.1629,-0.61107 c 0.1174,-0.74568 0.3562,-1.1839 0.6518,-1.2629 l -0.082,-0.16295 -0.4074,0.0815 -0.163,-0.61107 0.2037,-0.0407 1.3444,-2.03693 z m 31.3282,0.20369 0.2445,0.0407 0.2444,0.28517 0.2852,-0.12221 0.6925,0.16295 0.4482,2.28136 -0.041,0.20369 0.2851,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6925,2.648 c -0.6159,-0.3229 -0.8482,-0.90563 -0.6111,-1.79249 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48885 0.082,-1.18142 -0.5704,-0.12222 -0.6925,2.68874 0.2444,0.28517 -0.3666,0.12222 -0.041,0.20369 0.2037,2.19988 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08428 -0.2445,1.50733 -0.1694,0.10755 -0.2848,0.39716 -0.4073,0.85551 l -0.326,0.12221 -0.4481,-0.12221 -0.1629,-0.93699 0.5703,-0.48886 0,-0.12222 c 0.055,0.0879 0.1486,0.16719 0.2852,0.20369 l 0.2037,0.0407 0.082,-0.20369 0.2444,-1.87397 0.3666,-0.52961 0.7333,-3.62572 0.2445,-0.89625 -0.4481,-0.12222 -0.3667,1.34438 -0.3666,0.12221 0.2444,0.28518 -0.1222,0.48885 -0.5296,-0.16294 0.8147,-3.09614 z m -9.207,0.12222 0.2037,0.0407 -0.2444,0.89624 -0.2852,0.16296 -0.2037,-0.0815 0.5296,-1.01846 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.9729,0.0815 0.2037,0.81476 -0.2037,0.0407 -0.2444,-0.77403 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44812 -0.2037,0.0407 -0.041,-0.12221 c 0.028,-0.10615 0.05,-0.23044 0.082,-0.32592 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2037,0.69255 -0.2037,-0.0407 0.163,-0.69256 z m -26.5618,0.0407 0.1223,0.44813 -0.326,0.48886 -0.082,-0.36665 0.2852,-0.57034 z m 13.892,0.0815 0,0.0407 -0.3259,0.20369 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.1321,0.12222 0.774,0.20369 -0.041,0.24443 -0.774,-0.2037 0.041,-0.24442 z m -8.7181,0.0407 0.5703,0.16295 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.24442 z m -15.4808,0.0407 0,0.61108 0.4481,0 c 0,0.33785 0.036,0.62661 0.1222,0.81477 -0.2101,0.0426 -0.4005,0.0946 -0.5703,0.16295 l 0,-0.0407 -0.3667,-0.40738 -0.6518,0.20368 c 0,-0.11014 -0.034,-0.2077 -0.082,-0.28516 l -0.2444,-0.89626 1.3444,-0.16295 z m 2.8925,0 0.2851,0.20369 0.2037,0 1.874,-0.20369 0,0.20369 -0.2852,0.65182 c 0.3993,-0.22118 0.701,-0.47341 0.8148,-0.77403 0.071,0.0934 0.1313,0.19369 0.2037,0.28517 l -0.3666,0.0407 0,0.44812 0.4073,0 0.2445,0.28518 0.1629,-0.24444 c 0.093,0.10679 0.1891,0.22208 0.2852,0.3259 l 0.041,0.16296 -0.2037,-0.20369 -0.2444,0.12221 0.041,0.69256 -0.2444,0.12222 -0.082,0.16295 -0.6519,-0.12221 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.3259,0 0.3667,0.0815 0.041,-0.2037 -0.2852,-0.52959 c -0.2712,-0.0725 -0.5058,-0.0647 -0.7333,-0.0815 l -0.2037,-0.2037 -0.082,0.16296 c -0.064,0.002 -0.1436,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.20369 -0.774,-0.20369 -0.4482,0.44812 -0.1629,-0.24443 0,-0.20369 c 0.2415,2e-5 0.4326,0.0163 0.6111,0 0.5353,-0.0491 0.774,-0.17787 0.774,-0.40739 z m 16.2955,0 0.2444,0.0815 -0.2444,0.89625 -0.2444,-0.0815 0.2444,-0.89625 z m -19.962,0.40739 0,0.44812 0.4073,0 0,-0.44812 -0.4073,0 z m -1.5481,0.0815 0.2444,0.28518 -0.2037,0.36665 -0.1629,-0.52961 0,-0.0815 0.1222,-0.0407 z m -10.5106,0.12222 0.041,0.32591 -0.163,0.0407 0.1222,-0.36665 z m 21.836,0 0.1629,0 0,0.24443 -0.1629,0 0,-0.24443 z m -16.6622,0.0407 0.5296,0.93698 0.041,0.16296 -0.2037,0.28517 0.774,1.83323 -0.5296,0.32591 -0.2851,-1.50733 -0.1223,-0.44811 -0.2444,-0.12222 -0.1629,-1.42585 0.2037,-0.0407 z m -0.8963,0.0407 1.1407,4.2368 -0.3259,-0.0815 0,-0.0815 -0.2852,-0.16295 -0.6925,-3.46277 -0.041,-0.2037 -0.2852,-0.12221 0.4889,-0.12222 z m 19.8806,0.0815 0.2444,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44811 z m -7.7811,0.0815 0.6518,0 0,0.2037 c -0.1266,0.0362 -0.2233,0.0983 -0.3259,0.16294 l -0.3259,-0.0815 0,-0.28518 z m -9.207,0.12222 0.1222,0.36664 -0.2037,0.0407 -0.1222,-0.36664 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.981,0.24442 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48887 z m 5.2553,0 0.2445,0.0407 -0.163,0.48887 -0.2037,-0.0407 0.1222,-0.48887 z m -22.8137,0.0815 0.3666,0 c -0.096,0.17535 -0.2074,0.27297 -0.3666,0.28517 l 0,-0.28517 z m 7.1293,0 0.1629,0 0,0.2037 -0.1629,0 0,-0.2037 z m -1.5074,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7258,0.0815 0.3259,0.61108 -0.1222,0.40738 -0.4482,-0.12222 0.2445,-0.89624 z m 1.0184,0.28517 0.2037,0.0407 c -0.079,0.29569 0.1603,0.56116 0.6518,0.69255 l -0.2444,0.89625 c -0.1373,-0.16028 -0.2848,-0.28993 -0.4481,-0.40738 l 0.041,-0.2037 -0.4481,-0.12222 0.2444,-0.89624 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44812 -0.1629,-0.0815 0.082,-0.40739 z m 3.3814,0 0.5703,0 -0.082,0.20369 -0.2444,0 c -0.089,-0.0653 -0.1748,-0.12662 -0.2445,-0.20369 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12221 l -0.1222,-0.0407 0.1629,-0.0815 z m -15.603,0.16295 0.082,0.16296 0.3259,2.93316 0.4074,-0.12221 -0.1222,-0.36665 0.6111,0.24443 c -0.4434,0.11852 -0.6365,0.41477 -0.5296,0.81478 l 0.2444,0.12221 -0.2444,0.73329 0.041,0.2037 0.4481,-0.12222 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44812 -0.3667,1.14068 -0.3666,-0.0815 c -0.056,0.0711 -0.069,0.13432 -0.1222,0.2037 l -0.4482,-1.58881 0.041,-1.09994 -0.3259,-0.0815 0.2037,-0.28518 -0.041,-0.24442 -0.4888,0.12221 -0.082,-0.16295 0,-0.0815 0,-0.16295 c 0.3323,-0.11704 0.5134,-0.41156 0.4481,-0.93699 l -0.4481,-0.77403 -0.041,-0.16296 0.5703,-0.36664 z m 31.1652,0 0.5296,0.12222 -0.2037,0.69255 -0.5296,-0.12222 0.2037,-0.69255 z m -28.9246,0.28516 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12221 -0.041,-0.16296 z m 4.7257,0 0.1223,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2036,-0.0407 z m 8.5145,0.0407 0.2037,0.0815 -0.2445,0 0.041,-0.0815 z m 16.9066,0 0.5296,0.12222 -0.1222,0.48886 0.4481,0.12222 0.163,-0.69256 0.4481,0.57034 -0.5703,0.81477 -0.163,1.87398 -0.4481,0.52959 -0.2445,-0.0407 c 0.5137,-1.92152 0.411,-2.92094 -0.2444,-3.09613 l 0.2037,-0.69256 z m -20.0435,0.0815 0.2037,0 -0.1222,0.44813 -0.163,0 0,-0.2037 0.082,-0.24443 z m 1.7925,0 0.2037,0 c 0.1368,0.16131 0.1865,0.38537 0.1629,0.65182 l -0.1222,0 -0.2444,-0.65182 z m -2.5666,0.12222 0.2037,0.36665 -0.2851,-0.0815 0.082,-0.28517 z m 12.5476,0.16295 0.2444,0.0815 0.2852,0.20369 -0.1629,0.24444 c -0.1007,-0.099 -0.2134,-0.17919 -0.326,-0.24444 l -0.041,-0.28517 z m -7.17,0.16296 0.2851,0 c 0,0.0715 0.024,0.14662 0.041,0.20369 l -0.4074,0 0.082,-0.20369 z m 0.7333,0.0815 0.4074,0.12222 -0.326,0 -0.082,-0.12222 z m -6.7219,0.12222 0.2036,0.0815 -0.082,1.22215 -0.082,0.20369 -0.2037,-0.0815 0.041,-0.48886 0.2037,0 0,-0.65182 -0.082,-0.28517 z m 14.6252,0.0407 0.3259,0.0815 -0.1629,0.65181 -0.2037,-0.0815 -0.041,-0.52959 0.082,-0.12222 z m -15.3585,0.0407 0,0.20369 -0.1223,0 0.1223,-0.20369 z m -1.4666,0.16295 0.1222,0 0.1222,0.16295 0.082,0.28517 -0.3259,-0.40738 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20369 -0.163,0 0.041,-0.20369 z m -5.2553,0.16295 -0.041,0.24443 c -0.1413,0.67658 -0.1365,1.03082 0.1222,1.09994 l -0.2445,0.2037 -0.082,0.16295 -0.041,0.24443 -0.1222,0.0407 -0.1629,-0.57034 0.4481,-0.0815 c -0.206,-0.77057 -0.1475,-1.24296 0.1222,-1.34437 z m 1.8739,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.4889,0.73329 0.2852,0.0815 -0.3259,0.12222 -0.081,0.24443 0.2444,0.28517 -0.082,0.16295 -0.4074,0.57034 0.041,0.85551 -0.6518,1.30363 0.2444,0.28518 -0.4888,-0.16296 0.3666,-1.34437 -1.1814,0.73329 0.2444,0.28517 -0.8555,0.44813 -0.082,1.01846 -0.4074,0.69255 c 0.08,-0.4994 0.011,-0.79803 -0.2037,-0.85551 l 0.2852,-0.16295 0.041,-0.2037 0.2037,-1.30363 c 0.1374,-0.12988 0.2764,-0.27147 0.4074,-0.40738 l 0.4481,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2444,-0.5296 0.051,-0.0555 0.1128,-0.10648 0.1629,-0.16296 l 0.2445,0.0407 0.082,-0.36665 0.3666,-0.16294 -0.1629,-0.16296 c 0.072,-0.0919 0.1339,-0.19122 0.2037,-0.28517 l 0.7333,0.0407 0.1629,-0.61109 -0.4074,-0.1222 c 0.071,-0.1075 0.1351,-0.21611 0.2037,-0.32591 l 0.2852,0.0815 0.2852,-1.0592 c 0.1084,-0.19991 0.2226,-0.40489 0.3259,-0.61108 l -0.1222,-0.16295 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4888,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.2037 l 0.2444,-0.24443 z m -22.1619,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.4319,0.20369 0.4889,0.12222 -0.4074,0.93698 c -0.091,-0.13611 -0.2088,-0.26481 -0.3666,-0.36664 l 0.2851,-0.69256 z m -10.8773,0.16296 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9778,0.0407 0.4074,0.12221 -0.041,0.16296 -0.2037,0.0407 -0.163,-0.28518 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.163,0.65182 -0.2852,-0.57034 0.041,-0.16295 z m 23.9137,0.0407 c 0.4519,0.27924 0.6049,0.76826 0.4074,1.50732 l -0.5296,1.0592 c -0.1998,1.12234 -0.2915,1.89101 -0.2852,2.40358 l -0.163,-0.0407 0.041,-0.77403 0.1223,-0.48886 -0.3667,-0.77404 0.8963,-2.1184 -0.1223,-0.77403 z m -21.836,0.12222 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.0994,0 0.041,0 -0.1629,0.57034 c -0.021,0.0768 -0.028,0.13059 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.962,0.0407 0.2037,0.0407 0.1222,0.24443 -0.3667,-0.12221 0.041,-0.16295 z m -4.1147,0.20368 0.041,0.2037 -0.2851,0.5296 -0.041,-0.16295 0.2851,-0.57035 z m 3.6258,0 c 0.1218,0.0561 0.2252,0.11427 0.4074,0.16296 l -0.082,0.36665 -0.163,-0.24443 -0.082,-0.0407 -0.082,-0.24444 z m 31.1245,0.0815 0.2444,0.0815 -0.1222,0.48887 -0.2444,-0.0815 0.1222,-0.48887 z m -25.4618,0.0815 c 0.1305,0.006 0.286,0.0201 0.4481,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69255 l -0.4481,-0.77403 c 0.047,-0.1747 0.2133,-0.25603 0.4889,-0.28517 l 0.3666,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.20369 -0.041,0 -0.3259,0 0.2037,-0.24443 z m -8.1478,0.0407 0.2852,0 -0.1223,0.5296 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5703,0 0,0.0815 -0.3666,0.57034 0.1222,0.16295 -0.6111,-0.16295 c 0.1071,-0.16058 0.1904,-0.4143 0.2852,-0.65182 z m 1.0592,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2407,0 0.4888,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44812 0,0.0407 -0.082,0.16296 0.041,0.44813 -0.163,0.0407 c -0.1808,-0.20535 -0.2426,-0.4948 -0.2036,-0.85551 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.016,-0.15376 0.041,-0.24443 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.20369 -0.2445,0 0,0.48887 0.2037,0 -0.041,0.20368 -0.3259,0.52961 0,-0.28517 -0.4888,0.12221 -0.041,-0.52959 0.2444,-0.0407 0,-0.48887 -0.2852,0.0407 -0.041,-0.24443 z m -7.6997,0.0815 0,0.77403 c -0.2652,-0.0831 -0.4074,-0.28893 -0.4074,-0.65182 0.1827,3e-5 0.3,-0.0425 0.4074,-0.12221 z m 5.5405,0 0.4074,0.12221 -0.082,0.36665 -0.4481,-0.12221 0,-0.0407 0.1629,-0.2037 -0.082,0 0.041,-0.12221 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24442 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.20369 0.2444,-0.36664 0.163,-0.28517 -0.4481,-0.12222 0.5703,-0.28517 z m -18.8214,0.0815 c 0.092,0.0158 0.1762,0.0407 0.2852,0.0407 l 0,0.65182 -0.2444,-0.0815 -0.041,0.1222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.2037 0.1629,0 -0.5296,0.77403 -0.2444,-0.3259 -0.082,0.36664 0.2444,0.0815 -0.041,0.0407 0.5296,0.12221 0.082,0.24444 -0.1222,0.20369 c -0.1549,0.0762 -0.2587,0.22703 -0.2851,0.44812 l -0.041,0.12221 -0.163,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44812 -0.163,-0.0407 c -0.084,-0.43314 -0.1523,-0.79239 -0.2444,-1.0592 l 0.4481,-1.62955 z m -7.2922,0.44813 c 0.2126,0.11968 0.3124,0.32245 0.2852,0.61107 l -0.2037,-0.12221 -0.082,-0.48886 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13715 -0.06,0.28312 -0.082,0.40738 -0.092,0.0158 -0.1762,0.0407 -0.2852,0.0407 l 0,0.48886 -0.2444,0 0.082,-0.93698 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2851,0 0.1222,0.0407 0,0.40738 -0.2036,0 0,0.20369 0.082,0.36665 c -0.1679,-0.14917 -0.2705,-0.48918 -0.2852,-1.01846 z m 25.3395,0.0407 0.4482,0.12221 -0.1223,0.40738 -0.4481,-0.12221 0.1222,-0.40738 z m -33.9354,0.0407 c -0.044,0.0495 -0.077,0.10968 -0.1223,0.16294 l -0.041,-0.12221 0.163,-0.0407 z m -0.8963,0.0407 0.4481,0.93699 -0.2037,0.0407 -0.082,-0.0407 c 0.01,-0.0447 0.028,-0.075 0.041,-0.12222 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.5177,0 0.4074,0.12221 -0.082,0.24444 -0.3666,-0.24444 0.041,-0.12221 z m 0.7333,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44812 z m 7.1293,0.0815 0.082,0.12222 0.2852,0.0815 0.082,-0.0407 -0.2037,1.34437 -0.6926,2.52579 -0.2444,0.48887 -0.082,-0.36665 0.2037,-0.28517 -0.2037,-0.2037 -0.2444,0.0815 -0.163,-0.28517 0.2852,-0.12221 0.2037,0.0407 0.041,-1.0592 0.2851,-0.97772 0.4074,0.0815 0.1223,-0.52959 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.181,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2445,0.0815 -0.082,0.24443 0,0.0407 -0.163,0.52961 -0.2037,-0.0815 0.2037,-0.81478 z m -20.2472,0.2037 0.4074,0.12221 -0.1222,0.36665 -0.2852,-0.48886 z m -10.6328,0.32591 0.041,0.16295 -0.1222,0.0407 0,-0.16295 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36664 0.2036,0.0407 -0.2444,0.12222 -0.1222,0.48887 -0.163,-0.61109 0.2037,-0.48885 z m 27.4172,0 0.3667,0.0815 c -0.05,0.18576 -0.025,0.33528 0,0.44812 l -0.3259,-0.0815 c 0.053,-0.20002 0.019,-0.3353 -0.041,-0.44811 z m -3.9517,0.0815 0.041,0 c -0.023,0.12024 -0.051,0.23874 -0.082,0.36664 l -0.041,0 0.082,-0.36664 z m -17.314,0.0407 0.2037,0.0407 -0.2444,0.81477 -0.2037,-0.0407 0.2444,-0.81477 z m 14.7475,0.0407 c 0.1067,0.0985 0.2579,0.168 0.4074,0.24444 l -0.163,0.3259 -0.1629,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1097,-0.0903 -0.163,-0.12222 l 0.1222,-0.36664 z m -21.9175,0.16296 0.082,0 c 0.01,0.0632 0,0.1434 0,0.20368 l -0.082,-0.20368 z m 32.4689,0 0.3259,0.52959 -0.4482,-0.12221 0.1223,-0.40738 z m -33.243,0.36664 0.041,0.12221 -0.1629,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7627,0.16295 0.2037,0.0815 -0.7333,2.81096 -0.2037,-0.0815 0.7333,-2.81096 z m 9.4514,0 -0.2037,0.81477 0,0.0815 c -0.07,0.01 -0.1707,0.0316 -0.2444,0.0407 l 0.2444,-0.89625 0.2037,-0.0407 z m 1.5888,0.16296 c 0,0.0512 0,0.10831 0,0.16295 -0.1403,0.1712 -0.5032,0.28725 -1.0184,0.40739 l 0.082,-0.24443 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2375,0.33744 0.3667,0.48885 l 0,0.12222 0.1629,0.0407 c 0.068,0.0685 0.1302,0.14363 0.2037,0.20369 l -0.1629,0.65182 -0.2037,-0.0407 c 0.071,-0.26673 -0.1677,-0.49255 -0.6111,-0.61108 l 0.2444,-0.8555 z m 1.0185,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5812,0.0407 0.4482,0.12222 -0.041,0.20369 -0.4889,-0.12221 0.082,-0.2037 z m -24.1989,0.0407 0.1223,0.44812 0.2444,0.89625 -0.4481,0.73329 0.3259,-0.12221 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24444 -0.2445,-0.0815 -0.082,0.44812 -0.2444,-0.0407 0.6518,-2.40357 z m -1.2221,0.0815 0.2037,0.0815 -0.1222,0.52959 -0.2037,-0.0407 0.1222,-0.57033 z m 7.1293,0 0.2037,0.0407 -0.082,0.36664 -0.2037,-0.0407 0.082,-0.36664 z m 14.5438,0.0407 -0.082,0.24442 0.6925,0.16296 0.082,-0.20369 -0.6925,-0.20369 z m -28.6802,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.126,0.17959 -0.3024,0.32895 -0.5296,0.44811 l -0.041,-0.20369 c 0.1448,-0.11437 0.3062,-0.20676 0.4889,-0.24442 z m 13.3623,0.20368 c 0.1273,0.11381 0.2392,0.22321 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.9549,0.20369 0.041,0 0.3259,0.12222 c 0.029,0.10642 0.051,0.19752 0.082,0.28517 l -0.2037,0.77403 -0.2037,-0.0407 c 0.1427,-0.53336 0.01,-0.85797 -0.2852,-0.93698 l -0.2037,0.0815 0.041,-0.16296 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5666,0.0407 0.082,0.24444 -0.1222,-0.0407 0.041,-0.2037 z m 13.4439,0 0.2037,0 c -0.015,0.10051 -0.023,0.21902 -0.041,0.32591 l -0.163,0.16296 0,-0.48887 z m 8.5551,0 0.3667,0 -0.041,0.16296 -0.4074,-0.12222 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0185,0 0.4074,0 0,0.2037 c -0.1951,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28518 z m -19.4324,0.0815 0.1629,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8104,0.12222 0,0.5296 -0.041,0.0407 -0.041,0.16295 -0.2444,0 0.2037,-0.69255 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16295 0,0.12222 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2851,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0555,0.16295 -0.082,0.36665 -0.3667,0 -0.1222,-0.12221 0.041,-0.16296 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9331,1.0147 0.6925,1.91471 l -0.4888,-0.12222 -0.163,0.52961 0.3667,0.57033 -0.8555,1.2629 0.2037,0.0407 -0.2445,0.12221 -0.082,0.28518 0.163,1.30363 -0.5704,0.24443 0.2037,0.0407 -0.3666,0.57034 c -0.1387,0.96296 0.161,1.50358 0.937,1.71102 l -0.2445,0.16294 -0.082,0.24444 0.082,0.61108 -1.3444,-2.03693 -0.2036,-0.0407 0.1629,-0.61109 0.4481,0.0815 0.041,-0.16295 c -0.2956,-0.079 -0.5344,-0.51721 -0.6518,-1.2629 l 0.163,-0.61107 0.2037,0.0407 -0.082,0.44811 0.6925,0.2037 0.082,-0.44812 -0.4074,-0.12221 0.2445,-0.81478 0.4074,0.12221 0.2036,-0.81476 -0.4073,-0.12222 0.082,-0.36665 0.4481,0.12222 0.082,-0.36664 -0.4074,-0.12222 0.163,-0.61108 c 0.3695,0.0988 0.5983,-0.13823 0.8147,-0.65181 0.1069,-0.4 -0.01,-0.61478 -0.4481,-0.7333 l 0.163,-0.61108 z m -24.5248,0.0407 0.4889,0.12222 -0.4074,0.57033 -0.2445,-0.0815 0.163,-0.61108 z m 23.3026,0 c 0.1377,0.0728 0.2979,0.11504 0.4481,0.16296 l -0.1222,0.40738 -0.3259,-0.5296 0,-0.0407 z m -16.7029,0.0815 0.6518,0 0.2037,0.24443 0.163,0 -0.163,0.61108 -0.6111,0 -0.2444,-0.85551 z m 5.7034,0.20369 0.082,0 c -0.036,0.16124 -0.082,0.31655 -0.1222,0.44812 l -0.082,0 0.1222,-0.44812 z m 4.8887,0.0407 0,0.16295 -0.082,0.24443 -0.2037,0 0.041,-0.20369 0.2444,-0.20369 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.6366,0.0815 0.6518,0.36665 -0.2852,1.01846 -0.2037,-0.0815 -0.2444,-0.93698 0.082,-0.36665 z m 20.899,0 0.4889,0.12222 0.3666,1.14067 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.4481,-0.1222 -0.041,0.20368 0.2444,0.7333 -0.2444,0.12222 c -0.1069,0.40002 0.086,0.69625 0.5296,0.81477 l -0.5703,0.24443 0.082,-0.36665 -0.4074,-0.12222 -0.3259,2.93318 -0.082,0.16295 -0.5704,-0.3259 0.082,-0.2037 0.4074,-0.77403 c 0.069,-0.55307 -0.1193,-0.87895 -0.4889,-0.97773 l 0.1223,-0.36664 0.4888,0.12222 0.041,-0.24444 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09994 0.4482,-1.5888 z m -18.9843,0.0407 0.4074,0.12221 -0.041,0.2037 -0.4074,-0.12222 0.041,-0.20369 z m 11.2032,0 0.1629,0 c 0.066,0.0584 0.1536,0.1174 0.2445,0.16295 l -0.041,0.12222 -0.082,0.28517 -0.2852,-0.5296 0,-0.0407 z m -19.9621,0.0407 0.3259,0.48886 -0.2444,-0.24443 -0.2037,-0.0407 0.1222,-0.20369 z m 1.1,0.0815 0.1629,0.0407 0,0.16296 -0.1629,0.65182 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0837,0 c 0.044,0.10287 0.088,0.18378 0.163,0.2037 l 0.2037,0.0407 0,0.44812 -1.711,6.35521 -0.4889,-0.12222 0.2852,-0.12222 0.041,-0.20368 0.6925,-3.46277 0.2852,-0.12222 0.041,-1.0592 0.4889,-1.95546 z m 1.0185,0 0.2037,0.0407 -0.2037,0.65182 -0.2037,-0.0815 0.163,-0.57035 0.041,-0.0407 z m -15.6437,0.12222 0.041,0.44813 -0.1222,0.0407 -0.082,-0.32591 0.1629,-0.16296 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1346,0.0336 0.3236,0.0612 0.4888,0.0815 l -0.1222,0.48886 -0.4481,-0.16295 0.082,-0.40739 z m -20.9806,0.32591 0.4889,0.12222 -0.082,0.20369 -0.163,1.3851 c 0.01,-0.1844 -0.023,-0.35228 -0.082,-0.57033 l -0.2036,-0.81477 0.041,-0.32591 z m 3.2999,0.0407 0.4481,0.0815 c -0.1069,0.39997 -0.01,0.695 0.2852,0.77403 l -0.041,0.20369 c -0.4434,-0.11854 -0.7027,-0.10372 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61109 0.3666,-0.57033 z m 16.8251,0.0407 0.2852,0 -0.082,0.24443 -0.2037,0 0,-0.24443 z m -13.7697,0.16295 0.2037,0.0407 -0.041,1.0592 -0.4074,-0.12221 0.2444,-0.97773 z m 20.125,0.2037 0.4481,0.16294 -0.041,0.16296 -0.4888,-0.12222 0.082,-0.20368 z m 3.0962,0 0.2037,0.0407 -0.4482,0.93699 -0.2037,-0.0407 0.2037,-0.81478 0.2445,-0.1222 z m -19.514,0.1222 0.937,0.0407 -0.1222,0.57035 -0.9777,0 0.1629,-0.61109 z m 8.5959,0.16296 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.20369 -0.2852,0 0,-0.20369 z m 2.3629,0 0.3259,0 0,0.20369 -0.3667,0 0,-0.12221 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.5296 -0.2852,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1327,-0.43445 0.163,-0.61108 z m -4.3184,0.16295 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m 32.306,0 0.2037,0.0407 c -0.107,0.40001 -0.01,0.69503 0.2851,0.77403 l -1.4258,3.50351 0.2037,0.24444 -0.041,0.20369 -0.5296,0.89625 -0.2037,-0.0407 0.1629,-1.42585 0.2444,-0.12221 0.1223,-0.44813 0.6925,-3.42203 0.2852,-0.2037 z m -35.3614,0.12222 0.1222,0.85551 0.2037,0.12221 c -0.012,0.0965 -0.014,0.18349 -0.041,0.28518 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.1372 0.041,0.2037 l -0.3666,0.16295 c -0.01,-0.0435 -0.032,-0.0797 -0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 0.163,-1.34437 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6925,0.0815 0.1222,-0.44813 z m -4.8071,0.24443 0.2036,0.0815 -0.1629,0.5296 -0.2037,-0.0407 0.163,-0.57034 z m 28.9653,0 0.2037,0.0407 -0.2852,1.01846 -0.2037,-0.0815 0.2852,-0.97773 z m -20.4917,0.12222 0.3667,0.5296 -0.163,0.61108 -0.2037,-0.32591 -0.4074,-0.12222 c -0.1069,0.40001 -0.412,0.56666 -0.8555,0.44813 0.107,-0.40003 -0.01,-0.65551 -0.4481,-0.77404 l 0.041,-0.20369 0.4074,0.12221 0.1629,0.24444 c 0.08,-0.29997 0.4464,-0.4543 1.1,-0.5296 z m 10.8366,0.20368 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8962,0.24444 -0.4481,1.75176 c -0.2955,-0.079 -0.3768,-0.54439 -0.1629,-1.34437 l -0.4482,-0.0815 0.163,-0.57035 z m -6.1516,0.0407 0.2852,0.52961 -0.041,0.20369 -0.2852,-0.57034 0.041,-0.16296 z m -28.5579,0.0815 -0.2037,1.62955 -0.8148,0.24443 0.2444,-0.89625 c 0.4491,-0.22295 0.7309,-0.54686 0.7741,-0.97773 z m 0.6925,0 0.2445,0.0815 -0.082,0.36665 -0.2852,-0.0815 0.1222,-0.36665 z m 21.8768,0.0407 0.163,0.0407 0,0.24443 -0.4074,0 0.2444,-0.28517 z m -9.5329,0.0407 0.2037,0 0.163,0.24443 -0.2852,0 -0.082,0 0,-0.0407 0,-0.20369 z m -6.9663,0.24443 0.4888,0.12222 -0.082,0.24443 -0.5296,0.93699 -0.1629,-0.24444 -0.2037,-0.0815 -0.5296,0.28518 0.041,0.65181 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.163,-0.24444 -0.2037,-0.0407 -0.2444,0.12222 0.2037,-1.62953 0.6111,0.16294 0.1222,-0.40738 c 0.739,0.19754 1.156,0.0741 1.2629,-0.32591 z m 2.8517,0.12222 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2445,-0.0407 0.1223,-0.40739 z m 6.6404,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2444,-0.0407 0.1222,-0.44812 z m -9.2884,0.12221 0.2037,0.0815 -0.2445,0.0815 0.041,-0.16296 z m -0.041,0.28517 0.1629,0.12221 0,0.0407 -0.2037,-0.0407 0.041,-0.12221 z m 15.7252,0.0815 c 0,0.20654 -0.13,0.30826 -0.326,0.36665 l -0.5296,0.0407 0,-0.16295 0,-0.0407 0.8556,-0.2037 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1748,0.11085 0.2037,0.2037 l -0.2445,0 0,-0.2037 z m 1.548,0 0.4074,0 0.082,0.12222 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.20368 -0.2037,-0.20368 -0.4074,0 -0.1629,-0.24444 0.1222,-0.44812 c 0.1892,0.0505 0.3495,-0.044 0.4889,-0.24444 z m 1.2222,0 0.3259,0 c 0.015,0.0191 -0.011,0.0592 0,0.0815 -0.099,0.33787 -0.3273,0.59857 -0.6518,0.7333 l -0.1222,-0.0407 0.4481,-0.77404 z m 4.4405,0 -0.041,0.2037 -0.4888,0 0,-0.12222 c 0.2001,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.8469,0.0815 0.4074,0.12222 -0.1222,0.44812 -0.4074,-0.12221 0.1222,-0.44813 z m 9.7366,0.12222 0.1629,0 -0.1629,0.57034 0,-0.57034 z m -11.9772,0.16295 -0.082,0.36665 0.4074,0.12222 0.1222,-0.36665 -0.4482,-0.12222 z m 4.9701,0.0407 0.6926,0.2037 -0.1223,0.36665 0.4482,0.12221 0.1629,-0.61108 0.3259,0.36665 c -0.3477,0.17231 -0.5886,0.44676 -0.7333,0.81477 -0.062,0.0265 -0.088,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44386 -0.02,-0.72708 -0.4074,-0.81476 l -0.2036,-0.0407 c 0.071,-0.11464 0.1184,-0.28147 0.1629,-0.44813 z m 16.9066,0 0.4074,0.12222 -0.082,0.24443 -0.4074,-0.12222 0.082,-0.24443 z m -14.4215,0.2037 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4481,0.0815 -0.082,0.20368 -0.4074,-0.12221 0.041,-0.16295 z m 20.1657,0 0.163,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.163,0.24442 0.2037,0.0407 c 0.1185,0.0317 0.2232,0.0419 0.3259,0.0407 -0.1474,0.0926 -0.295,0.12532 -0.4889,0.0815 l -0.2037,0.65182 c 0.3877,0.0877 0.6346,0.21897 0.7741,0.44812 l -0.4889,0.24443 0.4074,0.0815 0.082,-0.28518 c 0.1221,0.22482 0.1522,0.50258 0.041,0.85552 l 0.6518,0.16295 -0.3666,1.09995 -0.6111,-0.12222 0,2.1184 -1.3444,1.14068 0.2037,0.32591 -1.7518,2.40357 0.4481,-0.12221 0.2445,0.0815 -0.1222,0.40738 -0.2852,-0.0407 -0.2852,-0.3259 -0.2852,-0.0407 -0.1222,0.48886 -0.2851,-0.0815 2.485,-7.78105 0.2445,-0.0407 -0.2852,0.97772 0.6518,0.12222 0.4074,-1.30363 -0.4481,-0.0815 0.041,-0.12222 -0.2037,-0.0815 -0.2852,0 0.041,-0.12221 0.2852,-0.0407 0.082,-0.20369 -0.2445,-0.0815 0.163,-0.57035 -0.2037,-0.28517 0.082,-0.20368 0.2852,-0.0815 z m 6.6812,0.0407 0.2037,0.0407 -0.041,0.12221 -0.163,-0.16295 z m 7.8626,0 0.041,0.16295 -0.2852,-0.0815 0.2445,-0.0815 z m -20.0435,0.12221 0.4481,0.77403 -0.3259,0.16296 -0.163,-0.0407 0.041,-0.89625 z m -0.6926,0.0407 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44812 z m 19.8806,0.16295 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12221 z m -1.3851,0.12221 0.082,0.12222 0,0.28517 -0.4482,-0.12221 0.163,0 0.2037,-0.28518 z m 3.8702,0.12222 0.2444,0.0815 0,0.28517 0,0.65181 0,0.12222 -0.3259,0.12222 -0.4074,-0.0815 0.2852,-1.14068 0.041,0 c 0.064,-0.008 0.1027,-0.0322 0.1629,-0.0407 z m -25.3804,0.12222 0.3667,0.48886 -0.4889,-0.12221 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4476,0.12221 -0.041,0.2037 -0.774,0.0815 -0.2037,-0.0815 0,-0.0407 1.0184,-0.16296 z m 6.4367,0 -0.041,0.2037 0.4074,0.0815 0.041,-0.16295 -0.4074,-0.12222 z m -27.1728,0.24444 0,0.20369 -0.4074,0.20368 0.3259,0.32592 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32592 -0.1222,-0.0407 0,-0.0407 0.5296,-0.3259 z m 3.1369,0 0.3667,0.0815 -0.2445,0.69255 -0.3259,-0.0815 0.2037,-0.69255 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6067,0.0815 0.2037,0.0407 -0.3667,1.34436 c -0.019,-0.29821 -0.091,-0.48678 -0.2444,-0.57033 l 0.041,-0.32591 0.3666,-0.48886 z m 10.3069,0.0815 0.2444,0.0815 -0.1222,0.44812 -0.2852,-0.0407 0.163,-0.48886 z m 2.1184,0.0407 0.2444,0.0407 -0.082,0.24442 0.041,0.16296 c -0.01,0.1969 0.032,0.3372 0.1223,0.44812 l 0,0.0815 -0.163,0 -0.4074,0.44812 -0.2037,0 0.2445,-0.85551 0.1629,-0.28517 -0.041,-0.0407 0.082,-0.24442 z m 1.3851,0.0407 0.2445,0.28516 0,0.28517 c -0.1626,-0.11746 -0.281,-0.25346 -0.4074,-0.36665 l 0.1629,-0.20368 z m -7.6996,0.20368 0.2852,0.0407 -0.163,0.48887 -0.2444,-0.0815 0.1222,-0.44813 z m 13.9734,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16295 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44813 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42585 -0.6518,0.81477 0.3666,0.0815 -0.4481,0.12222 -0.082,0.24443 0.2852,0.3259 -0.041,0.2037 -0.5703,0.61108 0.082,0.97772 -0.8556,1.42585 0.2852,0.28517 -0.6111,-0.12222 0.4482,-1.54806 -1.5074,0.85551 0.2852,0.28517 -1.0185,0.44812 c -0.1111,-0.21925 -0.218,-0.41747 -0.3259,-0.65181 0,-0.0107 0.01,-0.03 0,-0.0407 l 0.1222,-0.77403 0.2852,0.0815 0.6926,0.44812 c -0.2006,-0.67951 -0.5593,-1.09061 -1.1407,-1.22216 l 0.2037,-0.69255 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 -0.082,-0.0407 c 0.068,-0.22573 0.1079,-0.44975 0.1629,-0.65181 l 0.163,-0.12222 0.041,-0.20369 -0.041,-0.12222 c 0.059,-0.23983 0.045,-0.41041 0.082,-0.61107 0.2165,-0.0412 0.45,-0.15497 0.6925,-0.36665 -0.087,0.52223 -0.036,0.83278 0.2445,0.89624 l -0.3259,0.2037 -0.041,0.0815 c -0.1805,0.11243 -0.3752,0.2435 -0.5296,0.36665 l -0.041,0.24443 0.4074,0.12221 -0.326,1.67029 0.5704,0.12221 0.1222,-0.40738 0.4481,-0.2037 -0.2851,-0.28516 -0.2852,-0.0815 0.082,-0.20369 1.5073,0.12221 0.2037,-0.69256 -0.5296,-0.12221 0.1222,-0.40738 0.5704,0.12221 0.3666,-1.14067 0.2445,-0.16296 -0.2037,-0.0407 0.4888,-1.54806 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36664 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.163,0.24443 0.2037,0.0815 0.3259,-0.12222 -0.041,0.16296 c -0.3962,0.0368 -0.7256,0.11789 -0.9777,0.20369 l -0.041,0 -0.163,-0.0407 0.2852,-0.44812 0.2444,-0.0815 z m -12.0179,0.0815 0.6111,0.12221 -0.1223,0.40739 -0.4888,-0.5296 z m 3.9516,0.12221 0.326,0.0815 -0.041,0.16295 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8104,0.0815 0.2851,0.0815 -0.082,0.61107 -0.3666,0.12222 0.041,-0.40738 0.1222,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1223,0.36664 -0.2036,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4073,0.1222 -0.082,0.44813 -0.4073,-0.24443 0.082,-0.3259 z m -26.3581,0.0407 0.4074,0.1222 -0.082,0.2037 -0.4074,-0.12222 0.082,-0.20368 z m 1.6703,0 0.2037,0.24442 -0.041,0.20369 -0.3259,-0.32591 0.1629,-0.1222 z m 18.1695,0.0407 c 0.1619,0.0875 0.2758,0.18386 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.20369 l -0.5296,0 c 0.031,-0.17321 0.06,-0.33608 0.082,-0.48886 z m -3.2591,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1402,0.20369 -0.082,0.57035 -0.041,0.24442 -0.2851,-0.0815 0.041,-0.61108 0.3666,-0.12222 z m -3.2998,0.0815 0.2444,0.0407 -0.1222,0.48887 -0.2852,-0.0407 0.163,-0.48887 z m 10.7143,0.0407 0.7333,0.16296 0,0.0815 -0.082,0.24444 -0.082,0.12221 0,0.16295 0,0.0407 -0.1222,0.28517 -0.082,0 -0.2037,-0.28517 c 0.017,-0.3233 -0.065,-0.59919 -0.1629,-0.81477 z m 20.0028,0 c -0.1782,0.66666 0.096,1.38754 0.6926,2.1184 l 0.2444,-0.12221 0.163,0.24443 -0.041,0.16295 c -0.2464,-0.0658 -0.4958,0.0124 -0.6926,0.16296 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3667,0.12222 c 0.1402,-0.44387 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2851,-0.20369 c 0.2164,-0.51356 0.4452,-0.70985 0.8147,-0.61107 l 0.1223,-0.40739 -0.6111,-0.16296 0.8555,-0.65181 z m 2.4036,0.0407 0.3259,0.48887 -0.1222,0.44811 -0.2852,-0.57033 0.082,-0.36665 z m -17.9658,0.0815 0.2851,0.0815 -0.1222,0.40738 -0.2444,-0.32591 0.082,-0.16295 z m -14.2586,0.0407 0.2851,0.0407 -0.082,0.20369 c -0.113,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.7659,0 0.7333,0 -0.082,0.20369 -0.6926,0.0815 c 0.022,-0.10672 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6769,0 0.2037,0.0407 -0.2037,0.81477 -0.2037,-0.0407 0.2037,-0.81477 z m -28.4358,0.16296 0.5704,0.12222 -0.2445,0.69255 -0.3666,-0.61108 0.041,-0.20369 z m 2.1592,0.0407 -0.082,1.14068 0.6111,0.16295 0.082,-1.18141 -0.6111,-0.12222 z m 19.5546,0.12222 0.163,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40737 z m -13.4438,0.0407 0.1222,0 0.2852,0.73329 -0.1222,0.16296 -0.163,0 -0.2037,-0.61108 c 0,-0.0113 -0.01,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13406 0.082,-0.20369 z m 6.3145,0 0.4074,0 -0.081,0.48886 -0.3259,0 0,-0.48886 z m 4.0332,0 0.2444,0.0407 -0.041,0.16296 -0.2444,-0.0815 0.041,-0.12221 z m -25.7062,0.0815 0.082,0.0407 -0.041,0.2037 -0.082,-0.0407 0.041,-0.2037 z m 38.1723,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.20369 z m -21.5509,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28517 z m -10.918,0.24443 c 0.2732,-0.0456 0.6795,-0.0134 1.1814,0.0407 l -0.1222,0.40739 c -0.3875,-0.0877 -0.75,0.1822 -0.937,0.77403 l -0.5703,-0.89625 c 0.053,-0.16645 0.1749,-0.28028 0.4481,-0.32591 z m 14.0957,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.774,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.1549,0.0407 0.4888,0.12222 -0.2852,1.01846 -0.3666,-0.48886 0.163,-0.65182 z m -17.9659,0.0407 0.2444,0.0407 -0.2851,0.0815 0.041,-0.12221 z m 10.8366,0 0.2036,0.0407 -0.041,0.12221 -0.2444,0.12222 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.5736,0.12221 -0.1222,0.0815 -0.082,0.16296 0.2037,0.24443 0,-0.48887 z m -13.8105,0.0815 0.4074,0.0815 -0.3259,0.44812 -0.3259,-0.0815 -0.041,-0.16295 0.2851,-0.28517 z m -10.4291,0.0407 0.1222,0.0815 0,0.24443 -0.163,-0.0407 c 0.032,-0.10244 0.017,-0.18858 0.041,-0.28517 z m 13.8512,0.0407 0.6111,0.5296 0.041,0.0407 -0.1223,0.61109 c -0.1737,-0.13018 -0.3351,-0.28386 -0.4888,-0.36665 -0.043,-0.2456 -0.071,-0.51515 -0.041,-0.81477 z m -8.5552,0.0407 0.3667,0 0,0.24443 -0.3667,0 0,-0.24443 z m -16.4585,0.0815 0.163,0.0407 -0.1223,0.40737 -0.2851,-0.0815 0.082,-0.28517 0.1629,-0.0815 z m 4.1961,0.20369 0.5296,0.12221 0,1.18141 c -0.3391,-0.0767 -0.5209,-0.50903 -0.5296,-1.30362 z m 1.7925,0.16295 -0.2444,0.69256 0.6518,0.16295 0.2037,-0.69256 -0.6111,-0.16295 z m 3.0147,0.24443 c 0.5369,0.1214 0.591,1.23745 0.163,3.29982 -0.1491,0.24871 -0.3559,0.70204 -0.5704,1.14068 l -0.5703,-0.12222 -0.5296,-1.34436 c 0.3877,0.0877 0.5931,-0.0857 0.7333,-0.52961 l 0.082,-1.18142 0.2037,0.24444 0.6518,0.16295 -0.163,-1.67028 z m 9.6959,0.0407 0.1222,0.12222 -0.2445,0.28517 -0.1222,0.44811 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44812 0.082,-0.12222 0.2445,0.24444 0.3666,-0.44813 z m 5.3775,0 c 0,0.306 -0.1563,0.44815 -0.5704,0.44813 l 0,0.20369 0.4074,0 -0.3666,0.65181 -0.4074,-0.0815 0.082,-0.0815 0,-0.28518 -0.041,-0.0407 0.4074,-0.77403 c 0.1595,-0.009 0.3126,-0.0407 0.4888,-0.0407 z m -13.4438,0.0407 0.2851,0.0407 -0.4481,1.26289 -0.082,0.32591 c 0.198,0.0814 0.3666,0.1667 0.5296,0.24443 l -0.2444,0.44812 -0.1223,-0.20369 -0.3259,0.16295 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.27251 0.2037,-0.48886 l -0.2037,0 0.163,-0.48887 0.041,0.0407 0.2851,0 0.163,-1.30363 z m -8.1886,0.0815 0.5704,0.12221 -0.163,0.40739 -0.4074,-0.5296 z m 13.1587,0.0815 0.082,0.0815 -0.163,-0.0407 0.082,-0.0407 z m 4.3591,0 0.3259,0 c -0.046,0.25428 -0.075,0.44865 -0.082,0.65181 l -0.6111,0 0.082,-0.57033 0.2852,-0.0815 z m -3.1369,0.0815 0.082,0.48886 c -0.2043,-0.10676 -0.3489,-0.23499 -0.4482,-0.40738 l 0.3667,-0.0815 z m -1.7518,0.0815 -0.1222,0.48885 -0.163,0 0,-0.40737 0.2852,-0.0815 z m 18.0066,0.0407 0.2037,0.0407 -0.163,0.65181 -0.2037,-0.0815 0.163,-0.61107 z m 0.6518,0 0.4889,0.12221 -0.4074,1.46658 -0.163,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2444,0.0407 l 0,-0.36664 0.3259,-1.22215 z m -21.225,0.0407 0.1223,0 0,0.0407 -0.1223,-0.0407 z m 3.5036,0.12221 c 0.081,0.0361 0.1343,0.0796 0.2037,0.12222 l -0.2445,0.0407 0.041,-0.16295 z m -12.1809,0.0815 0.2851,0.0407 -0.2851,0.89624 -0.2852,-0.0407 0.2852,-0.89625 z m 1.7925,0.16295 -0.1222,0.44812 0.611,0.12222 -0.4888,-0.57034 z m 19.5954,0 c 0.045,0.041 0.1551,0.11945 0.2037,0.16295 l -0.082,0.52961 -0.8963,2.85169 -0.5703,0.81477 0.3666,1.05921 -0.6518,-0.16296 -0.3667,2.07766 -0.5296,-0.12221 0,-0.97773 0.3259,-0.12221 0.082,-0.2037 0.163,-1.46658 0.4889,-0.57034 -0.1222,-0.12222 c 0.028,-0.0546 0.041,-0.12719 0.041,-0.20369 l 0.2036,-0.12222 -0.4073,-0.57033 0.3666,-0.12222 0.2444,0.0407 0.082,-1.14068 0.3667,-1.14068 0.5296,0.12222 0.163,-0.61108 z m 1.2629,0.0815 0.1222,0.16296 -0.163,-0.0407 0.041,-0.12222 z m 1.8332,0.12222 0.082,1.62955 0.4889,0.12221 0.2037,-0.20369 -0.2445,0.81476 c -0.1146,-0.18977 -0.1569,-0.28132 -0.2851,-0.48885 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4481,-1.2629 z m 0.5296,0 0.3667,0.0815 0,0.0815 -0.2445,0.36665 -0.2444,-0.0815 0.1222,-0.44813 z m 3.7887,0.16296 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40738 z m 1.7926,0.24443 0.2036,0.0815 0,1.0592 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.1629,0.12221 l -0.3667,-0.0815 0.326,-1.22216 z m -32.1023,0.0407 0.2445,0.0815 -0.9778,3.09612 -0.2444,-0.0407 0.9777,-3.13686 z m 29.5764,0.16295 0.082,0.0407 -0.1629,0.61108 -0.2037,-0.0407 0.1222,-0.44812 0.163,-0.16296 z m -14.0141,0.16296 0.2037,0 0,0.48886 -0.2037,0 0,-0.48886 z m 11.692,0.0815 0.2037,0.0815 0.041,0.24444 -0.2852,-0.2037 0.041,-0.1222 z m -24.2803,0.0815 -0.163,0.44813 0.6111,0.16296 0.1629,-0.48887 -0.611,-0.12222 z m 27.132,0.0407 0.2037,0.0407 0.041,0.69256 -0.4073,-0.12221 0.1629,-0.61109 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65182 -0.2444,-0.0815 0.1629,-0.61109 z m 31.5727,0.2037 0.4073,0.12221 -0.082,1.0592 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14068 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5547,0.24443 0.041,0 0,0.44813 -0.2037,0 0.163,-0.44813 z m -5.5405,0.0407 0.6926,0.16295 -0.5704,1.18142 -0.3259,0.44812 -0.082,0 0.2037,-0.61107 0,-1.0592 c 0.035,-0.0284 0.048,-0.0738 0.082,-0.12222 z m 5.9479,0.20369 0.4074,0 0,0.48886 0.2444,0 0.041,-0.0407 -0.041,0.28517 -0.3259,0.0815 -0.041,-0.12222 0.041,-0.20369 -0.3666,-0.0815 -0.163,0.0407 c 0.1408,-0.12156 0.2037,-0.25687 0.2037,-0.44812 z m 13.8919,0 0.2445,0.0407 0.1222,0.73329 -0.082,0.24443 -0.4074,-0.61108 0.1222,-0.40738 z m -11.8142,0.2037 0.082,0 -0.2037,0.89624 -0.082,0.0407 -0.2037,-0.20369 c -0.1035,0 -0.1645,0.009 -0.2444,0.0407 l 0.2036,-0.65183 0.4482,-0.1222 z m 0.774,0 0.4889,0 0.1629,0.0407 -0.2444,0.77402 -0.5296,0.32592 -0.2444,0 0.082,-0.2037 0.1629,0 0,-0.20369 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36664 z m 2.8517,0 0.6519,0 -0.082,0.20368 -0.6111,-0.12221 0.041,-0.0815 z m -22.5286,0.16294 0.6519,0.16296 -0.4889,0.61108 -0.3667,-0.0815 0.2037,-0.69256 z m 14.9512,0.12222 0.2037,0 0.3666,0.0815 -0.4073,0.20369 -0.041,0.2037 0.041,0.12221 -0.163,0.0407 -0.2037,0 0.2037,-0.65182 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.20369 -0.2037,-0.0407 0.041,-0.20369 z m -18.8214,0.16295 0.2445,0.0407 -0.041,0.2037 -0.2852,0.0407 0.082,-0.28518 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2444,-0.0815 0,-0.0407 z m 6.1516,0.2037 0.6518,0.12221 0.2852,0.85551 c 0.027,0.314 0.036,0.61618 -0.041,0.93698 l -0.2037,-0.0815 0.163,-0.44812 -0.5704,-0.12222 -0.041,0.2037 0.3259,0.81476 -0.3259,0.12222 c -0.1051,0.33294 -0.023,0.6072 0.2852,0.77403 -0.04,0.10991 -0.074,0.22 -0.1222,0.32591 l -0.2445,0.0815 0.1223,-0.40739 -0.5704,-0.12222 -0.2444,1.75176 c -0.1708,0.17433 -0.368,0.37122 -0.5704,0.5296 l 0.2037,-0.28516 c 0.09,-0.61376 -0.1265,-0.99034 -0.6111,-1.09994 l 0.1223,-0.40739 0.611,0.12222 0.1223,-0.28518 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18141 0.5296,-1.79249 z m -27.3765,0.0407 0.8148,0.40739 -0.3259,1.09993 -0.2852,-0.0815 -0.3259,-1.01846 0.1222,-0.40739 z m 2.4851,0.0407 0.5703,0.12221 -0.082,0.2037 -0.5296,-0.12222 0.041,-0.20369 z m 32.0207,0.12221 0.2852,0.0407 -0.2037,0.69255 -0.2852,-0.0407 0.2037,-0.69255 z m -23.3026,0.0407 0.2037,0 0,0.2037 -0.2445,-0.0407 0.041,-0.16296 z m 10.144,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8142,0.28517 -0.3666,1.34437 -0.041,0 0.4074,-1.34437 z m -11.4883,0.0815 0.2444,0.0815 -0.082,0.20369 -0.2852,0.12222 0.1222,-0.40739 z m 10.3069,0 0.041,0 c 0.027,0.19875 0.01,0.41807 -0.041,0.65182 l -0.163,-0.0407 0.163,-0.61108 z m 1.5888,0 0.1222,0.0407 0,0.20369 -0.1629,-0.0407 0.041,-0.2037 z m -16.3363,0.12222 0.163,0 -0.4481,0.44812 -0.2037,0 0.4888,-0.44812 z m 3.1369,0 0.2852,0 -0.082,0.44812 -0.3259,0 0.1222,-0.44812 z m -22.4471,0.20369 0.082,0.12222 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.2037 z m 20.1657,0 0.5297,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12222 0.082,-0.28517 z m -18.9028,0.0815 0.2037,0.0407 0,0.24443 c -0.066,-0.0966 -0.1383,-0.18401 -0.2037,-0.28517 z m 10.7143,0.20369 -0.082,0.28518 -0.041,0.0815 -0.041,0.12222 -0.1629,-0.20369 0.3259,-0.28518 z m 19.7176,0 0.2037,0.0407 -0.082,0.16296 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.2037 z m -4.1553,0.0407 0.6111,0.12222 -0.081,0.24443 -0.6111,-0.16295 0.082,-0.2037 z m 7.9441,0 0.1629,0.0407 -0.2852,0.97772 -0.1222,-0.0407 0.2445,-0.97773 z m -29.4542,0.0815 1.2221,0.0815 -0.2037,0.61107 -1.2629,0 0.2445,-0.69255 z m 10.918,0.0407 0.6518,0 0,0.20369 -0.1222,0 -0.6111,-0.16295 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.2993,0.0815 0.2852,0.40738 -0.2852,0.44812 -0.2444,-0.0407 0.2444,-0.81476 z m 1.1407,0.3259 0.1222,0.61108 -0.2852,-0.0815 0.163,-0.5296 z m 4.1554,0.0407 0.1222,0 c -0.064,0.20395 -0.057,0.39208 0,0.5296 l -0.041,0 -0.1222,0.40739 0.041,0.89625 -0.4074,0.48885 -0.2037,-0.0407 0.3259,-1.18141 -0.4481,-0.12221 0.2444,-0.81478 0.4074,0.12222 0.081,-0.28517 z m -17.2326,0.0407 0.3667,0 0,0.28517 -0.2445,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.7741,0 0.4074,0 -0.163,0.57034 -0.2444,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44812 z m 2.0369,0 0.4074,0 -0.1222,0.69256 c -0.146,0.15267 -0.3488,0.24964 -0.5704,0.32591 l -0.611,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.414,0 0.5703,-0.19281 0.5703,-0.65182 z m -22.4471,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7702,0.0407 0.8148,0.2037 -0.082,0.20369 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1223,-0.40739 z m 21.4287,0 0.2852,0.16296 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.32591 z m -2.3221,0.0815 0.2851,0.0815 -0.2851,0 0,-0.0815 z m -14.2994,0.36665 0.4889,0.5296 -0.2037,0.65182 -0.041,0 -0.2444,-0.32591 -0.5296,-0.12222 c -0.048,0.151 -0.1392,0.2794 -0.2445,0.36665 l -0.8555,-0.24443 c -0.047,-0.23182 -0.2221,-0.40088 -0.6111,-0.48886 l 0.041,-0.20369 0.5704,0.12221 0.2037,0.24443 c 0.1052,-0.33289 0.5689,-0.44605 1.4258,-0.5296 z m 3.1777,0.32591 0.3666,0.44812 -0.6518,-0.12222 0.2852,-0.3259 z m 21.673,0 0.1222,0.20369 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40738 z m -1.3443,0.12222 0.2036,0.36664 -0.041,0.20369 -0.2444,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.20368 z m -25.91,0.40738 0.2445,0.0407 -0.1223,0.40738 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5073,0.0815 0.2037,0.0407 -0.041,0.12222 c -0.061,-0.0423 -0.1022,-0.11767 -0.163,-0.16296 z m -3.9109,0.0815 c 0.1983,0.0449 0.3656,0.10693 0.5296,0.12222 l 0.4888,0.61107 0,-0.48885 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12222 0.1559,0.20014 0.3052,0.42706 0.4889,0.65181 l -0.3259,0.44813 -0.1222,-0.12221 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28517 0.041,0.61109 c -0.1697,-0.1506 -0.3284,-0.3246 -0.4889,-0.48887 l 0.082,-0.20369 -0.3666,-0.0815 c -0.1552,-0.17217 -0.3026,-0.34478 -0.4482,-0.5296 l 0.6519,0.12222 0.1629,-0.48887 z m 11.7328,0.24444 0.4481,0 0,0.48885 -0.4481,0 0,-0.48885 z m 11.692,0 0.163,0 0,0.12221 -0.163,-0.12221 z m -4.4405,0.0407 0.1629,0.28518 -0.041,0.16294 -0.9777,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.1794,-0.0411 0.3596,-0.19638 0.4889,-0.40738 l 0.3666,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.1569,0.22678 0.1629,0.36664 l -0.6925,0 0.1629,-0.28516 0.3667,-0.0815 z m 17.1103,0.0407 0.163,0.0407 -0.041,0.16296 -0.163,-0.0815 0.041,-0.12222 z m -21.1435,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.1547 0.2445,0.28516 l -0.3667,0 0,-0.28516 z m 11.6921,0.44812 0.5296,0.12221 -0.082,0.24444 -0.5296,-0.12222 0.082,-0.24443 z m -13.0365,0.0815 0.163,0.12221 -0.081,0.2037 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2445,0.0407 0.1222,0.0815 0.1629,0 -0.082,0.24443 -0.3666,0.2037 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.2037 -0.1222,-0.28517 0,-0.0815 z m 25.4211,0.0407 0.1222,0.44813 -0.1222,0.28516 0,-0.73329 z m -16.1734,0.16296 -0.041,0.20369 -0.041,0.48886 -0.937,-0.12222 -0.082,-0.0815 0.7741,-0.36665 -0.3667,-0.0815 0.6926,-0.0407 z m -3.5035,0.0407 -0.041,0.12221 -0.2852,-0.0815 0.3259,-0.0407 z m 4.7664,0 0.4482,0.0815 0,0.0407 0,0.2037 c -0.1905,-3e-5 -0.299,0.0478 -0.4074,0.12221 l -0.041,-0.44812 z m -2.5665,0.0407 -0.1222,0.44812 -0.6111,-0.0815 -0.2444,-0.24443 -0.082,0.2037 -0.2852,-0.0407 0.082,-0.24444 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2852,0 0.7333,-0.0407 z m 3.7887,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.163,0.24444 0.2852,0 0.1629,-0.12222 0.2852,0.28517 -0.3259,0.36664 c -0.7619,0.018 -1.1994,0.12476 -1.2629,0.32591 l -0.082,0.2037 0.2851,0.0815 0.5297,0 -0.2445,0.28516 c -0.3067,10e-6 -0.7246,-0.15749 -1.1814,-0.36664 l 0.1222,-0.32591 -0.3666,-0.0815 -0.3259,0.16295 c -0.3254,-0.1839 -0.6736,-0.42524 -1.0593,-0.69255 0.53,0.11988 0.9409,0.021 1.2222,-0.28517 0.452,0.0971 0.8964,0.16296 1.3851,0.16296 l 0.082,0 0.163,0.0407 0.041,-0.16296 0.1222,-0.12222 z m 1.9148,0.0815 c 0.012,0.27819 0.175,0.47168 0.611,0.57034 l -0.041,0.12221 -0.1629,0.0815 c -0.4016,-0.0334 -0.7787,-0.0704 -1.1,-0.0815 0.1876,-0.17418 0.4654,-0.46551 0.6926,-0.69255 z m 25.1766,0 0.1222,0.0407 -0.2444,1.01846 -0.1223,-0.0407 0.2445,-1.01846 z m -10.9588,0.0815 0.2445,0.0815 -0.082,0.28516 -0.163,0 0,-0.36664 z m -20.8175,0.12222 c 0.2965,0.3446 0.6323,0.71224 0.9777,1.09994 l -0.7333,-0.16296 c -0.294,-0.2508 -0.5827,-0.52525 -0.8555,-0.81477 l 0.6111,-0.12221 z m -1.0592,0.24442 0.4481,0.7333 -0.3259,0 c -0.2314,-0.13532 -0.4738,-0.24994 -0.6926,-0.40739 0.047,-0.0675 0.091,-0.14686 0.1222,-0.24443 l 0.4482,-0.0815 z m 23.2211,0.16295 0.5704,0.12222 0,1.18142 -0.4482,0.12221 -0.5296,-0.12221 0.4074,-1.30364 z m 11.2847,0.12222 -0.2037,0.40739 0.082,-0.32591 0.1222,-0.0815 z m -16.2956,0.12222 0.2445,0 0,0.0815 -0.2445,-0.0407 0,-0.0407 z m -19.6768,0.12221 c 0.029,0.007 0.054,-0.005 0.081,0 l 0.082,0.0815 -0.3667,0 0.2037,-0.0815 z m 29.169,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1196,-0.0874 0.2148,-0.19178 0.3259,-0.28518 z m 3.8294,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2037,0.0815 c -0.072,0.0648 -0.1696,0.10081 -0.2444,0.16296 -0.192,0.1594 -0.3681,0.33852 -0.5704,0.48885 -0.078,-0.0803 -0.1397,-0.20168 -0.2037,-0.3259 0.1573,-0.0786 0.2844,-0.16146 0.4482,-0.24443 l 0.3259,0.0815 0.041,-0.2037 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.2037 -1.0999,0.52959 -0.163,0 0,-0.20369 c 0.1087,1e-5 0.2967,-0.11102 0.5296,-0.28516 l 0.7333,-0.0407 z m -4.9294,0.12221 c 0.1298,0.14532 0.2302,0.25608 0.3667,0.40738 l 0,0.2037 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.163,-0.0407 c -0.08,-0.0559 -0.1659,-0.10467 -0.2444,-0.16295 l 0.163,-0.0407 0.041,-0.16295 z m 10.0218,0.0815 0.3666,0.24442 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m 6.6404,0 0.4074,0 0,0.0815 -0.2445,0.12222 -0.1629,0 0,-0.2037 z m -3.0962,0.12222 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8257,0 0.2444,0.0407 0.2445,0.28517 0.082,0 0,0.40739 c -0.3616,0.0312 -0.758,0.0611 -1.1407,0.0815 l 0.3259,-0.48886 c 0.079,-0.004 0.1557,0 0.2444,0 l 0,-0.32591 z m -6.4775,0.32591 0.6518,0 0,0.48886 -1.0184,0 0.3666,-0.48886 z m 8.1885,0.0407 0.2852,0.0815 -0.041,0.12221 c -0.1062,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24443 z m 9.4107,0.0407 c -0.02,0.28762 -0.041,0.5616 0.041,0.77403 l -0.163,0.0815 -0.1222,0.40739 -0.3259,-0.44813 0.5704,-0.81476 z m -12.0587,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24444 -0.2444,-0.0407 c 0.043,-0.0934 0.1037,-0.18419 0.2444,-0.24443 z m -8.6366,0.16295 0.6518,0 0,0.20369 -0.6518,0.20369 0,-0.40738 z m 1.0184,0 0.4889,0 0,0.20369 -0.4889,0 0,-0.20369 z m 3.5851,0 0.3666,0 -0.3666,0.40738 -0.4889,0 0.4889,-0.40738 z m -15.1549,0.20369 0.041,0 0,0.20369 -0.4481,0 0,-0.0407 0.4074,-0.16295 z m 3.3406,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.9701,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.911,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.0473,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.163,0.48887 -0.5296,-0.12222 0.041,-0.0815 c 0.1755,-0.0707 0.415,-0.20082 0.6111,-0.28517 z m 5.296,0 c 0.072,0.0901 0.1611,0.14842 0.2445,0.24444 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2444,-0.12222 z m -32.6318,0.28517 0.6518,0 0,0.24444 -0.6518,0 0,-0.24444 z m 2.9332,0 0.3666,0 -0.3666,0.52961 0,-0.52961 z m -3.5443,0.24444 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.6111,0 1.0185,0.28517 1.2221,-0.28517 1.3037,0 0,0.48885 -5.1739,0 0,-0.20368 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4481,0.48885 -0.2037,-0.20368 -1.0185,0.20368 -2.4851,0 -0.4481,-0.48885 z m 5.459,0 0.5704,0 0,0.28517 -0.5704,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.20369 l -0.041,0 0.041,-0.16295 0.041,-0.0407 z m -30.5134,0.28517 1.0185,0 0,0.20368 -1.0185,0 0,-0.20368 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49142857;fill:#fce94f;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3544);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\général\Charte graphique\OD\OD6.0\splashscreen\png\splashscreen_OD6.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       inkscape:connector-curvature="0" />
+    <path
+       transform="matrix(1.073713,0,0,1.073713,2.6401789,-954.90334)"
+       id="path3949"
+       d="m 589.57094,427.17868 -2.5665,0.48886 0,1.34438 0.5703,-0.61109 0.6518,0 0,0.2037 -1.2221,0.40739 0,2.07766 0.2036,0 -0.2036,0.28516 0,0.85552 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28516 l 0,0.48886 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.7333 -0.2852,0.24442 0,8.55509 0.6111,2.24062 0.082,0.57034 c -0.028,0.0807 -0.061,0.16776 -0.082,0.24443 0.066,0.0489 0.1079,0.10817 0.1629,0.16295 l 0,0.16296 -0.2444,-0.0815 c -0.024,-0.006 -0.057,-10e-4 -0.081,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.163,-0.61107 -0.4073,0.0815 0,3.87016 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85551 c -0.09,0.26172 -0.1903,0.50208 -0.2852,0.69255 l 0,0.97772 0.2444,0.0815 -0.041,0.16295 -0.2037,-0.0815 0,11.12163 0.163,-1.18142 0.1222,0.0407 0,1.01846 0.2037,0 0.4889,0.52959 c -0.1,0.0821 -0.1897,0.19341 -0.2445,0.36665 l -0.2037,-0.24443 -0.082,0 -0.1629,-0.65181 0,0.57033 -0.041,0 -0.2445,0.12222 0,0.89624 0.2852,-0.1222 0,0.3259 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.3667,-0.12222 0,0.24443 -0.3667,0 0,0.85551 -0.2852,0.0815 0,0.20369 0.2852,-0.0815 0,0.0815 c 0.4141,4e-5 0.5704,-0.14215 0.5704,-0.44813 l -0.2037,-0.20369 0.5296,0 -0.1223,0.0815 -0.082,0.24443 0.1223,0 0,0.0815 0.2037,0.24443 0,0.28517 -1.0185,0 0,0.24443 3.3813,0 c 0.2347,-0.63832 0.527,-0.97773 0.937,-0.97773 l 0,-0.40737 -0.5703,0 -0.2852,0.20368 -0.163,0 -0.2444,-0.3259 0.082,-0.24443 -0.2444,0.0815 -0.6519,0 -0.3259,0.12222 0,-0.0407 -0.3666,-0.0815 -0.2852,0.2037 -0.4481,-0.2037 0,-0.24443 1.0592,0 0,-0.20369 -0.2037,-0.2037 0,-0.24442 0.4889,0.16294 -0.082,0.2037 0.5703,0.12222 0.2852,-0.0407 0.6111,0.20369 -0.082,0.24443 0.2851,0.0815 0.5704,-0.0407 0.6518,0.24444 0,0.20368 c -0.3219,7e-5 -0.8163,0.38652 -1.3851,1.18142 l 18.5769,0 c 0.082,-0.0802 0.1634,-0.16303 0.2444,-0.24443 0.2121,0.0756 0.5041,0.16493 0.7333,0.24443 l 1.4666,0 -0.2444,-0.40738 1.1407,0.0815 0.2037,0.0815 -0.041,0.16295 -0.5296,0.0815 0.7333,0 7.8626,0 0.041,-0.16295 c 0.061,0.0307 0.1355,0.0557 0.2037,0.0815 l -0.041,0.0815 1.3036,0 0.3667,-0.24443 -0.041,0.24443 2.5665,0 0.082,-0.24443 0.2444,0.0407 -0.082,0.20369 0.4482,0 0,-1.34437 -0.082,0.24443 -0.2445,-0.0407 0.1223,-0.40738 0.2037,0.0815 0,-9.04396 -0.1223,-0.0407 0.1223,-0.57033 0,-1.71103 -0.2852,0.0815 -0.041,0.2037 0.2037,0.32591 -0.6111,1.09994 -0.2037,-0.0407 0.937,-3.50351 0,-1.58881 -0.2852,0.12222 -0.041,1.0592 -0.6518,2.36283 -0.5703,0.28517 1.1814,-4.39975 0.3666,0.57033 0,-1.34436 -0.1629,-0.0407 0.1629,-0.57035 0,-1.83322 c -0.2597,-0.39209 -0.5238,-0.78278 -0.8147,-1.14068 l 0.8147,0.0407 0,-1.22216 -0.2037,0.85551 -0.2444,-0.0815 0.3259,-1.18142 0.1222,0.0407 0,-3.54425 -0.082,0.28517 -0.4481,-0.12222 0.5296,-2.03692 0,-7.98475 -0.041,0.12221 -0.8148,0 -0.6518,-0.36664 -0.8148,0 0.041,-0.20369 -0.3259,-0.52961 0.082,-0.28516 0.2037,0.0407 0.8555,0.77403 0.2852,-0.16296 0.082,-0.28517 c -0.3163,-0.38755 -1.7549,-1.08881 -4.3183,-2.07766 l -1.1,0 2.811,1.18141 -0.1222,0.40739 0.2852,-0.16295 0.6925,0.20369 -0.4888,0.81477 -0.2037,-0.0407 -0.163,-0.28517 -0.2444,-0.0407 -0.3667,0.12222 0.1222,-0.40738 0.3667,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2445,-0.0815 -0.2851,0.2037 -0.2445,-0.0407 -0.6925,-0.48887 -0.5704,0.36665 -1.5481,-1.26289 -1.8332,0 -0.082,0.32591 -0.2444,-0.0407 0.082,-0.28517 -3.2999,0 1.0185,1.54806 0.2037,0.0407 -0.163,0.69255 -0.4481,-0.12221 -0.082,0.20369 c 0.3276,0.0876 0.5624,0.55849 0.6926,1.38511 l -0.163,0.69255 -0.2444,-0.0815 0.1222,-0.44812 -0.7333,-0.2037 -0.163,0.44813 0.4889,0.12221 -0.2444,0.89625 -0.4889,-0.12221 -0.2037,0.93698 0.4481,0.12222 -0.1222,0.40738 -0.4481,-0.12221 -0.1222,0.40738 0.4481,0.12221 -0.163,0.69256 c -0.4096,-0.10951 -0.697,0.1232 -0.937,0.69256 -0.022,0.0836 -0.038,0.17514 -0.041,0.24443 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.1629,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.2037 l 0.5296,0.16296 0.1629,-0.65181 -0.4074,-0.61109 0.937,-1.3851 -0.2037,-0.0407 0.2852,-0.16295 0.081,-0.28518 -0.2037,-1.46658 0.6518,-0.24444 -0.2444,-0.0815 0.4481,-0.61108 c 0.1537,-1.0675 -0.199,-1.68476 -1.0592,-1.9147 l 0.2852,-0.16296 0.082,-0.24443 -1.5888,0 0,0.0815 0.6925,0.16296 -0.937,0.73329 c 0.085,-0.31633 0.048,-0.64017 -0.041,-0.97772 l -1.5888,0 -0.2037,0.69255 -0.2444,-0.0407 0.1629,-0.65182 -0.937,0 0.2445,0.48886 -0.082,0.44812 -0.3667,-0.57033 0.082,-0.36665 -0.4481,0 -0.8555,3.09612 c -0.097,-0.0451 -0.1796,-0.0767 -0.2852,-0.12221 l -0.041,0 -0.1629,-0.24443 0.2851,-0.12222 0.082,-1.18141 0.3667,-1.42585 -0.4889,0 -0.6111,2.36283 -0.2444,0 0.6111,-2.36283 -2.6073,0 -0.041,0.16295 0.4481,0.12222 -0.2852,1.0592 c -0.9987,-0.37944 -1.8221,-0.65178 -2.4443,-0.65182 -0.1476,0.37417 -0.4354,0.62502 -0.774,0.77404 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20369 0.5703,-0.0815 0,-0.28517 c 10e-5,-0.20088 -0.2546,-0.36698 -0.774,-0.48886 l -0.041,-0.20369 -0.9778,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24443 c -0.2786,-0.13728 -0.624,-0.21604 -1.0184,-0.28517 l -1.7111,0 0,0.16295 -0.2444,0.0815 -0.082,-0.24443 -0.5296,0 0.041,0.12221 -0.163,0.16296 -0.082,-0.28517 -2.7295,0 -0.2037,0.97772 -0.3259,0 0,-0.48886 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48886 l -2.4036,0 z m 36.2576,12.83263 0,-0.93698 -0.041,0.0407 -0.163,0.61108 0.2037,0.28517 z m -34.3429,-12.75116 -0.2851,0.44813 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6925,-0.12222 z m 13.4846,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.2956,0.36665 0,0.48886 -0.4481,0 0.4481,-0.48886 z m 7.8219,0 0.082,0.0407 0.2037,0.89625 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65182 -0.041,-0.16295 0.163,-0.0407 z m 1.4666,0 0.4074,0.48886 -0.4074,0 0,-0.48886 z m -2.5665,0.16296 0.082,0.28516 -0.1223,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.1516,0.0407 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 5.2146,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.974,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24443 -0.1629,0 c 0.038,-0.0691 0.088,-0.17948 0.1222,-0.24443 z m 13.0365,0 0.2037,0.0815 -0.163,0.65182 -0.3259,-0.57035 0.2852,-0.16295 z m 11.8142,0.0407 0.4482,0.12221 -0.1223,0.48887 -0.4888,-0.12222 0.1629,-0.48886 z m -5.8256,0.16295 0.2444,0.0407 -0.1629,1.58881 -0.2852,0.16295 -0.1222,0.48886 -0.5296,2.52579 -0.6519,-0.65182 1.1,-2.648 -0.2444,-0.28517 0.082,-0.20369 0.5703,-1.01847 z m 0.9777,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.7741,3.87015 -0.2851,0.16296 -0.082,1.14067 -0.2037,0.77403 -0.5704,0 0.163,-0.57033 c 0.2449,-0.0957 0.4481,-0.21289 0.4481,-0.36665 l -0.2852,-0.28516 1.3852,-5.21454 z m -17.7214,0.2037 0.2444,0 0.041,0.16295 -0.082,0.0407 -0.1222,0 -0.082,-0.20369 z m 14.5438,0.12221 0.2037,0.0407 -0.082,0.44812 -0.2445,-0.0815 0.1223,-0.40738 z m 12.629,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2444,-0.0815 0.1222,-0.40738 z m -29.8208,0.0407 0.6518,0 0,0.2037 -0.6518,0 0,-0.2037 z m -2.0777,0.2037 1.0592,0 c -0.029,0.0977 -0.082,0.18867 -0.1222,0.28516 l -0.937,0 0,-0.28516 z m 11.855,0 0,0.52959 -0.4889,0 0.4889,-0.52959 z m 24.3618,0.16294 c -0.074,0.27639 0.1418,0.51308 0.5704,0.65182 l 0,-0.5296 -0.5704,-0.12222 z m -6.07,0.32591 0.4481,0.12222 -0.3667,1.30363 -0.4481,-0.12221 0,-1.18142 0.3667,-0.12222 z m -17.0696,0.44813 0,0.48886 -0.2037,0 -1.6703,0.24443 c 0.035,-0.18638 0.074,-0.3749 0.082,-0.57034 l 1.7925,-0.16295 z m 0.3666,0 0.6518,0.20369 0,0.28517 -0.8555,0 0.2037,-0.28517 0,-0.20369 z m 1.0185,0 0.041,0 0.2852,0.44812 -0.041,0.0407 -0.2852,0 0,-0.48886 z m 1.8332,0 -0.082,0.3259 -0.2851,0.0407 0.1222,-0.3259 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.2662,0 0.6519,0.36664 -0.082,0.20369 -0.4482,0.85551 c -0.076,0.61312 0.12,0.99046 0.5296,1.09995 l -0.1222,0.40738 -0.5296,-0.12222 -0.082,0.28517 0.2445,0.28518 -0.3667,0.12221 0.041,1.18142 -0.4889,1.79249 -0.5296,-0.12222 -0.4074,-1.30363 0.1223,-0.48886 0.2444,0.0407 -0.1222,0.48886 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81477 0.2852,-0.12221 c 0.1185,-0.44345 -0.079,-0.76488 -0.5703,-0.89625 l 0.6518,-0.28517 -0.1222,0.40739 0.4888,0.12221 0.3667,-3.21834 0.041,-0.20369 z m -20.4916,0.12222 0.2444,0.0407 0.1222,0.48886 -0.3259,-0.0815 0,-0.36664 -0.041,-0.0815 z m -7.7404,0.0815 0.4481,0 -0.4481,0.5296 0,-0.5296 z m 1.3036,0 0.8148,0 c -0.013,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48887 l -0.2037,-0.24443 0,-0.28517 z m 1.3037,0 0.3666,0 0.4074,0 0,0.20369 -0.082,-0.0815 -0.4888,0.12222 0,0.24443 -0.082,0.0407 -0.2037,-0.24443 -0.082,0 0.1629,-0.28517 z m 1.1407,0 0.6111,0 -0.041,0.28517 -0.5704,0 0,-0.28517 z m 7.2922,0 0.6519,0 -0.082,0.24443 0.1222,0.44812 -0.2852,0.0407 -0.4074,-0.65182 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24443 -0.2037,0.0407 -0.082,-0.28517 z m 21.1435,0 0.8148,0 0.2444,0.0407 -0.082,0.2037 -1.0999,0.16295 0.1222,-0.40738 z m -12.9142,0.0815 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m 5.2553,0 -0.082,0.2037 0.4889,0.12221 0.041,-0.20369 -0.4482,-0.12222 z m 10.144,0.36665 0.4888,0.12222 0.4074,0.57034 -0.6518,0.3259 0.2852,0.0815 -0.6111,1.01846 c -0.3277,-0.0876 -0.363,-0.37133 -0.2444,-0.81477 l 0.2851,-0.16295 0.041,-0.20369 0,-0.93699 z m -1.3851,0.28517 0.2444,0.0815 0.041,0.73329 -0.4481,-0.12222 0.1629,-0.69255 z m -25.5026,0.0407 0,0.40739 -0.2851,0 -0.082,-0.32591 0.3666,-0.0815 z m 23.9137,0.0407 0.2445,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44812 z m -24.7284,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.2293,0.0407 1.0185,0 c -0.101,0.0837 -0.1918,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.0777,0 0.4481,0 0,0.24443 -0.6111,0 0.163,-0.24443 z m 7.8626,0 0,0.24443 -0.2037,0 -0.041,-0.16295 0.2444,-0.0815 z m 3.748,0 0.4073,0 0,0.24443 -0.4073,0 0,-0.24443 z m 1.0592,0 0.8147,0 0,0.24443 -0.8147,0 0,-0.24443 z m 22.3656,0.0407 0.4481,0.12221 0.2852,0.28517 0.082,-0.40738 0.2444,0.0407 -0.1222,0.44811 -0.2037,-0.0815 0.163,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.6161,0.14207 -0.7741,0.73329 l -0.3666,-0.61107 0.3666,-1.30363 z m -31.0023,0.0407 0.2852,0.20368 -0.2037,0.0815 -0.082,-0.28516 z m -4.7257,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.98,0.0407 0.5296,0.16295 -0.041,0.20369 -0.5296,-0.12221 0.041,-0.24443 z m -20.4916,0.0407 0.3666,0 0,0.28516 -0.3666,0 0,-0.28516 z m 3.5443,0 0.2037,0 c 0.2933,0.10003 0.5027,0.25431 0.6518,0.48886 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.1629,0.28518 l -0.3666,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.1679,0.27231 0.2444,0.40739 l -1.7925,0 0,-0.2037 c 0.5521,1.1e-4 0.8148,-0.22357 0.8148,-0.52959 l -0.3667,-0.40739 0,-0.48886 z m -9.2885,0.0407 0.1222,0.44813 -0.2037,0.0407 -0.082,-0.32591 0.163,-0.16296 z m -3.5035,0.0815 0.082,0.44812 -0.4482,0.12222 -0.041,-0.16295 0.326,-0.0407 0,-0.32591 0.082,-0.0407 z m 1.6295,0.0407 c 0.2851,1.06669 0.7124,1.54314 1.3037,1.38511 l 0.081,0.16295 -0.163,0.24444 -0.2444,-0.12222 c -0.5965,0.73086 -0.8709,1.45177 -0.6926,2.1184 l -0.8555,-0.65181 0.6111,-0.16296 -0.1222,-0.40739 c -0.3696,0.0988 -0.5984,-0.0975 -0.8148,-0.61107 l 0.9777,-0.7333 -0.4481,-0.93698 -0.041,-0.16296 0.4074,-0.12221 z m 23.5878,0.24443 0.4481,0.12222 -0.082,0.24443 -0.4481,-0.12222 0.082,-0.24443 z m -14.9511,0.0815 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 4.6034,0 0,0.0815 -0.041,0.16296 -0.2036,-0.0407 0.2444,-0.20369 z m -10.5513,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77402 z m 23.2211,0.0407 0.4482,0.12222 0,0.97772 -0.2852,0.12222 -0.041,0.2037 -0.163,1.46658 -0.4074,0.57034 0.2037,0.24443 -0.3259,0.2037 0.3667,0.57033 -0.2852,0.12222 -0.2444,-0.0407 -0.041,1.14068 -0.3259,1.14067 -0.4482,-0.16295 -0.2037,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1222,0.0815 0.163,0.0407 c 0.083,0.20379 0.1422,0.44083 0.1629,0.69256 l -0.041,0.2037 -0.1629,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2444,-1.54807 0.7741,-2.85169 0.4481,-0.81478 -0.2852,-1.0592 0.5296,0.16296 0.326,-2.07767 z m -28.4357,0.0407 -0.041,0.44813 -0.2852,0.0815 -0.2851,-0.16296 -0.2037,0.0815 0.3666,0.48886 -0.4888,0.61108 -0.326,-0.48887 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48886 -0.1629,0 -0.2037,0.28516 -0.2037,0 0.3666,-0.61107 1.2629,-0.2037 z m 4.8072,0 0.1629,0.65182 -0.2036,0.0407 -0.2037,-0.61107 0.2444,-0.0815 z m -7.0886,0.28518 0.2037,0 0,0.28516 -0.2037,0.24443 -0.2444,0 0,-0.3259 c 0.078,-0.065 0.1633,-0.13004 0.2444,-0.20369 z m 32.5911,0.40737 1.5074,1.34438 -0.1223,0.44812 -0.5296,-0.16295 -0.4888,1.79249 -0.2037,-0.0407 0.4074,-2.48504 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.4813,0 0.774,0 -0.1222,0.40739 -0.6925,-0.20369 0.041,-0.2037 z m -27.4173,0.12222 0.041,0 0.2037,0.2037 -0.1629,0.0407 -0.082,-0.24443 z m 3.4221,0 0.5703,0 0,0.2037 -0.5703,0 0,-0.2037 z m 5.4998,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.4073,0.12222 c -0.1394,0.12918 -0.3454,0.16298 -0.6518,0.16295 l -0.2037,0 0,-0.20369 0.4889,-0.24443 z m -4.6443,0.0407 0.6518,0.20369 0,0.44813 c -0.414,0 -0.6518,0.18289 -0.6518,0.48885 l -0.1629,0 c 0,-0.45891 -0.1314,-0.73323 -0.4074,-0.73329 l 0,-0.20369 0.5703,-0.20369 z m 11.4476,0.0407 0.326,0.61109 -0.041,0.20368 -0.326,-0.61107 0.041,-0.2037 z m -18.088,0.0407 0.5703,0.28518 0.6519,2.36283 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85551 0.041,0.65182 0.2851,0.12222 -0.3666,0.57033 -1.1814,-4.39976 z m 15.44,0 0.2445,0.0407 -0.2852,1.09994 -0.2445,-0.0407 0.2852,-1.09994 z m -7.0885,0.12222 0.5703,0.20369 0,0.24444 -0.774,0 0.2037,-0.24444 0,-0.20369 z m -9.2885,0.20369 0.4889,0.48886 0.041,0.16296 -0.4889,0.12221 -0.163,-0.65181 0.1223,-0.12222 z m 1.9962,0.12222 0.3259,0.3259 0,0.0815 0.082,0.0407 0.2037,0.24443 -0.1629,0.16296 0.6518,2.36283 -0.2852,-0.16295 -0.8148,-3.05539 z m -7.8219,0.0815 0.082,0.36664 -0.2037,0.0407 -0.082,-0.36664 0.2037,-0.0407 z m 2.4444,0.20368 -0.082,0.61109 0.082,0.24443 0.2444,0.16295 c -0.776,0.20743 -1.0756,0.74803 -0.937,1.71102 l 0.3667,0.57034 -0.2037,0.0407 0.5703,0.24442 -0.1629,1.30364 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.5703,0.85551 c -0.1409,0.11253 -0.2863,0.23952 -0.4481,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81476 -0.4481,0.12221 -0.2037,-0.81476 0.4074,-0.12222 -0.1222,-0.44813 -0.6519,0.2037 0.082,0.44811 -0.2037,0.0407 -0.1629,-0.61107 c 0.1174,-0.74567 0.3563,-1.18389 0.6518,-1.26289 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61108 0.2037,-0.0407 1.3444,-2.03694 z m 31.3282,0.2037 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.6926,0.16296 0.4481,2.28135 -0.041,0.2037 0.2852,0.0815 0.2851,-0.12222 0.2445,0.0407 -0.6926,2.64799 c -0.6159,-0.3229 -0.8481,-0.90563 -0.6111,-1.79249 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48886 0.082,-1.18141 -0.5703,-0.12222 -0.6926,2.68873 0.2444,0.28518 -0.3666,0.12221 -0.041,0.2037 0.2037,2.19988 -0.8148,0 c -0.1161,0.56732 -0.1894,1.08428 -0.2444,1.50732 -0.1694,0.10755 -0.2849,0.39716 -0.4074,0.85551 l -0.3259,0.12222 -0.4482,-0.12222 -0.1629,-0.93698 0.5703,-0.48887 0,-0.12222 c 0.055,0.0879 0.1487,0.1672 0.2852,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2444,-1.87397 0.3667,-0.5296 0.7333,-3.62573 0.2444,-0.89624 -0.4481,-0.12222 -0.3667,1.34437 -0.3666,0.12222 0.2444,0.28517 -0.1222,0.48886 -0.5296,-0.16295 0.8148,-3.09613 z m -9.207,0.12221 0.2037,0.0407 -0.2445,0.89625 -0.2851,0.16295 -0.2037,-0.0815 0.5296,-1.01847 z m 6.0701,0 0.2037,0.0407 -0.082,0.40739 -0.2445,-0.0407 0.1222,-0.40739 z m -24.973,0.0815 0.2037,0.81477 -0.2037,0.0407 -0.2444,-0.77403 0.2444,-0.0815 z m -6.7219,0.0407 0.041,0 0.1222,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.2614,0.0407 0.2444,0.0407 -0.2036,0.69255 -0.2037,-0.0407 0.1629,-0.69255 z m -26.5617,0.0407 0.1222,0.44813 -0.3259,0.48885 -0.082,-0.36665 0.2851,-0.57033 z m 13.8919,0.0815 0,0.0407 -0.3259,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1891,-0.0178 0.3782,-0.0562 0.5296,-0.0815 z m -11.7328,0.24443 0.1223,0.12222 -0.2037,0.0815 -0.041,-0.16294 0.1222,-0.0407 z m 27.1321,0.12222 0.7741,0.20368 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24442 z m -8.7181,0.0407 0.5703,0.16295 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24443 z m -15.4808,0.0407 0,0.61109 0.4482,0 c 0,0.33785 0.036,0.62661 0.1222,0.81476 -0.2102,0.0426 -0.4006,0.0946 -0.5704,0.16296 l 0,-0.0407 -0.3666,-0.40738 -0.6518,0.20369 c 0,-0.11015 -0.034,-0.2077 -0.082,-0.28517 l -0.2445,-0.89625 1.3444,-0.16296 z m 2.8925,0 0.2852,0.2037 0.2037,0 1.8739,-0.2037 0,0.2037 -0.2851,0.65182 c 0.3992,-0.22119 0.7009,-0.47342 0.8148,-0.77404 0.071,0.0934 0.1312,0.1937 0.2036,0.28517 l -0.3666,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.1891,0.22207 0.2851,0.3259 l 0.041,0.16295 -0.2037,-0.20369 -0.2444,0.12222 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.6518,-0.12222 c -0.065,-0.12871 -0.107,-0.24434 -0.1223,-0.36665 l 0.326,0 0.3666,0.0815 0.041,-0.20369 -0.2852,-0.5296 c -0.2711,-0.0725 -0.5057,-0.0647 -0.7333,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1436,-0.007 -0.2037,0 l -0.5296,-0.61108 -1.0592,0.2037 -0.774,-0.2037 -0.4481,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2415,3e-5 0.4326,0.0163 0.6111,0 0.5354,-0.049 0.774,-0.17787 0.774,-0.40739 z m 16.2955,0 0.2445,0.0815 -0.2445,0.89626 -0.2444,-0.0815 0.2444,-0.89626 z m -19.962,0.40739 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.5481,0.0815 0.2445,0.28517 -0.2037,0.36665 -0.163,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.5106,0.12222 0.041,0.32591 -0.163,0.0407 0.1222,-0.36665 z m 21.836,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.6622,0.0407 0.5296,0.93698 0.041,0.16295 -0.2037,0.28518 0.7741,1.83323 -0.5296,0.32591 -0.2852,-1.50733 -0.1222,-0.44812 -0.2444,-0.12222 -0.163,-1.42585 0.2037,-0.0407 z m -0.8962,0.0407 1.1407,4.23681 -0.326,-0.0815 0,-0.0815 -0.2851,-0.16294 -0.6926,-3.46278 -0.041,-0.20369 -0.2852,-0.12222 0.4889,-0.12222 z m 19.8805,0.0815 0.2445,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44812 z m -7.7811,0.0815 0.6518,0 0,0.20369 c -0.1266,0.0362 -0.2232,0.0983 -0.3259,0.16295 l -0.3259,-0.0815 0,-0.28517 z m -9.207,0.12222 0.1222,0.36664 -0.2036,0.0407 -0.1223,-0.36664 0.2037,-0.0407 z m 15.1141,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.9811,0.24443 0.2444,0.0407 -0.163,0.48886 -0.2036,-0.0407 0.1222,-0.48886 z m 5.2553,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8138,0.0815 0.3667,0 c -0.095,0.17535 -0.2075,0.27297 -0.3667,0.28517 l 0,-0.28517 z m 7.1293,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.5073,0.0407 0.2852,0.0815 -0.2852,0 0,-0.0815 z m 4.7257,0.0815 0.3259,0.61109 -0.1222,0.40737 -0.4481,-0.12221 0.2444,-0.89625 z m 1.0185,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56116 0.6518,0.69255 l -0.2445,0.89626 c -0.1373,-0.16028 -0.2847,-0.28993 -0.4481,-0.40739 l 0.041,-0.20369 -0.4481,-0.12222 0.2444,-0.89625 z m -5.8664,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.3813,0 0.5703,0 -0.082,0.2037 -0.2444,0 c -0.09,-0.0653 -0.1747,-0.12663 -0.2444,-0.2037 z m -7.4145,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.1222,-0.0407 0.1629,-0.0815 z m -15.603,0.16296 0.082,0.16295 0.3259,2.93317 0.4074,-0.12222 -0.1222,-0.36665 0.6111,0.24444 c -0.4434,0.11851 -0.6365,0.41476 -0.5296,0.81477 l 0.2444,0.12221 -0.2444,0.7333 0.041,0.20369 0.4481,-0.12221 -0.1222,-0.44813 0.2037,-0.0407 0.1222,0.44813 -0.3666,1.14068 -0.3667,-0.0815 c -0.056,0.071 -0.068,0.13431 -0.1222,0.20369 l -0.4481,-1.5888 0.041,-1.09994 -0.3259,-0.0815 0.2037,-0.28517 -0.041,-0.24442 -0.4889,0.1222 -0.082,-0.16294 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93698 l -0.4481,-0.77404 -0.041,-0.16295 0.5703,-0.36664 z m 31.1653,0 0.5296,0.12221 -0.2037,0.69255 -0.5296,-0.12221 0.2037,-0.69255 z m -28.9246,0.28516 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.7257,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.5144,0.0407 0.2037,0.0815 -0.2444,0 0.041,-0.0815 z m 16.9066,0 0.5296,0.12221 -0.1222,0.48887 0.4481,0.12222 0.163,-0.69256 0.4481,0.57034 -0.5703,0.81477 -0.163,1.87397 -0.4481,0.5296 -0.2444,-0.0407 c 0.5137,-1.92151 0.4109,-2.92094 -0.2445,-3.09612 l 0.2037,-0.69256 z m -20.0435,0.0815 0.2037,0 -0.1222,0.44813 -0.163,0 0,-0.20369 0.082,-0.24444 z m 1.7925,0 0.2037,0 c 0.1368,0.16132 0.1866,0.38537 0.163,0.65183 l -0.1222,0 -0.2445,-0.65183 z m -2.5665,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.5475,0.16296 0.2445,0.0815 0.2851,0.2037 -0.1629,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.3259,-0.24443 l -0.041,-0.28517 z m -7.17,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.7333,0.0815 0.4074,0.12222 -0.3259,0 -0.082,-0.12222 z m -6.7219,0.12222 0.2037,0.0815 -0.082,1.22216 -0.082,0.20368 -0.2037,-0.0815 0.041,-0.48887 0.2037,0 0,-0.65181 -0.082,-0.28517 z m 14.6252,0.0407 0.326,0.0815 -0.163,0.65181 -0.2037,-0.0815 -0.041,-0.5296 0.082,-0.12222 z m -15.3585,0.0407 0,0.2037 -0.1222,0 0.1222,-0.2037 z m -1.4666,0.16296 0.1222,0 0.1222,0.16294 0.082,0.28518 -0.3259,-0.40738 0,-0.0407 z m 4.522,0.0407 0.2037,0 -0.082,0.20368 -0.163,0 0.041,-0.20368 z m -5.2553,0.16294 -0.041,0.24444 c -0.1412,0.67657 -0.1364,1.03082 0.1222,1.09994 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.4481,-0.0815 c -0.2059,-0.77058 -0.1474,-1.24297 0.1223,-1.34438 z m 1.874,0 0.041,0.12222 0.082,-0.0815 0.1629,0.65182 0,0.12222 -0.4888,0.73329 0.2851,0.0815 -0.3259,0.12221 -0.082,0.24444 0.2445,0.28516 -0.082,0.16296 -0.4074,0.57034 0.041,0.85551 -0.6518,1.30363 0.2444,0.28517 -0.4889,-0.16295 0.3667,-1.34438 -1.1815,0.73329 0.2445,0.28518 -0.8555,0.44812 -0.082,1.01846 -0.4074,0.69255 c 0.08,-0.4994 0.011,-0.79802 -0.2037,-0.8555 l 0.2851,-0.16296 0.041,-0.20369 0.2037,-1.30363 c 0.1375,-0.12989 0.2765,-0.27148 0.4074,-0.40738 l 0.4482,0.32591 c -0.053,-0.21157 -0.1577,-0.37537 -0.2445,-0.52961 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.2444,0.0407 0.082,-0.36665 0.3667,-0.16295 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.19121 0.2037,-0.28517 l 0.7333,0.0407 0.163,-0.61108 -0.4074,-0.12221 c 0.071,-0.1075 0.135,-0.2161 0.2037,-0.32591 l 0.2851,0.0815 0.2852,-1.0592 c 0.1084,-0.19992 0.2227,-0.4049 0.3259,-0.61108 l -0.1222,-0.16296 0.041,-0.12222 z m 11.7328,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2444,-0.24444 z m -22.162,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.432,0.2037 0.4888,0.12221 -0.4074,0.93699 c -0.091,-0.13612 -0.2088,-0.26481 -0.3666,-0.36664 l 0.2852,-0.69256 z m -10.8773,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.9777,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.3922,0.32591 0.4074,0.0815 -0.163,0.65181 -0.2851,-0.57033 0.041,-0.16296 z m 23.9137,0.0407 c 0.452,0.27923 0.6049,0.76825 0.4074,1.50732 l -0.5296,1.0592 c -0.1997,1.12233 -0.2914,1.891 -0.2852,2.40357 l -0.1629,-0.0407 0.041,-0.77403 0.1222,-0.48885 -0.3666,-0.77404 0.8962,-2.1184 -0.1222,-0.77403 z m -21.836,0.12222 0.2444,0 0,0.20368 -0.2444,0 0,-0.20368 z m 12.0994,0 0.041,0 -0.1629,0.57033 c -0.02,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77402 z m -19.962,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16294 z m -4.1146,0.20368 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.6257,0 c 0.1218,0.0561 0.2252,0.11426 0.4074,0.16295 l -0.082,0.36665 -0.1629,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.1245,0.0815 0.2445,0.0815 -0.1223,0.48887 -0.2444,-0.0815 0.1222,-0.48886 z m -25.4618,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1223,0.36665 c -0.2956,-0.079 -0.5499,0.15923 -0.6925,0.69255 l -0.4481,-0.77402 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.0142,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.1478,0.0407 0.2852,0 -0.1222,0.52961 -0.2445,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.8555,0 0.5704,0 0,0.0815 -0.3667,0.57035 0.1223,0.16294 -0.6111,-0.16294 c 0.107,-0.16059 0.1904,-0.4143 0.2851,-0.65183 z m 1.0593,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.2406,0 0.4889,0 -0.1223,0.36665 -0.2037,0.0407 0,0.44812 0,0.0407 -0.082,0.16295 0.041,0.44813 -0.1629,0.0407 c -0.1809,-0.20535 -0.2427,-0.4948 -0.2037,-0.85551 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0827 0.017,-0.15377 0.041,-0.24444 l 0.2037,-0.36665 z m 0.8555,0 0.7333,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48886 0.2037,0 -0.041,0.20369 -0.3259,0.5296 0,-0.28517 -0.4889,0.12222 -0.041,-0.5296 0.2444,-0.0407 0,-0.48886 -0.2851,0.0407 -0.041,-0.24444 z m -7.6996,0.0815 0,0.77403 c -0.2653,-0.0831 -0.4074,-0.28893 -0.4074,-0.65181 0.1826,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.5404,0 0.4074,0.12222 -0.082,0.36665 -0.4481,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9365,0 0.1222,0.65182 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24443 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2445,-0.36664 0.1629,-0.28517 -0.4481,-0.12222 0.5703,-0.28517 z m -18.8213,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2851,0.0407 l 0,0.65181 -0.2444,-0.0815 -0.041,0.12221 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.163,0 -0.5296,0.77402 -0.2445,-0.3259 -0.082,0.36664 0.2445,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.1222,0.20369 c -0.155,0.0762 -0.2588,0.22703 -0.2852,0.44812 l -0.041,0.12222 -0.163,0 c 0,-0.0298 0.01,-0.0522 0,-0.0815 l 0.082,-0.44812 -0.1629,-0.0407 c -0.084,-0.43313 -0.1524,-0.79239 -0.2445,-1.0592 l 0.4482,-1.62954 z m -7.2923,0.44813 c 0.2126,0.11967 0.3124,0.32244 0.2852,0.61107 l -0.2037,-0.12222 -0.082,-0.48885 z m 18.3325,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13715 -0.06,0.28312 -0.082,0.40738 -0.092,0.0158 -0.1761,0.0407 -0.2852,0.0407 l 0,0.48887 -0.2444,0 0.082,-0.93699 0.5296,0 0,-0.0815 z m -12.3846,0.0815 0.2852,0 0.1222,0.0407 0,0.40738 -0.2037,0 0,0.2037 0.082,0.36665 c -0.1679,-0.14918 -0.2705,-0.48918 -0.2852,-1.01847 z m 25.3396,0.0407 0.4481,0.12221 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40738 z m -33.9355,0.0407 c -0.044,0.0495 -0.077,0.10968 -0.1222,0.16295 l -0.041,-0.12222 0.1629,-0.0407 z m -0.8963,0.0407 0.4482,0.93699 -0.2037,0.0407 -0.081,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.12221 l -0.2445,-0.0815 -0.2037,-0.69256 0.2445,-0.0407 z m 17.5178,0 0.4073,0.12222 -0.082,0.24443 -0.3666,-0.24443 0.041,-0.12222 z m 0.7332,0 0.2037,0.0815 -0.1222,0.40739 -0.2037,-0.0407 0.1222,-0.44813 z m 7.1294,0.0815 0.082,0.12222 0.2851,0.0815 0.082,-0.0407 -0.2037,1.34438 -0.6925,2.52579 -0.2444,0.48886 -0.082,-0.36665 0.2036,-0.28517 -0.2036,-0.20369 -0.2445,0.0815 -0.1629,-0.28517 0.2851,-0.1222 0.2037,0.0407 0.041,-1.0592 0.2852,-0.97772 0.4074,0.0815 0.1222,-0.5296 0.041,0 0,-0.0815 c -0.1251,-0.22969 -0.1809,-0.50833 -0.2037,-0.81478 z m 3.0554,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.163,0.5296 -0.2037,-0.0815 0.2037,-0.81477 z m -20.2472,0.20369 0.4073,0.12222 -0.1222,0.36665 -0.2851,-0.48887 z m -10.6329,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.5405,0.0407 0.2037,0.0815 -0.082,0.36664 0.2037,0.0407 -0.2445,0.12221 -0.1222,0.48887 -0.1629,-0.61108 0.2037,-0.48886 z m 27.4172,0 0.3667,0.0815 c -0.05,0.18576 -0.024,0.33527 0,0.44812 l -0.3259,-0.0815 c 0.053,-0.20002 0.019,-0.3353 -0.041,-0.44812 z m -3.9516,0.0815 0.041,0 c -0.023,0.12023 -0.051,0.23874 -0.082,0.36664 l -0.041,0 0.082,-0.36664 z m -17.314,0.0407 0.2037,0.0407 -0.2445,0.81476 -0.2037,-0.0407 0.2445,-0.81477 z m 14.7474,0.0407 c 0.1068,0.0985 0.258,0.168 0.4074,0.24443 l -0.1629,0.3259 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36664 z m -21.9175,0.16295 0.082,0 c 0.01,0.0632 0,0.14341 0,0.20369 l -0.082,-0.20369 z m 32.4689,0 0.3259,0.5296 -0.4481,-0.12222 0.1222,-0.40738 z m -33.2429,0.36664 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1222,-0.0407 z m 6.7626,0.16296 0.2037,0.0815 -0.7333,2.81096 -0.2037,-0.0815 0.7333,-2.81096 z m 9.4515,0 -0.2037,0.81477 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89624 0.2037,-0.0407 z m 1.5888,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17119 -0.5033,0.28724 -1.0185,0.40739 l 0.082,-0.24444 0.937,-0.32591 z m 8.5959,0.12222 c 0.1067,0.18437 0.2374,0.33745 0.3666,0.48886 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1301,0.14364 0.2037,0.2037 l -0.163,0.65182 -0.2037,-0.0407 c 0.071,-0.26674 -0.1676,-0.49256 -0.6111,-0.61108 l 0.2445,-0.85551 z m 1.0184,0.0407 0,0.12222 -0.082,-0.0815 0.082,-0.0407 z m 5.5813,0.0407 0.4481,0.12221 -0.041,0.2037 -0.4889,-0.12222 0.082,-0.20369 z m -24.1989,0.0407 0.1222,0.44811 0.2444,0.89626 -0.4481,0.73329 0.3259,-0.12222 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 -0.2037,-0.24443 -0.2444,-0.0815 -0.082,0.44813 -0.2445,-0.0407 0.6519,-2.40357 z m -1.2222,0.0815 0.2037,0.0815 -0.1222,0.5296 -0.2037,-0.0407 0.1222,-0.57034 z m 7.1293,0 0.2037,0.0407 -0.082,0.36664 -0.2037,-0.0407 0.082,-0.36664 z m 14.5438,0.0407 -0.082,0.24443 0.6926,0.16295 0.082,-0.20368 -0.6926,-0.2037 z m -28.6802,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.17959 -0.3023,0.32895 -0.5296,0.44812 l -0.041,-0.2037 c 0.1448,-0.11437 0.3062,-0.20676 0.4889,-0.24442 z m 13.3624,0.20369 c 0.1272,0.1138 0.2391,0.22321 0.2851,0.32591 l -0.2851,-0.0815 0,-0.24443 z m -12.955,0.20369 0.041,0 0.3259,0.12222 c 0.028,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77403 -0.2037,-0.0407 c 0.1427,-0.53336 0.011,-0.85797 -0.2851,-0.93699 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.082,0 0,-0.0407 z m -2.5665,0.0407 0.082,0.24443 -0.1223,-0.0407 0.041,-0.20369 z m 13.4438,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.163,0.16295 0,-0.48886 z m 8.5552,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.0184,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4889,0.0815 l 0.082,-0.28517 z m -19.4324,0.0815 0.1629,0.0407 -0.082,0.32591 -0.082,-0.36665 z m 13.8105,0.12221 0,0.52961 -0.041,0.0407 -0.041,0.16294 -0.2445,0 0.2037,-0.69255 0.1222,-0.0407 z m 0.8555,0 0.937,0 -0.041,0.16296 0,0.12221 -0.2445,0 -0.2851,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28517 z m 3.0554,0.16296 -0.082,0.36665 -0.3667,0 -0.1222,-0.12222 0.041,-0.16295 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.044,0 c 0.6945,0.36416 0.9331,1.01469 0.6926,1.9147 l -0.4889,-0.12221 -0.1629,0.5296 0.3666,0.57034 -0.8555,1.26289 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28517 0.1629,1.30363 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57033 c -0.1386,0.96297 0.1611,1.50359 0.937,1.71102 l -0.2444,0.16295 -0.082,0.24443 0.082,0.61108 -1.3444,-2.03693 -0.2037,-0.0407 0.163,-0.61108 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51721 -0.6518,-1.26289 l 0.1629,-0.61108 0.2037,0.0407 -0.082,0.44812 0.6926,0.20369 0.082,-0.44811 -0.4074,-0.12222 0.2444,-0.81478 0.4074,0.12222 0.2037,-0.81477 -0.4074,-0.12221 0.082,-0.36665 0.4481,0.12221 0.082,-0.36664 -0.4073,-0.12221 0.1629,-0.61109 c 0.3695,0.0988 0.5984,-0.13822 0.8148,-0.65181 0.1069,-0.4 -0.01,-0.61477 -0.4481,-0.7333 l 0.1629,-0.61107 z m -24.5248,0.0407 0.4889,0.12221 -0.4074,0.57034 -0.2444,-0.0815 0.1629,-0.61107 z m 23.3027,0 c 0.1376,0.0728 0.2979,0.11503 0.4481,0.16295 l -0.1222,0.40738 -0.3259,-0.52959 0,-0.0407 z m -16.703,0.0815 0.6518,0 0.2037,0.24444 0.163,0 -0.163,0.61107 -0.611,0 -0.2445,-0.85551 z m 5.7035,0.2037 0.082,0 c -0.036,0.16124 -0.082,0.31654 -0.1222,0.44812 l -0.082,0 0.1222,-0.44812 z m 4.8886,0.0407 0,0.16294 -0.082,0.24444 -0.2037,0 0.041,-0.2037 0.2445,-0.20368 z m -7.7404,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.1222 z m -8.6366,0.0815 0.6518,0.36665 -0.2851,1.01846 -0.2037,-0.0815 -0.2445,-0.93699 0.082,-0.36665 z m 20.899,0 0.4889,0.12222 0.3667,1.14068 -0.1223,0.44813 -0.2037,-0.0407 0.1223,-0.44813 -0.4482,-0.12221 -0.041,0.20369 0.2445,0.7333 -0.2445,0.12221 c -0.1069,0.40003 0.086,0.69626 0.5296,0.81477 l -0.5703,0.24443 0.082,-0.36665 -0.4074,-0.12221 -0.3259,2.93318 -0.082,0.16294 -0.5703,-0.3259 0.082,-0.20369 0.4073,-0.77403 c 0.069,-0.55307 -0.1193,-0.87896 -0.4888,-0.97774 l 0.1222,-0.36663 0.4889,0.12221 0.041,-0.24443 -0.2037,-0.28517 0.3259,-0.0815 -0.041,-1.09994 0.4481,-1.58881 z m -18.9843,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4074,-0.12221 0.041,-0.2037 z m 11.2032,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2852,-0.52961 0,-0.0407 z m -19.962,0.0407 0.3259,0.48887 -0.2445,-0.24444 -0.2036,-0.0407 0.1222,-0.2037 z m 1.0999,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65183 -0.2037,-0.0815 0.2037,-0.77404 z m 31.0838,0 c 0.044,0.10287 0.088,0.18377 0.1629,0.20369 l 0.2037,0.0407 0,0.44813 -1.711,6.3552 -0.4889,-0.12221 0.2852,-0.12222 0.041,-0.20368 0.6926,-3.46278 0.2851,-0.12221 0.041,-1.05921 0.4889,-1.95545 z m 1.0184,0 0.2037,0.0407 -0.2037,0.65182 -0.2036,-0.0815 0.1629,-0.57034 0.041,-0.0407 z m -15.6437,0.12222 0.041,0.44812 -0.1222,0.0407 -0.082,-0.32591 0.163,-0.16295 z m 12.792,0 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -9.5736,0.0407 c 0.1346,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1223,0.48887 -0.4481,-0.16296 0.082,-0.40739 z m -20.9805,0.32592 0.4888,0.12221 -0.082,0.2037 -0.1629,1.3851 c 0.01,-0.18441 -0.023,-0.35229 -0.082,-0.57034 l -0.2037,-0.81476 0.041,-0.32591 z m 3.2998,0.0407 0.4482,0.0815 c -0.1069,0.39998 -0.01,0.695 0.2851,0.77403 l -0.041,0.20369 c -0.4433,-0.11854 -0.7027,-0.10371 -0.774,0.16296 l -0.2037,-0.0407 -0.082,-0.61108 0.3666,-0.57034 z m 16.8252,0.0407 0.2851,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.7698,0.16296 0.2037,0.0407 -0.041,1.0592 -0.4074,-0.12222 0.2445,-0.97772 z m 20.125,0.20369 0.4482,0.16295 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.20369 z m 3.0962,0 0.2037,0.0407 -0.4481,0.937 -0.2037,-0.0407 0.2037,-0.81478 0.2444,-0.12221 z m -19.5139,0.12221 0.937,0.0407 -0.1222,0.57034 -0.9778,0 0.163,-0.61108 z m 8.5959,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.748,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.3628,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.5139,0.0407 0.3259,0.52961 -0.2852,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1327,-0.43446 0.163,-0.61109 z m -4.3183,0.16296 0.2037,0.0407 -0.1223,0.36665 -0.2036,-0.0407 0.1222,-0.36665 z m 32.3059,0 0.2037,0.0407 c -0.107,0.40001 -0.01,0.69503 0.2852,0.77403 l -1.4259,3.50351 0.2037,0.24443 -0.041,0.2037 -0.5296,0.89624 -0.2037,-0.0407 0.1629,-1.42585 0.2445,-0.1222 0.1222,-0.44813 0.6926,-3.42204 0.2851,-0.20369 z m -35.3613,0.12222 0.1222,0.8555 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18349 -0.041,0.28517 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.3667,0.16296 c -0.01,-0.0436 -0.031,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34437 z m 9.4514,0.0407 0.6111,0.16296 -0.041,0.20369 -0.6926,0.0815 0.1222,-0.44813 z m -4.8072,0.24444 0.2037,0.0815 -0.163,0.52959 -0.2037,-0.0407 0.163,-0.57033 z m 28.9653,0 0.2037,0.0407 -0.2852,1.01846 -0.2037,-0.0815 0.2852,-0.97772 z m -20.4916,0.12221 0.3666,0.5296 -0.1629,0.61108 -0.2037,-0.32591 -0.4074,-0.12221 c -0.1069,0.40001 -0.4121,0.56665 -0.8555,0.44812 0.1069,-0.40002 0,-0.65551 -0.4482,-0.77404 l 0.041,-0.20369 0.4074,0.12222 0.163,0.24443 c 0.08,-0.29997 0.4464,-0.4543 1.0999,-0.5296 z m 10.8365,0.20369 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1179,0 0.8963,0.24443 -0.4481,1.75176 c -0.2956,-0.079 -0.3768,-0.54439 -0.163,-1.34437 l -0.4481,-0.0815 0.1629,-0.57034 z m -6.1515,0.0407 0.2851,0.5296 -0.041,0.2037 -0.2851,-0.57035 0.041,-0.16295 z m -28.558,0.0815 -0.2037,1.62954 -0.8148,0.24443 0.2445,-0.89624 c 0.449,-0.22295 0.7308,-0.54687 0.774,-0.97773 z m 0.6926,0 0.2444,0.0815 -0.082,0.36665 -0.2852,-0.0815 0.1223,-0.36665 z m 21.8767,0.0407 0.163,0.0407 0,0.24444 -0.4074,0 0.2444,-0.28518 z m -9.5329,0.0407 0.2037,0 0.163,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.9663,0.24444 0.4889,0.12221 -0.082,0.24444 -0.5296,0.93698 -0.163,-0.24443 -0.2037,-0.0815 -0.5296,0.28517 0.041,0.65181 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44813 l -0.1629,-0.24443 -0.2037,-0.0407 -0.2445,0.12222 0.2037,-1.62954 0.6111,0.16295 0.1222,-0.40738 c 0.7391,0.19754 1.1561,0.0741 1.2629,-0.32591 z m 2.8517,0.12221 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.8626,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.6405,0.0407 0.2037,0.0815 -0.082,0.40738 -0.2445,-0.0407 0.1222,-0.44813 z m -9.2885,0.12222 0.2037,0.0815 -0.2444,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12221 0,0.0407 -0.2037,-0.0407 0.041,-0.12221 z m 15.7252,0.0815 c 0,0.20653 -0.13,0.30826 -0.3259,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.8555,-0.20369 z m 3.2591,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.5481,0 0.4074,0 0.082,0.12221 -0.2037,0.81478 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.20369 -0.2037,-0.20369 -0.4074,0 -0.163,-0.24443 0.1222,-0.44813 c 0.1893,0.0506 0.3495,-0.044 0.4889,-0.24443 z m 1.2222,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59857 -0.6519,0.7333 l -0.1222,-0.0407 0.4482,-0.77404 z m 4.4405,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.8811,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.847,0.0815 0.4074,0.12222 -0.1222,0.44813 -0.4074,-0.12222 0.1222,-0.44813 z m 9.7366,0.12222 0.163,0 -0.163,0.57035 0,-0.57035 z m -11.9772,0.16296 -0.082,0.36665 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.12221 z m 4.9702,0.0407 0.6925,0.20369 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.3259,0.36665 c -0.3478,0.17232 -0.5887,0.44676 -0.7333,0.81477 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1401,-0.44387 -0.02,-0.72708 -0.4074,-0.81477 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44812 z m 16.9066,0 0.4074,0.12221 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24443 z m -14.4216,0.20369 0.1222,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1222,0 l 0,-0.0407 z m -13.729,0.24443 0.4482,0.0815 -0.082,0.20369 -0.4074,-0.12221 0.041,-0.16296 z m 20.1658,0 0.1629,0.0815 -0.2037,0.0407 0.041,-0.12222 z m -10.4699,0.0407 0.1629,0.24443 0.2037,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.3259,0.0407 -0.1473,0.0926 -0.295,0.12532 -0.4888,0.0815 l -0.2037,0.65182 c 0.3876,0.0877 0.6345,0.21898 0.774,0.44812 l -0.4889,0.24443 0.4074,0.0815 0.082,-0.28517 c 0.1221,0.22481 0.1522,0.50258 0.041,0.85552 l 0.6519,0.16294 -0.3667,1.09995 -0.6111,-0.12222 0,2.1184 -1.3444,1.14068 0.2037,0.32591 -1.7517,2.40358 0.4481,-0.12222 0.2444,0.0815 -0.1222,0.40738 -0.2852,-0.0407 -0.2851,-0.3259 -0.2852,-0.0407 -0.1222,0.48885 -0.2852,-0.0815 2.4851,-7.78106 0.2444,-0.0407 -0.2852,0.97773 0.6519,0.12221 0.4073,-1.30363 -0.4481,-0.0815 0.041,-0.12221 -0.2037,-0.0815 -0.2852,0 0.041,-0.12222 0.2852,-0.0407 0.082,-0.20368 -0.2444,-0.0815 0.1629,-0.57034 -0.2037,-0.28518 0.082,-0.20368 0.2852,-0.0815 z m 6.6811,0.0407 0.2037,0.0407 -0.041,0.12222 -0.1629,-0.16296 z m 7.8626,0 0.041,0.16296 -0.2851,-0.0815 0.2444,-0.0815 z m -20.0435,0.12222 0.4482,0.77403 -0.326,0.16295 -0.1629,-0.0407 0.041,-0.89624 z m -0.6925,0.0407 0.2037,0.0407 -0.1223,0.44812 -0.2037,-0.0407 0.1223,-0.44811 z m 19.8805,0.16294 -0.082,0.24444 -0.2037,-0.0407 0,-0.0815 0.2852,-0.12222 z m -1.3851,0.12222 0.082,0.12222 0,0.28517 -0.4481,-0.12222 0.1629,0 0.2037,-0.28517 z m 3.8702,0.12222 0.2444,0.0815 0,0.28517 0,0.65182 0,0.12221 -0.3259,0.12222 -0.4074,-0.0815 0.2852,-1.14068 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.3803,0.12221 0.3666,0.48887 -0.4888,-0.12222 0.1222,-0.36665 z m 35.4021,0.0407 0.2037,0.0407 -0.1223,0.36665 -0.2037,-0.0407 0.1223,-0.36665 z m -11.4477,0.12222 -0.041,0.20369 -0.774,0.0815 -0.2037,-0.0815 0,-0.0407 1.0185,-0.16295 z m 6.4368,0 -0.041,0.20369 0.4074,0.0815 0.041,-0.16296 -0.4074,-0.12221 z m -27.1728,0.24443 0,0.20369 -0.4074,0.20369 0.3259,0.32591 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.32591 -0.1222,-0.0407 0,-0.0407 0.5296,-0.3259 z m 3.1369,0 0.3666,0.0815 -0.2444,0.69255 -0.3259,-0.0815 0.2037,-0.69255 z m 8.3107,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.6068,0.0815 0.2037,0.0407 -0.3667,1.34436 c -0.019,-0.29821 -0.091,-0.48678 -0.2444,-0.57033 l 0.041,-0.32592 0.3667,-0.48885 z m 10.3069,0.0815 0.2445,0.0815 -0.1222,0.44812 -0.2852,-0.0407 0.1629,-0.48885 z m 2.1185,0.0407 0.2444,0.0407 -0.082,0.24443 0.041,0.16295 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44811 -0.2037,0 0.2444,-0.8555 0.163,-0.28517 -0.041,-0.0407 0.082,-0.24443 z m 1.3851,0.0407 0.2444,0.28517 0,0.28517 c -0.1625,-0.11746 -0.2809,-0.25347 -0.4074,-0.36665 l 0.163,-0.20369 z m -7.6997,0.20369 0.2852,0.0407 -0.163,0.48886 -0.2444,-0.0815 0.1222,-0.44813 z m 13.9735,0.0815 0.2037,0.0407 0.3259,0.48887 -0.082,0.24443 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44812 z m -16.54,0.0815 -0.1222,0.36665 -0.041,1.42585 -0.6519,0.81477 0.3667,0.0815 -0.4481,0.12222 -0.082,0.24443 0.2851,0.3259 -0.041,0.20369 -0.5703,0.61109 0.082,0.97772 -0.8555,1.42585 0.2852,0.28516 -0.6111,-0.12221 0.4481,-1.54806 -1.5073,0.8555 0.2851,0.28518 -1.0184,0.44811 c -0.1112,-0.21925 -0.218,-0.41746 -0.326,-0.65181 -0.01,-0.0107 0,-0.03 0,-0.0407 l 0.1223,-0.77403 0.2851,0.0815 0.6926,0.44812 c -0.2006,-0.6795 -0.5592,-1.09061 -1.1407,-1.22216 l 0.2037,-0.69255 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 -0.081,-0.0407 c 0.068,-0.22572 0.108,-0.44974 0.163,-0.65181 l 0.1629,-0.12221 0.041,-0.2037 -0.041,-0.12221 c 0.059,-0.23984 0.045,-0.41042 0.082,-0.61108 0.2166,-0.0412 0.4501,-0.15496 0.6926,-0.36665 -0.087,0.52223 -0.036,0.83279 0.2444,0.89625 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.11243 -0.3751,0.24349 -0.5296,0.36665 l -0.041,0.24442 0.4074,0.12222 -0.3259,1.67028 0.5703,0.12222 0.1222,-0.40739 0.4482,-0.20369 -0.2852,-0.28517 -0.2852,-0.0815 0.082,-0.2037 1.5074,0.12222 0.2037,-0.69256 -0.5296,-0.12222 0.1222,-0.40738 0.5703,0.12222 0.3667,-1.14068 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54807 0.3259,-0.12222 z m -6.1108,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.0359,0 0.1629,0.24444 0.2037,0.0815 0.3259,-0.12221 -0.041,0.16295 c -0.3961,0.0368 -0.7256,0.11789 -0.9777,0.2037 l -0.041,0 -0.1629,-0.0407 0.2851,-0.44813 0.2445,-0.0815 z m -12.018,0.0815 0.6111,0.12222 -0.1222,0.40739 -0.4889,-0.52961 z m 3.9517,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.8072,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.8105,0.0815 0.2852,0.0815 -0.082,0.61107 -0.3667,0.12222 0.041,-0.40738 0.1222,-0.40739 z m 29.5764,0.0407 0.2037,0.0407 -0.1222,0.36664 -0.2037,-0.0407 0.1222,-0.36665 z m -7.4552,0.32591 0.4074,0.12221 -0.082,0.44813 -0.4074,-0.24444 0.082,-0.3259 z m -26.358,0.0407 0.4073,0.12221 -0.082,0.20369 -0.4073,-0.12221 0.082,-0.20369 z m 1.6702,0 0.2037,0.24442 -0.041,0.2037 -0.3259,-0.32591 0.163,-0.12221 z m 18.1696,0.0407 c 0.1619,0.0875 0.2757,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.13961 -0.041,0.2037 l -0.5297,0 c 0.032,-0.17322 0.06,-0.33608 0.082,-0.48887 z m -3.2591,0.20369 0.1629,0 0,0.0407 -0.1629,-0.0407 z m -12.1402,0.2037 -0.082,0.57034 -0.041,0.24443 -0.2852,-0.0815 0.041,-0.61108 0.3667,-0.12222 z m -3.2999,0.0815 0.2445,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.1629,-0.48886 z m 10.7144,0.0407 0.7333,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16294 0,0.0407 -0.1223,0.28518 -0.082,0 -0.2036,-0.28518 c 0.017,-0.32329 -0.065,-0.59918 -0.163,-0.81476 z m 20.0027,0 c -0.1782,0.66666 0.096,1.38753 0.6926,2.1184 l 0.2444,-0.12222 0.163,0.24443 -0.041,0.16296 c -0.2464,-0.0659 -0.4957,0.0124 -0.6926,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1222,-0.0407 l -0.3666,0.12221 c 0.1402,-0.44386 0.062,-0.72708 -0.3259,-0.81478 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.2037 c 0.2165,-0.51356 0.4453,-0.70985 0.8148,-0.61107 l 0.1222,-0.40739 -0.6111,-0.16295 0.8555,-0.65181 z m 2.4036,0.0407 0.326,0.48887 -0.1223,0.44812 -0.2851,-0.57034 0.082,-0.36665 z m -17.9658,0.0815 0.2852,0.0815 -0.1222,0.40739 -0.2445,-0.32591 0.082,-0.16296 z m -14.2586,0.0407 0.2852,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.218,0.0873 -0.3259,0.12222 l 0.1222,-0.36665 z m 15.7659,0 0.7333,0 -0.082,0.2037 -0.6925,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.9924,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.6769,0 0.2037,0.0407 -0.2037,0.81477 -0.2037,-0.0407 0.2037,-0.81477 z m -28.4357,0.16295 0.5703,0.12222 -0.2444,0.69255 -0.3667,-0.61107 0.041,-0.2037 z m 2.1591,0.0407 -0.082,1.14068 0.6111,0.16296 0.082,-1.18142 -0.6111,-0.12222 z m 19.5547,0.12222 0.1629,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1223,-0.40738 z m -13.4438,0.0407 0.1222,0 0.2852,0.73329 -0.1223,0.16295 -0.1629,0 -0.2037,-0.61108 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20368 z m 6.3145,0 0.4074,0 -0.082,0.48886 -0.3259,0 0,-0.48886 z m 4.0331,0 0.2445,0.0407 -0.041,0.16295 -0.2445,-0.0815 0.041,-0.12221 z m -25.7062,0.0815 0.082,0.0407 -0.041,0.20369 -0.082,-0.0407 0.041,-0.20369 z m 38.1723,0.0815 -0.041,0.16296 0.041,0.0407 0,-0.2037 z m -21.5508,0.0407 0.082,0 0,0.32591 -0.2037,-0.0407 0.1222,-0.28518 z m -10.918,0.24444 c 0.2732,-0.0456 0.6794,-0.0134 1.1814,0.0407 l -0.1222,0.40738 c -0.3876,-0.0877 -0.7501,0.1822 -0.937,0.77403 l -0.5704,-0.89624 c 0.053,-0.16645 0.1749,-0.28029 0.4482,-0.32591 z m 14.0956,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.774,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.1549,0.0407 0.4889,0.12222 -0.2852,1.01846 -0.3667,-0.48885 0.163,-0.65183 z m -17.9658,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12222 z m 10.8365,0 0.2037,0.0407 -0.041,0.12222 -0.2444,0.12222 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28518 z m 9.5736,0.12222 -0.1222,0.0815 -0.082,0.16295 0.2037,0.24444 0,-0.48887 z m -13.8104,0.0815 0.4073,0.0815 -0.3259,0.44811 -0.3259,-0.0815 -0.041,-0.16294 0.2852,-0.28517 z m -10.4292,0.0407 0.1222,0.0815 0,0.24444 -0.1629,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28517 z m 13.8512,0.0407 0.6111,0.52959 0.041,0.0407 -0.1222,0.61108 c -0.1738,-0.13018 -0.3351,-0.28385 -0.4889,-0.36665 -0.043,-0.24559 -0.071,-0.51515 -0.041,-0.81476 z m -8.5551,0.0407 0.3666,0 0,0.24444 -0.3666,0 0,-0.24444 z m -16.4585,0.0815 0.1629,0.0407 -0.1222,0.40738 -0.2852,-0.0815 0.082,-0.28516 0.163,-0.0815 z m 4.1961,0.2037 0.5296,0.1222 0,1.18142 c -0.3391,-0.0767 -0.521,-0.50904 -0.5296,-1.30362 z m 1.7925,0.16294 -0.2445,0.69256 0.6519,0.16296 0.2037,-0.69256 -0.6111,-0.16296 z m 3.0146,0.24443 c 0.537,0.1214 0.591,1.23745 0.163,3.29982 -0.149,0.24871 -0.3559,0.70204 -0.5703,1.14068 l -0.5704,-0.12222 -0.5296,-1.34436 c 0.3877,0.0877 0.5932,-0.0857 0.7333,-0.5296 l 0.082,-1.18142 0.2037,0.24443 0.6518,0.16296 -0.1629,-1.67029 z m 9.6959,0.0407 0.1222,0.12222 -0.2444,0.28517 -0.1222,0.44812 -0.1223,0 -0.2851,-0.0815 -0.041,-0.44812 0.082,-0.12221 0.2444,0.24443 0.3667,-0.44813 z m 5.3775,0 c 10e-5,0.30601 -0.1563,0.44816 -0.5703,0.44813 l 0,0.2037 0.4074,0 -0.3667,0.65181 -0.4074,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.4074,-0.77403 c 0.1595,-0.009 0.3126,-0.0407 0.4889,-0.0407 z m -13.4438,0.0407 0.2852,0.0407 -0.4482,1.2629 -0.082,0.32591 c 0.198,0.0814 0.3667,0.16669 0.5297,0.24442 l -0.2445,0.44813 -0.1222,-0.2037 -0.3259,0.16296 -0.2444,-0.0407 c 0.067,-0.14188 0.1305,-0.2725 0.2037,-0.48886 l -0.2037,0 0.1629,-0.48886 0.041,0.0407 0.2852,0 0.1629,-1.30364 z m -8.1885,0.0815 0.5703,0.12222 -0.1629,0.40739 -0.4074,-0.52961 z m 13.1586,0.0815 0.082,0.0815 -0.1629,-0.0407 0.082,-0.0407 z m 4.3591,0 0.3259,0 c -0.046,0.25427 -0.075,0.44865 -0.081,0.65181 l -0.6111,0 0.082,-0.57033 0.2852,-0.0815 z m -3.1369,0.0815 0.082,0.48885 c -0.2042,-0.10676 -0.3488,-0.23498 -0.4481,-0.40738 l 0.3666,-0.0815 z m -1.7518,0.0815 -0.1222,0.48886 -0.1629,0 0,-0.40738 0.2851,-0.0815 z m 18.0066,0.0407 0.2037,0.0407 -0.1629,0.65181 -0.2037,-0.0815 0.1629,-0.61108 z m 0.6518,0 0.4889,0.12222 -0.4074,1.46658 -0.1629,-0.0407 c -0.083,-0.0188 -0.171,0.0209 -0.2445,0.0407 l 0,-0.36664 0.3259,-1.22216 z m -21.2249,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.5035,0.12222 c 0.081,0.0361 0.1343,0.0796 0.2037,0.12221 l -0.2444,0.0407 0.041,-0.16294 z m -12.1809,0.0815 0.2852,0.0407 -0.2852,0.89625 -0.2852,-0.0407 0.2852,-0.89624 z m 1.7925,0.16294 -0.1222,0.44813 0.6111,0.12221 -0.4889,-0.57034 z m 19.5954,0 c 0.045,0.041 0.1551,0.11945 0.2037,0.16296 l -0.082,0.5296 -0.8963,2.85169 -0.5703,0.81478 0.3667,1.0592 -0.6519,-0.16296 -0.3666,2.07767 -0.5296,-0.12222 0,-0.97772 0.3259,-0.12222 0.082,-0.20369 0.1629,-1.46658 0.4889,-0.57035 -0.1222,-0.12221 c 0.028,-0.0546 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.12221 -0.4074,-0.57034 0.3666,-0.12222 0.2445,0.0407 0.082,-1.14067 0.3666,-1.14068 0.5296,0.12221 0.163,-0.61108 z m 1.2629,0.0815 0.1222,0.16295 -0.1629,-0.0407 0.041,-0.12222 z m 1.8333,0.12222 0.082,1.62954 0.4888,0.12222 0.2037,-0.2037 -0.2444,0.81477 c -0.1147,-0.18977 -0.1569,-0.28133 -0.2852,-0.48886 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4074,-0.65182 0.4482,-1.26289 z m 0.5296,0 0.3666,0.0815 0,0.0815 -0.2444,0.36665 -0.2444,-0.0815 0.1222,-0.44812 z m 3.7887,0.16295 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40739 z m 1.7925,0.24443 0.2037,0.0815 0,1.0592 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.163,0.12222 l -0.3666,-0.0815 0.3259,-1.22216 z m -32.1022,0.0407 0.2444,0.0815 -0.9777,3.09612 -0.2445,-0.0407 0.9778,-3.13687 z m 29.5764,0.16296 0.082,0.0407 -0.163,0.61107 -0.2037,-0.0407 0.1223,-0.44812 0.1629,-0.16295 z m -14.0142,0.16295 0.2037,0 0,0.48886 -0.2037,0 0,-0.48886 z m 11.6921,0.0815 0.2037,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12221 z m -24.2804,0.0815 -0.1629,0.44813 0.611,0.16295 0.163,-0.48886 -0.6111,-0.12222 z m 27.1321,0.0407 0.2037,0.0407 0.041,0.69256 -0.4074,-0.12222 0.163,-0.61108 z m -29.0468,0.0407 0.2852,0.0407 -0.2037,0.65182 -0.2445,-0.0815 0.163,-0.61108 z m 31.5726,0.20369 0.4074,0.12222 -0.082,1.0592 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14068 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.5547,0.24443 0.041,0 0,0.44813 -0.2036,0 0.1629,-0.44813 z m -5.5404,0.0407 0.6925,0.16296 -0.5703,1.18142 -0.3259,0.44811 -0.082,0 0.2037,-0.61107 0,-1.0592 c 0.035,-0.0284 0.048,-0.0738 0.082,-0.12222 z m 5.9478,0.2037 0.4074,0 0,0.48885 0.2445,0 0.041,-0.0407 -0.041,0.28517 -0.326,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.3666,-0.0815 -0.163,0.0407 c 0.1409,-0.12157 0.2037,-0.25688 0.2037,-0.44812 z m 13.892,0 0.2444,0.0407 0.1222,0.73329 -0.082,0.24443 -0.4074,-0.61108 0.1223,-0.40738 z m -11.8143,0.20369 0.082,0 -0.2037,0.89625 -0.082,0.0407 -0.2037,-0.2037 c -0.1035,0 -0.1645,0.009 -0.2444,0.0407 l 0.2037,-0.65182 0.4481,-0.12221 z m 0.7741,0 0.4888,0 0.163,0.0407 -0.2445,0.77403 -0.5296,0.32591 -0.2444,0 0.082,-0.20369 0.163,0 0,-0.2037 0.2851,-0.0815 -0.2851,-0.28517 0.1222,-0.36664 z m 2.8517,0 0.6518,0 -0.082,0.20369 -0.6111,-0.12221 0.041,-0.0815 z m -22.5286,0.16295 0.6518,0.16295 -0.4889,0.61109 -0.3666,-0.0815 0.2037,-0.69256 z m 14.9511,0.12221 0.2037,0 0.3667,0.0815 -0.4074,0.2037 -0.041,0.20369 0.041,0.12222 -0.163,0.0407 -0.2036,0 0.2036,-0.65183 z m 20.0028,0.0407 0.2037,0.0407 -0.041,0.2037 -0.2037,-0.0407 0.041,-0.2037 z m -18.8213,0.16296 0.2444,0.0407 -0.041,0.20369 -0.2852,0.0407 0.082,-0.28517 z m 6.1923,0 0.2852,0.0407 -0.041,0.0815 -0.2445,-0.0815 0,-0.0407 z m 6.1516,0.20369 0.6518,0.12222 0.2851,0.85551 c 0.027,0.31399 0.036,0.61618 -0.041,0.93698 l -0.2036,-0.0815 0.1629,-0.44812 -0.5703,-0.12221 -0.041,0.20369 0.3259,0.81477 -0.3259,0.12222 c -0.1052,0.33293 -0.023,0.6072 0.2851,0.77402 -0.041,0.10991 -0.074,0.22001 -0.1222,0.32591 l -0.2444,0.0815 0.1222,-0.40739 -0.5703,-0.12221 -0.2445,1.75176 c -0.1707,0.17432 -0.3679,0.37121 -0.5703,0.52959 l 0.2037,-0.28516 c 0.09,-0.61375 -0.1266,-0.99034 -0.6111,-1.09994 l 0.1222,-0.40739 0.6111,0.12222 0.1222,-0.28517 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18142 0.5296,-1.79249 z m -27.3766,0.0407 0.8148,0.40739 -0.3259,1.09994 -0.2852,-0.0815 -0.3259,-1.01846 0.1222,-0.40739 z m 2.4851,0.0407 0.5703,0.12222 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.20369 z m 32.0208,0.12222 0.2851,0.0407 -0.2037,0.69255 -0.2851,-0.0407 0.2037,-0.69255 z m -23.3027,0.0407 0.2037,0 0,0.20369 -0.2444,-0.0407 0.041,-0.16295 z m 10.144,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8143,0.28517 -0.3667,1.34436 -0.041,0 0.4074,-1.34436 z m -11.4884,0.0815 0.2444,0.0815 -0.082,0.2037 -0.2851,0.12221 0.1222,-0.40738 z m 10.3069,0 0.041,0 c 0.027,0.19875 0.01,0.41806 -0.041,0.65182 l -0.1629,-0.0407 0.1629,-0.61108 z m 1.5889,0 0.1222,0.0407 0,0.2037 -0.163,-0.0407 0.041,-0.20369 z m -16.3363,0.12221 0.1629,0 -0.4481,0.44813 -0.2037,0 0.4889,-0.44813 z m 3.1369,0 0.2851,0 -0.082,0.44813 -0.3259,0 0.1222,-0.44813 z m -22.4471,0.2037 0.082,0.12221 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.20369 z m 20.1657,0 0.5296,0 0.082,0.0815 -0.082,0.32592 -0.6111,-0.12222 0.082,-0.28517 z m -18.9028,0.0815 0.2037,0.0407 0,0.24444 c -0.066,-0.0966 -0.1384,-0.18401 -0.2037,-0.28518 z m 10.7143,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.163,-0.20369 0.3259,-0.28517 z m 19.7176,0 0.2037,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.1554,0.0407 0.6111,0.12221 -0.082,0.24444 -0.6111,-0.16296 0.082,-0.20369 z m 7.9441,0 0.163,0.0407 -0.2852,0.97772 -0.1222,-0.0407 0.2444,-0.97772 z m -29.4542,0.0815 1.2222,0.0815 -0.2037,0.61108 -1.2629,0 0.2444,-0.69255 z m 10.918,0.0407 0.6518,0 0,0.2037 -0.1222,0 -0.6111,-0.16296 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.2994,0.0815 0.2851,0.40738 -0.2851,0.44813 -0.2445,-0.0407 0.2445,-0.81477 z m 1.1406,0.3259 0.1223,0.61109 -0.2852,-0.0815 0.1629,-0.52961 z m 4.1554,0.0407 0.1222,0 c -0.064,0.20396 -0.057,0.39209 0,0.52961 l -0.041,0 -0.1222,0.40739 0.041,0.89624 -0.4074,0.48886 -0.2037,-0.0407 0.3259,-1.18142 -0.4481,-0.12221 0.2444,-0.81477 0.4074,0.12221 0.082,-0.28517 z m -17.2325,0.0407 0.3666,0 0,0.28517 -0.2444,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.774,0 0.4074,0 -0.163,0.57034 -0.2444,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.037,0 0.4073,0 -0.1222,0.69256 c -0.1459,0.15267 -0.3487,0.24965 -0.5703,0.32591 l -0.6111,-0.44813 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.414,0 0.5704,-0.19281 0.5704,-0.65182 z m -22.4472,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.7703,0.0407 0.8148,0.20369 -0.082,0.2037 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40739 z m 21.4286,0 0.2852,0.16295 -0.082,0.2037 -0.2852,-0.0407 0.082,-0.32591 z m -2.3221,0.0815 0.2852,0.0815 -0.2852,0 0,-0.0815 z m -14.2993,0.36665 0.4888,0.52959 -0.2037,0.65182 -0.041,0 -0.2444,-0.32591 -0.5296,-0.12221 c -0.048,0.151 -0.1391,0.27939 -0.2444,0.36664 l -0.8555,-0.24443 c -0.047,-0.23181 -0.2222,-0.40087 -0.6111,-0.48885 l 0.041,-0.2037 0.5703,0.12222 0.2037,0.24442 c 0.1053,-0.33289 0.5689,-0.44604 1.4259,-0.52959 z m 3.1776,0.32591 0.3667,0.44811 -0.6519,-0.12221 0.2852,-0.3259 z m 21.6731,0 0.1222,0.20368 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40738 z m -1.3444,0.12221 0.2037,0.36664 -0.041,0.2037 -0.2445,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.20369 z m -25.9099,0.40738 0.2444,0.0407 -0.1222,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -1.5074,0.0815 0.2037,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.1022,-0.11766 -0.1629,-0.16295 z m -3.9109,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.4889,0.61108 0,-0.48886 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12221 0.1559,0.20013 0.3052,0.42706 0.4889,0.65181 l -0.326,0.44813 -0.1222,-0.12222 -0.082,-0.16296 -0.2852,-0.0407 -0.6518,0.28517 0.041,0.61108 c -0.1697,-0.1506 -0.3284,-0.32459 -0.4888,-0.48887 l 0.082,-0.20369 -0.3667,-0.0815 c -0.1552,-0.17217 -0.3026,-0.34478 -0.4481,-0.52959 l 0.6518,0.12221 0.163,-0.48886 z m 11.7328,0.24443 0.4481,0 0,0.48886 -0.4481,0 0,-0.48886 z m 11.6921,0 0.1629,0 0,0.12222 -0.1629,-0.12222 z m -4.4406,0.0407 0.163,0.28517 -0.041,0.16295 -0.9778,0 -0.2851,0 0,-0.0407 c 0.097,0.0219 0.1954,0.0613 0.2851,0.0407 0.1795,-0.0411 0.3597,-0.19639 0.4889,-0.40738 l 0.3667,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.5296,0 0.5296,-0.0407 z m 2.1999,0.0407 c 0.1,0.0769 0.157,0.22678 0.163,0.36664 l -0.6926,0 0.163,-0.28517 0.3666,-0.0815 z m 17.1103,0.0407 0.163,0.0407 -0.041,0.16296 -0.163,-0.0815 0.041,-0.12221 z m -21.1434,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.15471 0.2444,0.28517 l -0.3666,0 0,-0.28517 z m 11.692,0.44812 0.5296,0.12222 -0.082,0.24443 -0.5296,-0.12221 0.082,-0.24444 z m -13.0364,0.0815 0.1629,0.12222 -0.082,0.20369 -0.082,-0.0407 0,-0.28517 z m -4.1146,0.0815 0.2444,0.0407 0.1222,0.0815 0.163,0 -0.082,0.24444 -0.3667,0.20369 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.20369 -0.1222,-0.28517 0,-0.0815 z m 25.421,0.0407 0.1222,0.44812 -0.1222,0.28517 0,-0.73329 z m -16.1733,0.16295 -0.041,0.2037 -0.041,0.48885 -0.937,-0.12221 -0.082,-0.0815 0.774,-0.36665 -0.3666,-0.0815 0.6925,-0.0407 z m -3.5036,0.0407 -0.041,0.12222 -0.2851,-0.0815 0.3259,-0.0407 z m 4.7665,0 0.4481,0.0815 0,0.0407 0,0.20369 c -0.1904,-2e-5 -0.2989,0.0479 -0.4074,0.12222 l -0.041,-0.44813 z m -2.5666,0.0407 -0.1222,0.44813 -0.6111,-0.0815 -0.2444,-0.24443 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.24443 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.2852,0 0.7333,-0.0407 z m 3.7888,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.2771,0.0407 0.1629,0.24443 0.2852,0 0.163,-0.12221 0.2851,0.28517 -0.3259,0.36664 c -0.7618,0.018 -1.1993,0.12476 -1.2629,0.32591 l -0.082,0.20369 0.2852,0.0815 0.5296,0 -0.2444,0.28516 c -0.3068,2e-5 -0.7246,-0.15748 -1.1815,-0.36664 l 0.1223,-0.32591 -0.3667,-0.0815 -0.3259,0.16296 c -0.3254,-0.18391 -0.6735,-0.42525 -1.0592,-0.69255 0.5299,0.11987 0.9408,0.0209 1.2222,-0.28517 0.452,0.0971 0.8964,0.16295 1.3851,0.16295 l 0.082,0 0.1629,0.0407 0.041,-0.16295 0.1222,-0.12222 z m 1.9147,0.0815 c 0.012,0.27818 0.1751,0.47167 0.6111,0.57033 l -0.041,0.12222 -0.163,0.0815 c -0.4016,-0.0334 -0.7787,-0.0703 -1.0999,-0.0815 0.1875,-0.17418 0.4654,-0.46551 0.6925,-0.69255 z m 25.1766,0 0.1222,0.0407 -0.2444,1.01846 -0.1222,-0.0407 0.2444,-1.01846 z m -10.9587,0.0815 0.2444,0.0815 -0.082,0.28516 -0.1629,0 0,-0.36664 z m -20.8176,0.12222 c 0.2965,0.34461 0.6324,0.71225 0.9777,1.09994 l -0.7333,-0.16296 c -0.2939,-0.25079 -0.5827,-0.52525 -0.8555,-0.81476 l 0.6111,-0.12222 z m -1.0592,0.24442 0.4481,0.7333 -0.3259,0 c -0.2313,-0.13531 -0.4738,-0.24993 -0.6925,-0.40739 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.4481,-0.0815 z m 23.2212,0.16296 0.5703,0.12222 0,1.18141 -0.4481,0.12222 -0.5296,-0.12222 0.4074,-1.30363 z m 11.2846,0.12222 -0.2037,0.40738 0.082,-0.32591 0.1222,-0.0815 z m -16.2955,0.12221 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.6769,0.12222 c 0.029,0.007 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.3666,0 0.2037,-0.0815 z m 29.169,0.0407 -0.041,0.36665 -0.2852,-0.0815 c 0.1196,-0.0874 0.2149,-0.19178 0.326,-0.28517 z m 3.8295,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.9777,0.0407 0.2036,0.0815 c -0.072,0.0648 -0.1696,0.10082 -0.2444,0.16296 -0.1919,0.15941 -0.368,0.33852 -0.5703,0.48886 -0.078,-0.0803 -0.1398,-0.20169 -0.2037,-0.3259 0.1572,-0.0786 0.2843,-0.16146 0.4481,-0.24444 l 0.3259,0.0815 0.041,-0.20369 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.5471,0.20369 -1.1,0.5296 -0.1629,0 0,-0.2037 c 0.1087,2e-5 0.2966,-0.11102 0.5296,-0.28516 l 0.7333,-0.0407 z m -4.9294,0.12222 c 0.1297,0.14532 0.2301,0.25608 0.3666,0.40738 l 0,0.20369 c -0.066,-0.0425 -0.1389,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.1629,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2445,-0.16296 l 0.163,-0.0407 0.041,-0.16294 z m 10.0217,0.0815 0.3667,0.24442 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.3259 z m -2.0369,0.3259 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 6.6404,0 0.4074,0 0,0.0815 -0.2444,0.12222 -0.163,0 0,-0.20369 z m -3.0961,0.12221 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.8256,0 0.2445,0.0407 0.2444,0.28517 0.082,0 0,0.40739 c -0.3615,0.0312 -0.758,0.0611 -1.1407,0.0815 l 0.3259,-0.48886 c 0.079,-0.004 0.1557,0 0.2445,0 l 0,-0.32591 z m -6.4774,0.32591 0.6518,0 0,0.48886 -1.0185,0 0.3667,-0.48886 z m 8.1885,0.0407 0.2851,0.0815 -0.041,0.12222 c -0.1062,0.0146 -0.2175,0.0272 -0.3259,0.0407 l 0.082,-0.24444 z m 9.4107,0.0407 c -0.02,0.28762 -0.042,0.5616 0.041,0.77403 l -0.163,0.0815 -0.1222,0.40739 -0.3259,-0.44813 0.5703,-0.81477 z m -12.0588,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2444,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2444,-0.24443 z m -8.6366,0.16296 0.6518,0 0,0.20368 -0.6518,0.20369 0,-0.40737 z m 1.0185,0 0.4888,0 0,0.20368 -0.4888,0 0,-0.20368 z m 3.585,0 0.3666,0 -0.3666,0.40737 -0.4889,0 0.4889,-0.40737 z m -15.1549,0.20368 0.041,0 0,0.20369 -0.4481,0 0,-0.0407 0.4074,-0.16296 z m 3.3406,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.9702,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 3.9109,0 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 18.0473,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.7295,0.0815 0.041,0 -0.1629,0.48886 -0.5296,-0.12221 0.041,-0.0815 c 0.1754,-0.0707 0.4149,-0.20083 0.611,-0.28517 z m 5.2961,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24443 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0579 -0.082,-0.0815 l 0.2444,-0.12221 z m -32.6319,0.28517 0.6519,0 0,0.24443 -0.6519,0 0,-0.24443 z m 2.9332,0 0.3667,0 -0.3667,0.5296 0,-0.5296 z m -3.5442,0.24443 0.4481,0 0,0.28517 -0.4481,0 0,-0.28517 z m 9.3292,0 0.611,0 1.0185,0.28517 1.2222,-0.28517 1.3036,0 0,0.48886 -5.1738,0 0,-0.20369 1.0185,-0.28517 z m 4.522,0 4.6035,0 -0.4482,0.48886 -0.2037,-0.20369 -1.0184,0.20369 -2.4851,0 -0.4481,-0.48886 z m 5.459,0 0.5703,0 0,0.28517 -0.5703,0 0,-0.28517 z m 15.3178,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.16296 0.041,-0.0407 z m -30.5134,0.28517 1.0184,0 0,0.20369 -1.0184,0 0,-0.20369 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3530);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\général\Charte graphique\OD\OD6.0\splashscreen\png\splashscreen_OD6.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       inkscape:connector-curvature="0" />
+    <path
+       transform="matrix(1.0736958,0,0,1.073713,-1.6436711,-956.29964)"
+       id="path3955"
+       d="m 652.3953,410.51549 -2.56647,0.48885 0,1.34438 0.57029,-0.61109 0.6518,0 0,0.2037 -1.22209,0.40739 0,2.07766 0.2037,0 -0.2037,0.28517 0,0.85551 c -0.1243,0.11339 -0.1889,0.18925 -0.2852,0.28517 l 0,0.48885 c 0.096,-0.0462 0.1847,-0.0603 0.2852,-0.12221 l 0,0.73331 -0.2852,0.24442 0,8.55509 0.6111,2.24062 0.082,0.57033 c -0.028,0.0807 -0.061,0.16777 -0.082,0.24444 0.066,0.0489 0.10789,0.10817 0.16289,0.16295 l 0,0.16296 -0.24439,-0.0815 c -0.024,-0.006 -0.057,-10e-4 -0.082,0 0.036,-0.12665 0.062,-0.25692 0.1222,-0.36665 l -0.1629,-0.61107 -0.4074,0.0815 0,3.87016 c 0.014,-0.002 0.027,0.004 0.041,0 l 0.2037,-0.0407 0.041,-0.0407 0,0.85551 c -0.09,0.26172 -0.1903,0.50209 -0.2852,0.69256 l 0,0.97773 0.2444,0.0815 -0.041,0.16295 -0.2036,-0.0815 0,11.12161 0.1629,-1.18141 0.1222,0.0407 0,1.01847 0.2037,0 0.48889,0.52959 c -0.1,0.0821 -0.1897,0.19341 -0.2444,0.36665 l -0.20369,-0.24443 -0.082,0 -0.163,-0.65181 0,0.57033 -0.041,0 -0.2444,0.12222 0,0.89624 0.2851,-0.12221 0,0.32591 -0.1222,-0.0407 -0.1222,0.40739 0.2444,0.0407 0.36669,-0.12222 0,0.24442 -0.36669,0 0,0.85552 -0.2851,0.0815 0,0.20368 0.2851,-0.0815 0,0.0815 c 0.41409,4e-5 0.57039,-0.14214 0.57039,-0.44812 l -0.2037,-0.20369 0.5296,0 -0.1222,0.0815 -0.082,0.24443 0.1222,0 0,0.0815 0.2037,0.24442 0,0.28517 -1.01849,0 0,0.24444 3.38127,0 c 0.2347,-0.63833 0.52699,-0.97773 0.93699,-0.97773 l 0,-0.40738 -0.5703,0 -0.28519,0.20369 -0.1629,0 -0.2445,-0.32591 0.082,-0.24442 -0.2444,0.0815 -0.65179,0 -0.3259,0.12222 0,-0.0407 -0.3667,-0.0815 -0.28519,0.2037 -0.4481,-0.2037 0,-0.24442 1.05919,0 0,-0.20369 -0.2037,-0.2037 0,-0.24443 0.4889,0.16295 -0.082,0.2037 0.57029,0.12222 0.2852,-0.0407 0.6111,0.20369 -0.082,0.24442 0.28519,0.0815 0.5703,-0.0407 0.65179,0.24444 0,0.20369 c -0.32189,7e-5 -0.81619,0.38652 -1.38508,1.18142 l 18.57674,0 c 0.082,-0.0802 0.16349,-0.16304 0.24449,-0.24444 0.212,0.0756 0.504,0.16494 0.7333,0.24444 l 1.46658,0 -0.24449,-0.40739 1.14069,0.0815 0.20369,0.0815 -0.041,0.16296 -0.52959,0.0815 0.73329,0 7.86254,0 0.041,-0.16296 c 0.061,0.0307 0.1356,0.0557 0.2037,0.0815 l -0.041,0.0815 1.30369,0 0.36659,-0.24444 -0.041,0.24444 2.56658,0 0.082,-0.24444 0.2444,0.0407 -0.082,0.2037 0.44809,0 0,-1.34438 -0.082,0.24444 -0.24439,-0.0407 0.1222,-0.40739 0.20369,0.0815 0,-9.04394 -0.12219,-0.0407 0.12219,-0.57034 0,-1.71102 -0.28519,0.0815 -0.041,0.20369 0.2037,0.32591 -0.6111,1.09994 -0.2037,-0.0407 0.93699,-3.50351 0,-1.58881 -0.28509,0.12222 -0.041,1.05921 -0.6519,2.36283 -0.57029,0.28516 1.18139,-4.39976 0.36669,0.57034 0,-1.34437 -0.16299,-0.0407 0.16299,-0.57034 0,-1.83323 c -0.25979,-0.39208 -0.52389,-0.78277 -0.81479,-1.14068 l 0.81479,0.0407 0,-1.22216 -0.20369,0.85552 -0.2445,-0.0815 0.326,-1.18142 0.12219,0.0407 0,-3.54425 -0.082,0.28517 -0.44819,-0.12222 0.52969,-2.03692 0,-7.98476 -0.041,0.12222 -0.81479,0 -0.65179,-0.36665 -0.81479,0 0.041,-0.20369 -0.3259,-0.5296 0.082,-0.28517 0.2037,0.0407 0.85549,0.77403 0.28509,-0.16296 0.082,-0.28516 c -0.31619,-0.38756 -1.75488,-1.08881 -4.31826,-2.07766 l -1.09989,0 2.81098,1.18141 -0.1223,0.40738 0.2852,-0.16295 0.69259,0.20369 -0.4889,0.81477 -0.20369,-0.0407 -0.1629,-0.28516 -0.2445,-0.0407 -0.3666,0.12222 0.1222,-0.40739 0.3666,-0.16296 0,-0.0407 -0.2444,-0.28517 -0.2444,-0.0815 -0.28519,0.2037 -0.2444,-0.0407 -0.6926,-0.48886 -0.57029,0.36664 -1.54809,-1.26288 -1.83329,0 -0.082,0.3259 -0.2444,-0.0407 0.082,-0.28516 -3.29977,0 1.01839,1.54805 0.2037,0.0407 -0.1629,0.69256 -0.44819,-0.12221 -0.082,0.20368 c 0.3277,0.0876 0.56239,0.55849 0.69259,1.38511 l -0.163,0.69256 -0.24439,-0.0815 0.12219,-0.44812 -0.73329,-0.2037 -0.1629,0.44813 0.4888,0.12222 -0.2444,0.89624 -0.4889,-0.12221 -0.20369,0.93698 0.44819,0.12223 -0.1222,0.40738 -0.44819,-0.12221 -0.1222,0.40738 0.44809,0.12221 -0.16289,0.69256 c -0.4097,-0.10951 -0.6971,0.12321 -0.937,0.69255 -0.022,0.0836 -0.038,0.17515 -0.041,0.24444 l -0.2444,-0.28517 -0.2037,0.28517 c -0.01,-0.0895 -0.01,-0.18894 0,-0.28517 l 0.2037,0 0,-0.2037 -0.163,-0.16295 c 0.014,-0.071 0.021,-0.12964 0.041,-0.20369 l 0.52959,0.16295 0.163,-0.65181 -0.40739,-0.61108 0.93699,-1.38512 -0.2037,-0.0407 0.2851,-0.16295 0.082,-0.28518 -0.2037,-1.46657 0.65189,-0.24444 -0.2445,-0.0815 0.4482,-0.61108 c 0.1537,-1.0675 -0.199,-1.68476 -1.05919,-1.9147 l 0.2851,-0.16296 0.082,-0.24442 -1.58879,0 0,0.0815 0.69259,0.16295 -0.93699,0.7333 c 0.085,-0.31634 0.048,-0.64018 -0.041,-0.97772 l -1.58878,0 -0.2037,0.69255 -0.2445,-0.0407 0.163,-0.65181 -0.93699,0 0.2444,0.48885 -0.081,0.44813 -0.3666,-0.57034 0.082,-0.36664 -0.4481,0 -0.85559,3.09612 c -0.097,-0.0451 -0.1796,-0.0767 -0.2851,-0.12222 l -0.041,0 -0.163,-0.24443 0.28519,-0.12222 0.082,-1.18141 0.3666,-1.42584 -0.4888,0 -0.61109,2.36282 -0.2444,0 0.611,-2.36282 -2.60718,0 -0.041,0.16294 0.4481,0.12222 -0.2852,1.0592 c -0.99879,-0.37943 -1.82208,-0.65177 -2.44428,-0.65181 -0.1476,0.37417 -0.43549,0.62501 -0.77409,0.77403 -0.016,-0.069 -0.022,-0.13369 -0.041,-0.2037 l -0.041,-0.20368 0.57039,-0.0815 0,-0.28517 c 0,-0.20089 -0.25459,-0.36699 -0.77409,-0.48887 l -0.041,-0.20368 -0.9777,0 c 10e-4,0.0136 0,0.0271 0,0.0407 l 0,0.24442 c -0.2787,-0.13728 -0.62399,-0.21603 -1.01849,-0.28516 l -1.71098,0 0,0.16294 -0.2444,0.0815 -0.082,-0.24442 -0.5296,0 0.041,0.1222 -0.163,0.16296 -0.082,-0.28516 -2.72948,0 -0.2037,0.97772 -0.3259,0 0,-0.48887 c 0.085,-0.17617 0.1553,-0.35747 0.2037,-0.48885 l -2.40358,0 z m 36.25729,12.83263 0,-0.93698 -0.041,0.0407 -0.16289,0.61108 0.20369,0.28517 z m -34.3426,-12.75116 -0.2851,0.44812 -0.4889,0.0815 0.082,-0.28517 0,-0.12222 0.6926,-0.12221 z m 13.48448,0.0407 0.4481,0.12222 -0.041,0.24443 -0.4481,-0.12221 0.041,-0.24444 z m -16.29536,0.36665 0,0.48887 -0.44819,0 0.44819,-0.48887 z m 7.82173,0 0.082,0.0407 0.2037,0.89625 c -0.2224,-0.0204 -0.4372,-0.0455 -0.6111,-0.0815 l 0.2037,-0.65181 -0.041,-0.16296 0.163,-0.0407 z m 1.46659,0 0.40739,0.48887 -0.40739,0 0,-0.48887 z m -2.56648,0.16296 0.082,0.28517 -0.1222,0.0407 c -0.071,-0.0791 -0.082,-0.18955 -0.082,-0.28517 l 0.1222,-0.0407 z m -6.15154,0.0407 0.44809,0 0,0.28517 -0.44809,0 0,-0.28517 z m 5.21455,0 0.2037,0 0,0.28517 -0.2037,0 0,-0.28517 z m -2.97397,0.28517 c 0,-0.005 0.038,0.005 0.041,0 l 0,0.24442 -0.1629,0 c 0.038,-0.0691 0.088,-0.17947 0.1222,-0.24442 z m 13.03639,0 0.2037,0.0815 -0.163,0.65181 -0.3259,-0.57034 0.2852,-0.16295 z m 11.81419,0.0407 0.4481,0.12221 -0.1222,0.48886 -0.4889,-0.12222 0.163,-0.48885 z m -5.82565,0.16295 0.2444,0.0407 -0.1629,1.58881 -0.28519,0.16295 -0.1222,0.48886 -0.5296,2.52579 -0.65179,-0.65181 1.09989,-2.64801 -0.2444,-0.28517 0.082,-0.20368 0.57029,-1.01847 z m 0.97769,0.0407 0.5704,0.12222 -0.2852,0.16295 -0.082,0.2037 -0.77399,3.87015 -0.2852,0.16296 -0.082,1.14068 -0.20369,0.77404 -0.5703,0 0.1629,-0.57034 c 0.2449,-0.0957 0.44809,-0.21289 0.44809,-0.36665 l -0.28509,-0.28516 1.38508,-5.21455 z m -17.72124,0.2037 0.24449,0 0.041,0.16295 -0.082,0.0407 -0.12229,0 -0.082,-0.20369 z m 14.54367,0.12221 0.2037,0.0407 -0.082,0.44813 -0.24439,-0.0815 0.12219,-0.40739 z m 12.6289,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2444,-0.0815 0.1222,-0.40739 z m -29.82055,0.0407 0.65179,0 0,0.2037 -0.65179,0 0,-0.2037 z m -2.07768,0.2037 1.05919,0 c -0.029,0.0977 -0.082,0.18868 -0.1222,0.28517 l -0.93699,0 0,-0.28517 z m 11.8549,0 0,0.52959 -0.48879,0 0.48879,-0.52959 z m 24.36169,0.16295 c -0.074,0.27639 0.1417,0.51307 0.57029,0.65181 l 0,-0.52959 -0.57029,-0.12222 z m -6.07005,0.3259 0.4481,0.12222 -0.3666,1.30363 -0.44819,-0.12221 0,-1.18142 0.36669,-0.12222 z m -17.06945,0.44813 0,0.48887 -0.2037,0 -1.67028,0.24442 c 0.035,-0.18637 0.074,-0.37489 0.082,-0.57034 l 1.79248,-0.16295 z m 0.3666,0 0.65189,0.20369 0,0.28518 -0.85559,0 0.2037,-0.28518 0,-0.20369 z m 1.01849,0 0.041,0 0.28519,0.44813 -0.041,0.0407 -0.2852,0 0,-0.48887 z m 1.83328,0 -0.082,0.32591 -0.2852,0.0407 0.1222,-0.32591 c 0.073,-0.01 0.1596,-0.0357 0.2444,-0.0407 z m 10.26611,0 0.65179,0.36665 -0.082,0.20369 -0.44819,0.85551 c -0.076,0.61311 0.12,0.99045 0.52959,1.09994 l -0.1222,0.40738 -0.52959,-0.12222 -0.082,0.28517 0.2445,0.28519 -0.3667,0.12221 0.041,1.18142 -0.4889,1.79249 -0.52959,-0.12222 -0.4073,-1.30363 0.1222,-0.48886 0.2444,0.0407 -0.1222,0.48886 0.4481,0.12221 0.041,-0.20369 -0.2852,-0.81477 0.2852,-0.12221 c 0.11849,-0.44345 -0.079,-0.76488 -0.5703,-0.89626 l 0.65179,-0.28517 -0.12219,0.40739 0.48879,0.12222 0.3667,-3.21835 0.041,-0.20369 z m -20.49153,0.12222 0.2444,0.0407 0.1223,0.48886 -0.326,-0.0815 0,-0.36665 -0.041,-0.0815 z m -7.74033,0.0815 0.4481,0 -0.4481,0.5296 0,-0.5296 z m 1.30369,0 0.8147,0 c -0.012,0.0156 -0.028,0.0252 -0.041,0.0407 -0.2572,0.20542 -0.3429,0.30401 -0.5703,0.48886 l -0.2037,-0.24442 0,-0.28518 z m 1.30359,0 0.3667,0 0.40729,0 0,0.2037 -0.082,-0.0815 -0.48879,0.12222 0,0.24442 -0.082,0.0407 -0.2037,-0.24442 -0.082,0 0.1629,-0.28518 z m 1.14069,0 0.6111,0 -0.041,0.28518 -0.5704,0 0,-0.28518 z m 7.29223,0 0.6518,0 -0.082,0.24444 0.1222,0.44811 -0.2852,0.0407 -0.4074,-0.65181 0,-0.0815 z m 1.2629,0 0.2037,0 0.082,0.24444 -0.2037,0.0407 -0.082,-0.28518 z m 21.14322,0 0.81479,0 0.2444,0.0407 -0.082,0.2037 -1.09989,0.16294 0.1222,-0.40738 z m -12.91409,0.0815 0.2037,0.0815 -0.082,0.40738 -0.2444,-0.0815 0.1222,-0.40738 z m 5.25525,0 -0.082,0.2037 0.4889,0.1222 0.041,-0.20368 -0.4481,-0.12222 z m 10.14392,0.36664 0.48889,0.12222 0.4074,0.57034 -0.6519,0.32591 0.2852,0.0815 -0.61109,1.01847 c -0.3277,-0.0876 -0.3629,-0.37134 -0.2444,-0.81478 l 0.2852,-0.16295 0.041,-0.20369 0,-0.93699 z m -1.38509,0.28517 0.2444,0.0815 0.041,0.73329 -0.4481,-0.12221 0.1629,-0.69256 z m -25.50229,0.0407 0,0.40739 -0.28519,0 -0.082,-0.32591 0.36659,-0.0815 z m 23.9135,0.0407 0.2444,0.0815 -0.1222,0.40739 -0.20369,-0.0407 0.082,-0.44813 z m -24.72829,0.0815 0.082,0.28517 -0.2445,0 0,-0.24443 0.163,-0.0407 z m -8.22923,0.0407 1.0185,0 c -0.101,0.0837 -0.1917,0.16587 -0.2852,0.24443 l -0.7333,0 0,-0.24443 z m 2.07769,0 0.44809,0 0,0.24443 -0.61109,0 0.163,-0.24443 z m 7.86252,0 0,0.24443 -0.20369,0 -0.041,-0.16295 0.24439,-0.0815 z m 3.74798,0 0.4074,0 0,0.24443 -0.4074,0 0,-0.24443 z m 1.05919,0 0.81479,0 0,0.24443 -0.81479,0 0,-0.24443 z m 22.36541,0.0407 0.44819,0.12221 0.2851,0.28517 0.082,-0.40738 0.2445,0.0407 -0.1223,0.44812 -0.2037,-0.0815 0.163,0.28517 -0.1222,0.48886 c -0.3277,-0.0875 -0.616,0.14207 -0.77409,0.73329 l -0.3666,-0.61107 0.3666,-1.30363 z m -31.00194,0.0407 0.2851,0.20369 -0.2037,0.0815 -0.082,-0.28517 z m -4.72576,0.0815 0.041,0.0815 -0.1222,0 c 0.027,-0.0311 0.054,-0.0496 0.082,-0.0815 z m 31.97983,0.0407 0.5296,0.16296 -0.041,0.20368 -0.5296,-0.12221 0.041,-0.24443 z m -20.49152,0.0407 0.36669,0 0,0.28517 -0.36669,0 0,-0.28517 z m 3.54427,0 0.20369,0 c 0.2933,0.10004 0.5027,0.25432 0.6518,0.48886 l -0.082,0.12221 c 0.049,0.098 0.1128,0.18842 0.163,0.28518 l -0.3667,0 0,0.24443 0.5296,0.0815 c 0.074,0.1378 0.16789,0.2723 0.24439,0.40738 l -1.79248,0 0,-0.2037 c 0.55219,1.1e-4 0.81479,-0.22356 0.81479,-0.52959 l -0.36659,-0.40739 0,-0.48886 z m -9.28843,0.0407 0.1222,0.44812 -0.2037,0.0407 -0.082,-0.32591 0.163,-0.16295 z m -3.50347,0.0815 0.081,0.44811 -0.44809,0.12222 -0.041,-0.16295 0.32589,-0.0407 0,-0.3259 0.082,-0.0407 z m 1.62949,0.0407 c 0.28519,1.06669 0.71239,1.54313 1.30369,1.3851 l 0.082,0.16295 -0.16299,0.24445 -0.2444,-0.12223 c -0.5964,0.73087 -0.87079,1.45178 -0.6926,2.11841 l -0.85549,-0.65181 0.6111,-0.16296 -0.1222,-0.40739 c -0.3695,0.0988 -0.5984,-0.0975 -0.81479,-0.61107 l 0.97769,-0.7333 -0.4481,-0.93699 -0.041,-0.16295 0.4074,-0.12221 z m 23.58759,0.24442 0.4482,0.12222 -0.082,0.24443 -0.4482,-0.12222 0.082,-0.24443 z m -14.95096,0.0815 0.65179,0 0,0.20369 -0.65179,0 0,-0.20369 z m 4.60346,0 0,0.0815 -0.041,0.16296 -0.2037,-0.0407 0.2444,-0.20369 z m -10.55132,0.0407 c 0.1566,0.1293 0.3291,0.24633 0.5703,0.36665 l 0,-0.16296 0.082,0.36665 0,0.0815 -0.4481,0.12221 -0.2037,-0.77403 z m 23.22101,0.0407 0.4481,0.12222 0,0.97772 -0.2852,0.12222 -0.041,0.20371 -0.1629,1.46658 -0.4074,0.57034 0.2037,0.24443 -0.32589,0.2037 0.36659,0.57033 -0.28519,0.12222 -0.2444,-0.0407 -0.041,1.14068 -0.3259,1.14067 -0.44811,-0.16295 -0.20369,0.69256 c 0.013,0.0242 0.029,0.0565 0.041,0.0815 l -0.1223,0.0815 0.163,0.0407 c 0.083,0.20379 0.14219,0.44083 0.16299,0.69256 l -0.041,0.2037 -0.16299,-0.24443 -0.2852,-0.0815 -0.041,0.0407 0.2445,-1.54807 0.774,-2.85169 0.4481,-0.81477 -0.2851,-1.0592 0.52959,0.16295 0.3259,-2.07768 z m -28.43556,0.0407 -0.041,0.44813 -0.2851,0.0815 -0.28519,-0.16296 -0.2037,0.0815 0.36659,0.48886 -0.48879,0.61109 -0.3259,-0.48888 c 0.071,-0.0167 0.1278,-0.0407 0.2037,-0.0407 l 0,-0.48886 -0.163,0 -0.2037,0.28516 -0.2037,0 0.3667,-0.61107 1.26289,-0.2037 z m 4.80716,0 0.16299,0.65183 -0.20369,0.0407 -0.2037,-0.61108 0.2444,-0.0815 z m -7.08854,0.28518 0.2037,0 0,0.28517 -0.2037,0.24442 -0.2444,0 0,-0.3259 c 0.078,-0.065 0.1634,-0.13004 0.2444,-0.20369 z m 32.59082,0.40738 1.50739,1.34438 -0.1222,0.44812 -0.52959,-0.16295 -0.4889,1.79249 -0.2037,-0.0407 0.4074,-2.48505 -0.2852,0.12222 -0.3259,-0.0815 0.041,-0.937 z m 4.48126,0 0.7741,0 -0.1223,0.40738 -0.6925,-0.20369 0.041,-0.20369 z m -27.41697,0.12221 0.041,0 0.2037,0.2037 -0.163,0.0407 -0.082,-0.24443 z m 3.42198,0 0.5704,0 0,0.2037 -0.5704,0 0,-0.2037 z m 5.49975,0 0.041,0 0,0.2037 -0.082,0 0.041,-0.2037 z m 0.5296,0.16296 c -0.014,0.0596 -0.024,0.0991 -0.041,0.16295 l 0.40739,0.12222 c -0.1395,0.12919 -0.34549,0.16299 -0.65189,0.16296 l -0.2036,0 0,-0.2037 0.4888,-0.24443 z m -4.64426,0.0407 0.65189,0.20369 0,0.44814 c -0.41409,0 -0.65179,0.1829 -0.65189,0.48885 l -0.1629,0 c 0,-0.45891 -0.1314,-0.73323 -0.4074,-0.73329 l 0,-0.2037 0.5703,-0.20369 z m 11.44759,0.0407 0.3259,0.6111 -0.041,0.20369 -0.3259,-0.61109 0.041,-0.2037 z m -18.08794,0.0407 0.57039,0.28519 0.6518,2.36283 0,0.0815 -0.3667,-0.52961 -0.2037,0 0.5704,0.85551 0.041,0.65182 0.2851,0.12222 -0.3666,0.57033 -1.18139,-4.39977 z m 15.43987,0 0.2445,0.0407 -0.2852,1.09995 -0.2444,-0.0407 0.2851,-1.09995 z m -7.08844,0.12222 0.5703,0.2037 0,0.24444 -0.77399,0 0.20369,-0.24444 0,-0.2037 z m -9.28842,0.2037 0.48889,0.48886 0.041,0.16296 -0.48889,0.12221 -0.1629,-0.65181 0.1222,-0.12222 z m 1.99618,0.12222 0.3259,0.32591 0,0.0815 0.082,0.0407 0.20369,0.24443 -0.16289,0.16296 0.65179,2.36283 -0.2852,-0.16295 -0.81479,-3.05539 z m -7.82173,0.0815 0.082,0.36664 -0.2037,0.0407 -0.082,-0.36664 0.2037,-0.0407 z m 2.44428,0.20369 -0.082,0.61108 0.082,0.24443 0.2444,0.16295 c -0.7759,0.20743 -1.07559,0.74802 -0.93699,1.71102 l 0.36669,0.57034 -0.2037,0.0407 0.5703,0.24442 -0.1629,1.30364 0.082,0.28517 0.2444,0.12222 -0.2037,0.0407 0.57039,0.85551 c -0.141,0.11253 -0.28639,0.23952 -0.44819,0.40739 l -0.082,-0.2037 -0.4074,0.12222 -0.082,-0.36665 0.4074,-0.12222 -0.2037,-0.81476 -0.44809,0.12221 -0.2037,-0.81477 0.40739,-0.12221 -0.1222,-0.44813 -0.65179,0.2037 0.082,0.44811 -0.2037,0.0407 -0.163,-0.61107 c 0.1174,-0.74567 0.3563,-1.18389 0.6518,-1.26289 l -0.082,-0.16296 -0.4074,0.0815 -0.1629,-0.61108 0.2037,-0.0407 1.34439,-2.03693 z m 31.32793,0.20369 0.2444,0.0407 0.2444,0.28517 0.2852,-0.12222 0.69259,0.16296 0.4481,2.28135 -0.041,0.2037 0.28519,0.0815 0.2852,-0.12222 0.2444,0.0407 -0.6926,2.64799 c -0.61589,-0.3229 -0.84809,-0.90563 -0.61109,-1.79249 l -0.2037,-0.0815 0.2852,-0.12222 0.1222,-0.48886 0.082,-1.18141 -0.5703,-0.12222 -0.69259,2.68873 0.2445,0.28518 -0.3667,0.12221 -0.041,0.2037 0.2037,2.19988 -0.81479,0 c -0.1161,0.56731 -0.1894,1.08428 -0.2444,1.50731 -0.1694,0.10755 -0.2849,0.39717 -0.4074,0.85552 l -0.32589,0.12222 -0.4481,-0.12222 -0.163,-0.93698 0.5704,-0.48887 0,-0.12222 c 0.055,0.0879 0.14859,0.1672 0.28509,0.2037 l 0.2037,0.0407 0.082,-0.2037 0.2445,-1.87397 0.36659,-0.5296 0.7333,-3.62572 0.2444,-0.89625 -0.4481,-0.12222 -0.3666,1.34437 -0.36669,0.12222 0.24439,0.28517 -0.12219,0.48886 -0.5296,-0.16295 0.81479,-3.09613 z m -9.20692,0.12221 0.2037,0.0407 -0.2444,0.89625 -0.2852,0.16295 -0.2037,-0.0815 0.5296,-1.01847 z m 6.07005,0 0.2037,0.0407 -0.082,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -24.97269,0.0815 0.2037,0.81477 -0.2037,0.0407 -0.2445,-0.77403 0.2445,-0.0815 z m -6.72194,0.0407 0.041,0 0.1223,0.44813 -0.2037,0.0407 -0.041,-0.12222 c 0.028,-0.10614 0.05,-0.23043 0.082,-0.32591 0,-0.0133 0,-0.0277 0,-0.0407 z m 34.26111,0.0407 0.2445,0.0407 -0.2037,0.69255 -0.2037,-0.0407 0.1629,-0.69255 z m -26.56148,0.0407 0.1222,0.44813 -0.3259,0.48885 -0.082,-0.36664 0.2852,-0.57034 z m 13.89178,0.0815 0,0.0407 -0.32589,0.2037 -0.2037,-0.0407 c 0.011,-0.0409 -0.01,-0.0837 0,-0.12222 0.1892,-0.0178 0.3783,-0.0562 0.52959,-0.0815 z m -11.7326,0.24443 0.1222,0.12222 -0.2037,0.0815 -0.041,-0.16295 0.1222,-0.0407 z m 27.13177,0.12222 0.7741,0.20368 -0.041,0.24443 -0.7741,-0.20369 0.041,-0.24442 z m -8.71803,0.0407 0.5704,0.16295 -0.082,0.20369 -0.5296,-0.12221 0.041,-0.24443 z m -15.48056,0.0407 0,0.61108 0.4481,0 c 0,0.33785 0.036,0.62661 0.1222,0.81476 -0.2101,0.0427 -0.4005,0.0946 -0.5703,0.16296 l 0,-0.0407 -0.36669,-0.40738 -0.6518,0.20369 c 0,-0.11015 -0.034,-0.2077 -0.082,-0.28517 l -0.2444,-0.89625 1.34429,-0.16295 z m 2.89238,0 0.2852,0.20369 0.20369,0 1.87399,-0.20369 0,0.20369 -0.2852,0.65182 c 0.3992,-0.22119 0.70099,-0.47342 0.81479,-0.77403 0.071,0.0934 0.1312,0.19369 0.2037,0.28516 l -0.3667,0.0407 0,0.44813 0.4074,0 0.2444,0.28517 0.163,-0.24443 c 0.093,0.10678 0.18909,0.22207 0.28519,0.3259 l 0.041,0.16295 -0.2037,-0.20368 -0.24449,0.12221 0.041,0.69256 -0.2444,0.12221 -0.082,0.16296 -0.65179,-0.12222 c -0.065,-0.12871 -0.1069,-0.24434 -0.1222,-0.36665 l 0.32589,0 0.3666,0.0815 0.041,-0.20369 -0.2851,-0.5296 c -0.2712,-0.0725 -0.50579,-0.0647 -0.73329,-0.0815 l -0.2037,-0.20369 -0.082,0.16295 c -0.064,0.002 -0.1437,-0.007 -0.2037,0 l -0.52959,-0.61108 -1.05919,0.2037 -0.7741,-0.2037 -0.44809,0.44813 -0.163,-0.24443 0,-0.2037 c 0.2416,3e-5 0.4327,0.0164 0.61109,0 0.5354,-0.049 0.7741,-0.17787 0.7741,-0.40738 z m 16.29546,0 0.2444,0.0815 -0.2444,0.89625 -0.2445,-0.0815 0.2445,-0.89625 z m -19.96193,0.40738 0,0.44813 0.4074,0 0,-0.44813 -0.4074,0 z m -1.54809,0.0815 0.24449,0.28517 -0.2037,0.36665 -0.16299,-0.5296 0,-0.0815 0.1222,-0.0407 z m -10.51051,0.12222 0.041,0.32591 -0.1629,0.0407 0.1222,-0.36665 z m 21.83581,0 0.163,0 0,0.24443 -0.163,0 0,-0.24443 z m -16.66206,0.0407 0.5297,0.93699 0.041,0.16295 -0.2037,0.28518 0.77399,1.83323 -0.52959,0.32591 -0.2852,-1.50733 -0.1222,-0.44812 -0.2444,-0.12222 -0.16299,-1.42585 0.20369,-0.0407 z m -0.89619,0.0407 1.14069,4.23681 -0.3259,-0.0815 0,-0.0815 -0.28519,-0.16296 -0.6926,-3.46276 -0.041,-0.20369 -0.28509,-0.12222 0.48879,-0.12222 z m 19.88043,0.0815 0.2444,0.0815 -0.1222,0.40738 -0.2037,-0.0407 0.082,-0.44812 z m -7.78113,0.0815 0.6519,0 0,0.20369 c -0.1266,0.0362 -0.2233,0.0983 -0.326,0.16295 l -0.3259,-0.0815 0,-0.28517 z m -9.20682,0.12222 0.12219,0.36664 -0.20369,0.0407 -0.1222,-0.36664 0.2037,-0.0407 z m 15.11397,0.0407 0,0.12222 -0.082,0 0.082,-0.12222 z m 9.98092,0.24443 0.24439,0.0407 -0.16289,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m 5.25525,0 0.2444,0.0407 -0.1629,0.48886 -0.2037,-0.0407 0.1222,-0.48886 z m -22.8136,0.0815 0.36669,0 c -0.095,0.17535 -0.20739,0.27297 -0.36669,0.28517 l 0,-0.28517 z m 7.12923,0 0.163,0 0,0.20369 -0.163,0 0,-0.20369 z m -1.50728,0.0407 0.28519,0.0815 -0.28519,0 0,-0.0815 z m 4.72565,0.0815 0.3259,0.61109 -0.1222,0.40737 -0.4481,-0.12221 0.2444,-0.89625 z m 1.01849,0.28517 0.2037,0.0407 c -0.079,0.2957 0.1602,0.56116 0.6518,0.69255 l -0.2444,0.89626 c -0.1374,-0.16028 -0.2848,-0.28993 -0.4482,-0.40739 l 0.041,-0.20369 -0.44809,-0.12222 0.24449,-0.89625 z m -5.86634,0.0407 0.1222,0 0.082,0.0407 -0.1222,0.44813 -0.163,-0.0815 0.082,-0.40739 z m 3.38127,0 0.57039,0 -0.082,0.2037 -0.2445,0 c -0.09,-0.0653 -0.17469,-0.12663 -0.24439,-0.2037 z m -7.41444,0.12222 c -0.014,0.0405 -0.029,0.0791 -0.041,0.12222 l -0.12219,-0.0407 0.16299,-0.0815 z m -15.60276,0.16296 0.082,0.16295 0.32589,2.93317 0.4074,-0.12222 -0.1223,-0.36665 0.61109,0.24444 c -0.44339,0.11851 -0.63649,0.41476 -0.52959,0.81476 l 0.2444,0.12222 -0.2444,0.7333 0.041,0.20368 0.44809,-0.1222 -0.12219,-0.44813 0.20369,-0.0407 0.1222,0.44813 -0.36659,1.14068 -0.3667,-0.0815 c -0.056,0.0711 -0.069,0.1343 -0.1222,0.20368 l -0.4481,-1.58879 0.041,-1.09994 -0.32589,-0.0815 0.2037,-0.28517 -0.041,-0.24444 -0.4889,0.12222 -0.082,-0.16295 0,-0.0815 0,-0.16296 c 0.3324,-0.11704 0.5134,-0.41156 0.4481,-0.93698 l -0.4481,-0.77404 -0.041,-0.16295 0.5704,-0.36664 z m 31.16493,0 0.5296,0.12221 -0.2037,0.69255 -0.5296,-0.12221 0.2037,-0.69255 z m -28.92435,0.28516 -0.4074,0.0815 0.041,0.20369 0.4074,-0.12222 -0.041,-0.16295 z m 4.72565,0 0.1222,0.36665 -0.2037,0.0407 -0.1222,-0.36665 0.2037,-0.0407 z m 8.51433,0.0407 0.2037,0.0815 -0.24439,0 0.041,-0.0815 z m 16.90656,0 0.5296,0.12221 -0.1223,0.48887 0.44819,0.12222 0.1629,-0.69256 0.4482,0.57034 -0.5704,0.81477 -0.1629,1.87396 -0.44819,0.52961 -0.2444,-0.0407 c 0.5137,-1.92151 0.4109,-2.92094 -0.2444,-3.09612 l 0.2037,-0.69256 z m -20.04343,0.0815 0.2037,0 -0.1222,0.44813 -0.1629,0 0,-0.20369 0.082,-0.24444 z m 1.79249,0 0.2037,0 c 0.13689,0.16132 0.18659,0.38537 0.16299,0.65183 l -0.1222,0 -0.24449,-0.65183 z m -2.56648,0.12222 0.2037,0.36665 -0.2852,-0.0815 0.082,-0.28517 z m 12.54749,0.16296 0.24439,0.0815 0.2852,0.2037 -0.163,0.24443 c -0.1007,-0.099 -0.2134,-0.17918 -0.32589,-0.24443 l -0.041,-0.28517 z m -7.17004,0.16295 0.2852,0 c 0,0.0716 0.024,0.14662 0.041,0.2037 l -0.4074,0 0.082,-0.2037 z m 0.73329,0.0815 0.4074,0.12222 -0.3259,0 -0.081,-0.12222 z m -6.72184,0.12222 0.2037,0.0815 -0.082,1.22216 -0.082,0.20368 -0.2037,-0.0815 0.041,-0.48886 0.2037,0 0,-0.65182 -0.082,-0.28516 z m 14.62517,0.0407 0.3259,0.0815 -0.163,0.65181 -0.2037,-0.0815 -0.041,-0.5296 0.082,-0.12222 z m -15.35847,0.0407 0,0.20369 -0.1222,0 0.1222,-0.20369 z m -1.46658,0.16296 0.12219,0 0.1222,0.16294 0.082,0.28518 -0.32589,-0.40739 0,-0.0407 z m 4.52196,0.0407 0.2037,0 -0.082,0.20369 -0.16289,0 0.041,-0.20369 z m -5.25526,0.16295 -0.041,0.24444 c -0.1412,0.67656 -0.1364,1.03082 0.1222,1.09994 l -0.2444,0.20369 -0.082,0.16296 -0.041,0.24443 -0.1222,0.0407 -0.163,-0.57035 0.44819,-0.0815 c -0.20599,-0.77058 -0.14749,-1.24297 0.1222,-1.34438 z m 1.87399,0 0.041,0.12222 0.082,-0.0815 0.163,0.65182 0,0.12222 -0.48889,0.73329 0.28519,0.0815 -0.32599,0.12221 -0.082,0.24444 0.2445,0.28516 -0.082,0.16296 -0.4074,0.57034 0.041,0.85551 -0.65179,1.30363 0.24439,0.28516 -0.48889,-0.16294 0.3667,-1.34438 -1.18139,0.73329 0.24439,0.28517 -0.85549,0.44812 -0.082,1.01846 -0.40739,0.69256 c 0.08,-0.49941 0.011,-0.79802 -0.2037,-0.8555 l 0.2852,-0.16296 0.041,-0.20369 0.20369,-1.30363 c 0.1374,-0.1299 0.2764,-0.27149 0.4074,-0.40738 l 0.4481,0.3259 c -0.053,-0.21157 -0.1577,-0.37536 -0.2445,-0.5296 0.051,-0.0555 0.1128,-0.10648 0.163,-0.16295 l 0.24439,0.0407 0.082,-0.36665 0.3667,-0.16296 -0.163,-0.16296 c 0.072,-0.0919 0.134,-0.1912 0.2037,-0.28516 l 0.73329,0.0407 0.163,-0.61108 -0.4074,-0.12222 c 0.071,-0.1075 0.135,-0.21609 0.2037,-0.3259 l 0.2852,0.0815 0.2851,-1.0592 c 0.1085,-0.19992 0.2227,-0.4049 0.32589,-0.61108 l -0.12219,-0.16296 0.041,-0.12222 z m 11.7327,0.0407 0.2037,0.40739 0,0.0407 -0.4889,0 c 0.012,-0.0714 0.03,-0.13545 0.041,-0.20369 l 0.2445,-0.24444 z m -22.16181,0.0407 0.082,0.28517 -0.082,0 0,-0.28517 z m 30.43174,0.2037 0.4888,0.12221 -0.4073,0.93699 c -0.091,-0.13612 -0.2088,-0.26481 -0.36669,-0.36665 l 0.28519,-0.69255 z m -10.87721,0.16295 0.2037,0.0407 -0.2037,0 0,-0.0407 z m 0.97769,0.0407 0.4074,0.12222 -0.041,0.16295 -0.2037,0.0407 -0.1629,-0.28517 c 0.01,-0.003 -0.01,-0.0375 0,-0.0407 z m -8.39212,0.32591 0.4074,0.0815 -0.1629,0.65181 -0.2852,-0.57034 0.041,-0.16295 z m 23.91349,0.0407 c 0.452,0.27923 0.6049,0.76825 0.4074,1.50732 l -0.5296,1.0592 c -0.1997,1.12233 -0.29139,1.89099 -0.28509,2.40357 l -0.163,-0.0407 0.041,-0.77403 0.1222,-0.48886 -0.3666,-0.77403 0.89619,-2.1184 -0.1222,-0.77403 z m -21.83581,0.12221 0.2444,0 0,0.20369 -0.2444,0 0,-0.20369 z m 12.09939,0 0.041,0 -0.163,0.57034 c -0.021,0.0768 -0.028,0.1306 -0.041,0.20369 l -0.041,0 0.2037,-0.77403 z m -19.96193,0.0407 0.2037,0.0407 0.1222,0.24444 -0.3666,-0.12222 0.041,-0.16296 z m -4.11456,0.2037 0.041,0.20369 -0.2852,0.52961 -0.041,-0.16296 0.2852,-0.57034 z m 3.62567,0 c 0.1218,0.0561 0.2253,0.11426 0.40739,0.16295 l -0.082,0.36665 -0.16289,-0.24443 -0.082,-0.0407 -0.082,-0.24443 z m 31.12423,0.0815 0.2445,0.0815 -0.1222,0.48887 -0.2445,-0.0815 0.1222,-0.48886 z m -25.46158,0.0815 c 0.1306,0.006 0.286,0.0201 0.4482,0.0407 l -0.1222,0.36665 c -0.2956,-0.079 -0.55,0.15923 -0.6926,0.69255 l -0.4481,-0.77402 c 0.047,-0.17471 0.2132,-0.25604 0.4888,-0.28518 l 0.3667,0 -0.041,-0.0407 z m 14.01408,0 0.082,0 0.1222,0.0407 -0.041,0.2037 -0.041,0 -0.3259,0 0.2037,-0.24444 z m -8.14773,0.0407 0.2852,0 -0.1222,0.52961 -0.2444,-0.0815 c 0.037,-0.15395 0.063,-0.31014 0.082,-0.44813 z m 0.85559,0 0.5703,0 0,0.0815 -0.3666,0.57034 0.1222,0.16295 -0.61109,-0.16295 c 0.107,-0.16058 0.1904,-0.41429 0.28519,-0.65182 z m 1.05919,0 0.2444,0 -0.041,0.0815 -0.2037,-0.0407 0,-0.0407 z m 2.24058,0 0.4889,0 -0.1222,0.36665 -0.2037,0.0407 0,0.44812 0,0.0407 -0.081,0.16295 0.041,0.44813 -0.163,0.0407 c -0.18079,-0.20535 -0.24269,-0.4948 -0.20369,-0.85552 0,-0.0259 0,-0.0547 0,-0.0815 0.012,-0.0828 0.016,-0.15376 0.041,-0.24443 l 0.20369,-0.36665 z m 0.8555,0 0.73329,0 0.3259,0 -0.041,0.2037 -0.2444,0 0,0.48885 0.2037,0 -0.041,0.2037 -0.3259,0.5296 0,-0.28517 -0.48889,0.12222 -0.041,-0.52961 0.24449,-0.0407 0,-0.48885 -0.28519,0.0407 -0.041,-0.24444 z m -7.69953,0.0815 0,0.77403 c -0.2652,-0.0831 -0.4074,-0.28893 -0.4074,-0.65181 0.1827,2e-5 0.2999,-0.0425 0.4074,-0.12222 z m 5.54045,0 0.40739,0.12222 -0.082,0.36665 -0.44819,-0.12222 0,-0.0407 0.163,-0.20369 -0.082,0 0.041,-0.12222 z m 11.9364,0 0.1222,0.65181 c -0.026,-0.0119 -0.051,-0.0326 -0.082,-0.0407 l -0.3259,0.0815 -0.041,0.24444 0,0.28517 -0.041,0.0815 -0.2037,-0.0407 0.041,-0.2037 0.2444,-0.36665 0.163,-0.28516 -0.4482,-0.12222 0.5704,-0.28517 z m -18.82124,0.0815 c 0.092,0.0158 0.1761,0.0407 0.2852,0.0407 l 0,0.65181 -0.2445,-0.0815 -0.041,0.12222 -0.1222,0 0,0.44813 0,0.0815 0.4481,0.12222 0.041,-0.20369 0.16299,0 -0.52959,0.77402 -0.2444,-0.32591 -0.082,0.36665 0.2444,0.0815 -0.041,0.0407 0.5296,0.12222 0.082,0.24443 -0.12219,0.20368 c -0.155,0.0761 -0.2587,0.22703 -0.2852,0.44813 l -0.041,0.12222 -0.1629,0 c -0.01,-0.0298 0,-0.0522 0,-0.0815 l 0.082,-0.44813 -0.163,-0.0407 c -0.084,-0.43312 -0.1524,-0.79238 -0.2444,-1.0592 l 0.4481,-1.62953 z m -7.29224,0.44812 c 0.21259,0.11967 0.31239,0.32245 0.28519,0.61108 l -0.2037,-0.12222 -0.082,-0.48886 z m 18.33234,0 0.041,0 c -0.01,0.0299 -0.034,0.0522 -0.041,0.0815 -0.03,0.13716 -0.06,0.28313 -0.082,0.40739 -0.092,0.0158 -0.1761,0.0407 -0.2851,0.0407 l 0,0.48887 -0.2445,0 0.082,-0.937 0.5296,0 0,-0.0815 z m -12.38449,0.0815 0.2852,0 0.1222,0.0407 0,0.40739 -0.2037,0 0,0.2037 0.082,0.36664 c -0.1679,-0.14917 -0.2705,-0.48917 -0.2852,-1.01847 z m 25.33938,0.0407 0.4481,0.12222 -0.1222,0.40739 -0.4481,-0.12222 0.1222,-0.40739 z m -33.93521,0.0407 c -0.044,0.0495 -0.077,0.10969 -0.1222,0.16296 l -0.041,-0.12222 0.163,-0.0407 z m -0.89619,0.0407 0.44809,0.93698 -0.20369,0.0407 -0.082,-0.0407 c 0.011,-0.0447 0.028,-0.075 0.041,-0.1222 l -0.2444,-0.0815 -0.2037,-0.69256 0.2444,-0.0407 z m 17.51755,0 0.40739,0.12222 -0.082,0.24443 -0.3667,-0.24443 0.041,-0.12222 z m 0.73329,0 0.2037,0.0815 -0.1223,0.40739 -0.2036,-0.0407 0.1222,-0.44813 z m 7.12924,0.0815 0.082,0.12222 0.28509,0.0815 0.081,-0.0407 -0.2037,1.34438 -0.69249,2.52579 -0.2444,0.48885 -0.082,-0.36665 0.2036,-0.28516 -0.2036,-0.20369 -0.24449,0.0815 -0.1629,-0.28517 0.28509,-0.12221 0.2037,0.0407 0.041,-1.0592 0.2852,-0.97772 0.4074,0.0815 0.12219,-0.52961 0.041,0 0,-0.0815 c -0.12509,-0.22968 -0.18089,-0.50832 -0.20369,-0.81477 z m 3.05538,0.0407 0.2444,0.0815 -0.082,0.24443 0,0.0407 -0.1629,0.52959 -0.2037,-0.0815 0.2037,-0.81476 z m -20.24704,0.20369 0.4074,0.12222 -0.1223,0.36665 -0.2851,-0.48887 z m -10.6328,0.32591 0.041,0.16296 -0.1222,0.0407 0,-0.16296 0.082,-0.0407 z m 5.54045,0.0407 0.2037,0.0815 -0.082,0.36664 0.2037,0.0407 -0.2444,0.12221 -0.1222,0.48887 -0.163,-0.61108 0.2037,-0.48886 z m 27.41707,0 0.3666,0.0815 c -0.05,0.18575 -0.024,0.33526 0,0.44812 l -0.3259,-0.0815 c 0.053,-0.20003 0.019,-0.3353 -0.041,-0.44812 z m -3.95167,0.0815 0.041,0 c -0.023,0.12022 -0.051,0.23873 -0.082,0.36664 l -0.041,0 0.082,-0.36664 z m -17.31385,0.0407 0.2037,0.0407 -0.2445,0.81476 -0.2037,-0.0407 0.2445,-0.81477 z m 14.74737,0.0407 c 0.1067,0.0985 0.2579,0.16799 0.4073,0.24442 l -0.1629,0.32591 -0.163,-0.0407 -0.041,-0.0407 c -0.048,-0.0401 -0.1096,-0.0903 -0.1629,-0.12221 l 0.1222,-0.36664 z m -21.91741,0.16294 0.082,0 c 0.01,0.0632 0,0.14342 0,0.2037 l -0.082,-0.2037 z m 32.46862,0 0.3259,0.52961 -0.4481,-0.12222 0.1222,-0.40739 z m -33.24261,0.36665 0.041,0.12222 -0.163,-0.0407 0,-0.0407 0.1223,-0.0407 z m 6.76263,0.16296 0.2036,0.0815 -0.73329,2.81095 -0.2036,-0.0815 0.73329,-2.81095 z m 9.45133,0 -0.2037,0.81477 0,0.0815 c -0.07,0.01 -0.1708,0.0316 -0.2445,0.0407 l 0.2445,-0.89624 0.2037,-0.0407 z m 1.58878,0.16295 c 0,0.0512 0,0.10831 0,0.16296 -0.1404,0.17118 -0.50329,0.28723 -1.01849,0.40738 l 0.082,-0.24444 0.93699,-0.3259 z m 8.59584,0.12222 c 0.10669,0.18436 0.23739,0.33744 0.36659,0.48886 l 0,0.12221 0.163,0.0407 c 0.068,0.0685 0.1302,0.14364 0.2037,0.2037 l -0.163,0.65181 -0.2037,-0.0407 c 0.071,-0.26673 -0.1676,-0.49255 -0.61099,-0.61107 l 0.2444,-0.85551 z m 1.01849,0.0407 0,0.12221 -0.082,-0.0815 0.082,-0.0407 z m 5.58114,0.0407 0.4481,0.1222 -0.041,0.2037 -0.48889,-0.12222 0.082,-0.20368 z m -24.19868,0.0407 0.12219,0.44811 0.2444,0.89625 -0.44809,0.7333 0.32589,-0.12222 0.2037,0.0407 -0.1222,0.36664 -0.2037,-0.0407 -0.20369,-0.24442 -0.2444,-0.0815 -0.082,0.44812 -0.2444,-0.0407 0.6518,-2.40356 z m -1.2222,0.0815 0.20369,0.0815 -0.12219,0.52961 -0.2037,-0.0407 0.1222,-0.57035 z m 7.12924,0 0.2037,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m 14.54368,0.0407 -0.082,0.24444 0.69259,0.16295 0.082,-0.20369 -0.69259,-0.2037 z m -28.67996,0.0815 c 0.026,-0.005 0.055,0.004 0.082,0 -0.1259,0.1796 -0.3023,0.32896 -0.5296,0.44813 l -0.041,-0.2037 c 0.14479,-0.11438 0.30619,-0.20677 0.48889,-0.24443 z m 13.36229,0.2037 c 0.1272,0.1138 0.2391,0.2232 0.2852,0.32591 l -0.2852,-0.0815 0,-0.24443 z m -12.95489,0.20369 0.041,0 0.32589,0.12222 c 0.029,0.10641 0.051,0.19751 0.082,0.28517 l -0.2037,0.77403 -0.20359,-0.0407 c 0.1426,-0.53338 0.01,-0.85797 -0.2852,-0.93699 l -0.2037,0.0815 0.041,-0.16295 0.3259,-0.0815 0.081,0 0,-0.0407 z m -2.56648,0.0407 0.082,0.24443 -0.1222,-0.0407 0.041,-0.20369 z m 13.44369,0 0.2037,0 c -0.015,0.10051 -0.023,0.21901 -0.041,0.32591 l -0.1629,0.16294 0,-0.48885 z m 8.55512,0 0.3666,0 -0.041,0.16295 -0.4074,-0.12221 c 0.02,-0.0187 0.064,-0.0211 0.082,-0.0407 z m 1.01839,0 0.4074,0 0,0.20369 c -0.1951,4e-5 -0.3609,0.0365 -0.4888,0.0815 l 0.082,-0.28517 z m -19.43223,0.0815 0.163,0.0407 -0.082,0.32592 -0.082,-0.36665 z m 13.81038,0.12221 0,0.5296 -0.041,0.0407 -0.041,0.16295 -0.2444,0 0.2036,-0.69255 0.1223,-0.0407 z m 0.85549,0 0.937,0 -0.041,0.16296 0,0.1222 -0.2444,0 -0.2852,-0.0407 -0.082,0.0407 -0.2852,0 c 0,0.0149 0,0.026 0,0.0407 l -0.082,-0.0407 0.082,-0.28516 z m 3.05538,0.16296 -0.082,0.36664 -0.3666,0 -0.1222,-0.12222 0.041,-0.16294 c 0.2044,-0.0207 0.3677,-0.0344 0.5296,-0.0815 z m 9.04392,0 c 0.6945,0.36415 0.9332,1.01469 0.6926,1.9147 l -0.4889,-0.12221 -0.1629,0.52959 0.3666,0.57035 -0.85549,1.26289 0.2037,0.0407 -0.2444,0.12222 -0.082,0.28516 0.1629,1.30363 -0.5703,0.24444 0.2037,0.0407 -0.3667,0.57033 c -0.13859,0.96299 0.1611,1.5036 0.937,1.71103 l -0.2444,0.16296 -0.082,0.24442 0.082,0.61108 -1.34439,-2.03692 -0.2037,-0.0407 0.163,-0.61109 0.4481,0.0815 0.041,-0.16296 c -0.2956,-0.079 -0.5344,-0.51721 -0.6518,-1.26288 l 0.1629,-0.61109 0.2037,0.0407 -0.082,0.44813 0.69259,0.20369 0.082,-0.44812 -0.40739,-0.12222 0.24439,-0.81477 0.4074,0.12222 0.2037,-0.81478 -0.4074,-0.1222 0.082,-0.36665 0.4482,0.12221 0.082,-0.36665 -0.4074,-0.12221 0.1629,-0.61108 c 0.3696,0.0988 0.59839,-0.13822 0.81479,-0.65182 0.1069,-0.39999 -0.01,-0.61476 -0.44809,-0.73329 l 0.16289,-0.61107 z m -24.52459,0.0407 0.48889,0.1222 -0.40739,0.57035 -0.2444,-0.0815 0.1629,-0.61107 z m 23.3025,0 c 0.1376,0.0728 0.2979,0.11502 0.4481,0.16294 l -0.1222,0.40739 -0.3259,-0.52959 0,-0.0407 z m -16.70285,0.0815 0.65189,0 0.2037,0.24444 0.1629,0 -0.1629,0.61108 -0.6111,0 -0.24449,-0.85552 z m 5.70345,0.2037 0.082,0 c -0.036,0.16125 -0.082,0.31655 -0.12219,0.44813 l -0.082,0 0.1222,-0.44813 z m 4.88855,0.0407 0,0.16295 -0.082,0.24444 -0.2036,0 0.041,-0.2037 0.2444,-0.20369 z m -7.74023,0.0815 0.2037,0.0407 -0.041,0.0815 -0.2037,0 0.041,-0.12221 z m -8.63663,0.0815 0.65179,0.36665 -0.28509,1.01846 -0.2037,-0.0815 -0.2445,-0.93699 0.082,-0.36665 z m 20.89893,0 0.48879,0.12222 0.3667,1.14068 -0.1222,0.44813 -0.2037,-0.0407 0.1222,-0.44813 -0.44809,-0.12222 -0.041,0.2037 0.2444,0.73329 -0.2444,0.12221 c -0.1069,0.40004 0.086,0.69626 0.52959,0.81477 l -0.57039,0.24443 0.082,-0.36665 -0.4074,-0.1222 -0.3259,2.93317 -0.082,0.16295 -0.57029,-0.32591 0.082,-0.20369 0.4074,-0.77403 c 0.069,-0.55307 -0.1194,-0.87895 -0.4889,-0.97773 l 0.1222,-0.36665 0.48889,0.12222 0.041,-0.24443 -0.2037,-0.28516 0.3259,-0.0815 -0.041,-1.09994 0.4481,-1.58881 z m -18.98425,0.0407 0.4074,0.12222 -0.041,0.20369 -0.4073,-0.12221 0.041,-0.2037 z m 11.20311,0 0.163,0 c 0.066,0.0585 0.1536,0.11741 0.2444,0.16296 l -0.041,0.12221 -0.082,0.28518 -0.2851,-0.52961 0,-0.0407 z m -19.96183,0.0407 0.3259,0.48887 -0.2444,-0.24444 -0.2037,-0.0407 0.1222,-0.2037 z m 1.09989,0.0815 0.163,0.0407 0,0.16295 -0.163,0.65181 -0.2037,-0.0815 0.2037,-0.77403 z m 31.08354,0 c 0.044,0.10287 0.088,0.18377 0.163,0.20369 l 0.2036,0.0407 0,0.44812 -1.71099,6.35522 -0.48889,-0.12221 0.28519,-0.12222 0.041,-0.20369 0.6926,-3.46279 0.28519,-0.12222 0.041,-1.0592 0.4888,-1.95544 z m 1.01849,0 0.2037,0.0407 -0.2037,0.65181 -0.2037,-0.0815 0.1629,-0.57033 0.041,-0.0407 z m -15.64367,0.12222 0.041,0.44811 -0.1222,0.0407 -0.082,-0.3259 0.163,-0.16295 z m 12.7919,0 0.20369,0.0407 -0.1222,0.36664 -0.20369,-0.0407 0.1222,-0.36664 z m -9.57353,0.0407 c 0.1347,0.0336 0.3237,0.0613 0.4889,0.0815 l -0.1222,0.48886 -0.4482,-0.16296 0.082,-0.40738 z m -20.98032,0.32591 0.4889,0.12221 -0.082,0.2037 -0.163,1.38511 c 0.01,-0.18442 -0.023,-0.3523 -0.082,-0.57035 l -0.2037,-0.81476 0.041,-0.32591 z m 3.29977,0.0407 0.4482,0.0815 c -0.1069,0.39999 -0.01,0.69501 0.2851,0.77404 l -0.041,0.20368 c -0.4433,-0.11853 -0.7027,-0.1037 -0.774,0.16296 l -0.20369,-0.0407 -0.082,-0.61107 0.36669,-0.57035 z m 16.82506,0.0407 0.2852,0 -0.082,0.24444 -0.2037,0 0,-0.24444 z m -13.76958,0.16296 0.20369,0.0407 -0.041,1.0592 -0.40739,-0.12222 0.2444,-0.97772 z m 20.12482,0.20369 0.4481,0.16296 -0.041,0.16295 -0.4889,-0.12221 0.082,-0.2037 z m 3.09608,0 0.2037,0.0407 -0.44809,0.93699 -0.2037,-0.0407 0.2037,-0.81477 0.24439,-0.12222 z m -19.51373,0.12222 0.93699,0.0407 -0.1222,0.57033 -0.97779,0 0.163,-0.61107 z m 8.59582,0.16295 0.2037,0 0,0.0407 -0.2037,-0.0407 z m 3.74797,0 0.3259,0 -0.041,0.2037 -0.2852,0 0,-0.2037 z m 2.36278,0 0.3259,0 0,0.2037 -0.3666,0 0,-0.12222 0.041,-0.0815 z m -19.51373,0.0407 0.32589,0.5296 -0.28509,0.12222 -0.2037,-0.0407 c 0.062,-0.23334 0.1326,-0.43445 0.1629,-0.61108 z m -4.31826,0.16296 0.20369,0.0407 -0.1222,0.36664 -0.20369,-0.0407 0.1222,-0.36664 z m 32.30562,0 0.2037,0.0407 c -0.1069,0.4 -0.01,0.69503 0.2852,0.77403 l -1.42589,3.50351 0.2037,0.24442 -0.041,0.2037 -0.5296,0.89625 -0.2037,-0.0407 0.163,-1.42586 0.2444,-0.12221 0.1222,-0.44813 0.69259,-3.42204 0.2852,-0.20368 z m -35.361,0.12222 0.1222,0.8555 0.2037,0.12222 c -0.012,0.0966 -0.014,0.18348 -0.041,0.28516 l 0,0.0815 -0.041,-0.0815 -0.2037,0.0815 c 0.022,0.0838 0.035,0.13719 0.041,0.20369 l -0.36669,0.1646 c -0.01,-0.0436 -0.032,-0.0797 -0.041,-0.12222 l 0.1222,-0.0407 0.041,-0.20369 0.163,-1.34436 z m 9.45132,0.0407 0.61109,0.16296 -0.041,0.20369 -0.69259,0.0815 0.1222,-0.44813 z m -4.80716,0.24444 0.2037,0.0815 -0.163,0.5296 -0.2036,-0.0407 0.1629,-0.57034 z m 28.96506,0 0.2037,0.0407 -0.2851,1.01846 -0.2037,-0.0815 0.2851,-0.97772 z m -20.49143,0.12221 0.3666,0.52961 -0.1629,0.61107 -0.2037,-0.32591 -0.40739,-0.1222 c -0.1069,0.4 -0.4121,0.56664 -0.8555,0.44811 0.107,-0.40002 -0.01,-0.6555 -0.4481,-0.77403 l 0.041,-0.20369 0.4074,0.12222 0.1629,0.24443 c 0.08,-0.29997 0.4464,-0.45431 1.09999,-0.52961 z m 10.8364,0.2037 0.1222,0 0,0.12222 -0.1222,-0.12222 z m 13.1178,0 0.89629,0.24443 -0.4481,1.75175 c -0.2956,-0.079 -0.3768,-0.54438 -0.163,-1.34437 l -0.44809,-0.0815 0.1629,-0.57033 z m -6.15145,0.0407 0.2851,0.52959 -0.041,0.2037 -0.2851,-0.57034 0.041,-0.16295 z m -28.55776,0.0815 -0.2037,1.62953 -0.81469,0.24443 0.2444,-0.89624 c 0.44909,-0.22295 0.73079,-0.54687 0.77399,-0.97772 z m 0.6926,0 0.24439,0.0815 -0.082,0.36664 -0.28509,-0.0815 0.1222,-0.36665 z m 21.87661,0.0407 0.16289,0.0407 0,0.24444 -0.40739,0 0.2445,-0.28518 z m -9.53282,0.0407 0.2037,0 0.1629,0.24444 -0.2852,0 -0.082,0 0,-0.0407 0,-0.2037 z m -6.96634,0.24444 0.48889,0.1222 -0.082,0.24444 -0.52959,0.93698 -0.163,-0.24442 -0.2037,-0.0815 -0.52959,0.28516 0.041,0.65182 c -0.2956,-0.0791 -0.5041,0.0481 -0.6111,0.44812 l -0.1629,-0.24442 -0.2037,-0.0407 -0.24439,0.12221 0.20359,-1.62954 0.6111,0.16296 0.1222,-0.40739 c 0.73909,0.19754 1.15609,0.0741 1.26299,-0.3259 z m 2.85167,0.1222 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m -7.86253,0.0407 0.2037,0.0815 -0.082,0.36665 -0.2444,-0.0407 0.1222,-0.40739 z m 6.64044,0.0407 0.2037,0.0815 -0.082,0.40739 -0.2445,-0.0407 0.1223,-0.44813 z m -9.28841,0.12222 0.20369,0.0815 -0.24439,0.0815 0.041,-0.16295 z m -0.041,0.28517 0.163,0.12222 0,0.0407 -0.2037,-0.0407 0.041,-0.12222 z m 15.72506,0.0815 c 0,0.20653 -0.1299,0.30826 -0.32589,0.36665 l -0.5296,0.0407 0,-0.16296 0,-0.0407 0.85549,-0.20369 z m 3.25907,0 c 0.013,0.005 0.029,-0.006 0.041,0 0.089,0.046 0.1749,0.11085 0.2037,0.20369 l -0.2444,0 0,-0.20369 z m 1.54809,0 0.4074,0 0.082,0.12221 -0.20369,0.81477 c -0.045,0.002 -0.075,0 -0.1222,0 l 0,0.2037 -0.2037,-0.2037 -0.4074,0 -0.16299,-0.24443 0.12229,-0.44812 c 0.1892,0.0506 0.3495,-0.044 0.4888,-0.24443 z m 1.22219,0 0.3259,0 c 0.015,0.019 -0.011,0.0591 0,0.0815 -0.099,0.33787 -0.3274,0.59856 -0.6518,0.73329 l -0.1223,-0.0407 0.4482,-0.77403 z m 4.44046,0 -0.041,0.20369 -0.4889,0 0,-0.12222 c 0.2002,-0.0277 0.3723,-0.0507 0.5296,-0.0815 z m 8.88103,0 0.20369,0.0407 -0.082,0.36665 -0.2037,-0.0407 0.082,-0.36665 z m -26.84668,0.0815 0.4074,0.12222 -0.1223,0.44812 -0.4073,-0.12222 0.1222,-0.44812 z m 9.73652,0.12222 0.1629,0 -0.1629,0.57034 0,-0.57034 z m -11.9772,0.16296 -0.082,0.36664 0.4074,0.12221 0.1222,-0.36665 -0.4481,-0.1222 z m 4.97016,0.0407 0.6925,0.20368 -0.1222,0.36665 0.4481,0.12222 0.163,-0.61109 0.32589,0.36665 c -0.34769,0.17232 -0.58869,0.44677 -0.73329,0.81477 -0.062,0.0265 -0.089,0.0462 -0.1222,0.0815 l -0.2037,-0.0407 c 0.1402,-0.44386 -0.02,-0.72708 -0.4074,-0.81477 l -0.2037,-0.0407 c 0.072,-0.11464 0.1184,-0.28147 0.163,-0.44811 z m 16.90645,0 0.4074,0.1222 -0.082,0.24444 -0.4074,-0.12222 0.082,-0.24442 z m -14.42147,0.20368 0.1223,0.0407 c -0.043,2.1e-4 -0.081,-0.002 -0.1223,0 l 0,-0.0407 z m -13.72888,0.24443 0.4482,0.0815 -0.082,0.2037 -0.4074,-0.12222 0.041,-0.16296 z m 20.16563,0 0.16289,0.0815 -0.20369,0.0407 0.041,-0.12222 z m -10.46982,0.0407 0.163,0.24444 0.2036,0.0407 c 0.1186,0.0317 0.2233,0.0419 0.32599,0.0407 -0.14739,0.0926 -0.29509,0.12532 -0.48889,0.0815 l -0.2037,0.65181 c 0.3876,0.0877 0.6345,0.21898 0.77399,0.44813 l -0.48879,0.24443 0.40739,0.0815 0.082,-0.28516 c 0.122,0.22481 0.1522,0.50257 0.041,0.85552 l 0.6518,0.16295 -0.3667,1.09994 -0.61109,-0.12222 0,2.1184 -1.34429,1.14068 0.2037,0.32591 -1.75179,2.40357 0.4481,-0.12221 0.2444,0.0815 -0.1222,0.40739 -0.2851,-0.0407 -0.2852,-0.32591 -0.28519,-0.0407 -0.1222,0.48886 -0.2852,-0.0815 2.48508,-7.78107 0.24439,-0.0407 -0.28509,0.97774 0.65179,0.12221 0.4074,-1.30364 -0.4482,-0.0815 0.041,-0.1222 -0.2037,-0.0815 -0.28509,0 0.041,-0.12222 0.2851,-0.0407 0.082,-0.20369 -0.2444,-0.0815 0.163,-0.57033 -0.2037,-0.28518 0.082,-0.20369 0.2851,-0.0815 z m 6.68115,0.0407 0.2037,0.0407 -0.041,0.12222 -0.163,-0.16296 z m 7.86253,0 0.041,0.16296 -0.2852,-0.0815 0.2444,-0.0815 z m -20.04343,0.12222 0.4482,0.77403 -0.3259,0.16295 -0.163,-0.0407 0.041,-0.89624 z m -0.69249,0.0407 0.2037,0.0407 -0.1222,0.44811 -0.2037,-0.0407 0.1222,-0.44812 z m 19.88043,0.16295 -0.082,0.24443 -0.2037,-0.0407 0,-0.0815 0.2851,-0.12222 z m -1.38519,0.12222 0.082,0.12221 0,0.28517 -0.4481,-0.12222 0.163,0 0.2037,-0.28516 z m 3.87016,0.12221 0.2445,0.0815 0,0.28517 0,0.65183 0,0.12221 -0.326,0.12221 -0.40729,-0.0815 0.2851,-1.14067 0.041,0 c 0.064,-0.008 0.1028,-0.0322 0.163,-0.0407 z m -25.38008,0.12221 0.3667,0.48887 -0.48889,-0.12222 0.12219,-0.36665 z m 35.4018,0.0407 0.2037,0.0407 -0.1222,0.36665 -0.2037,-0.0407 0.1222,-0.36665 z m -11.4475,0.12222 -0.041,0.20369 -0.7741,0.0815 -0.20369,-0.0815 0,-0.0407 1.01849,-0.16295 z m 6.43665,0 -0.041,0.20369 0.40739,0.0815 0.041,-0.16296 -0.40739,-0.12221 z m -27.17257,0.24443 0,0.20369 -0.4074,0.2037 0.3259,0.3259 -0.1222,0.0815 -0.2852,-0.0815 0.082,-0.3259 -0.1222,-0.0407 0,-0.0407 0.5296,-0.32591 z m 3.13687,0 0.36659,0.0815 -0.24439,0.69255 -0.3259,-0.0815 0.2037,-0.69255 z m 8.31063,0 0.4074,0 0,0.0407 -0.4074,0 0,-0.0407 z m -13.60668,0.0815 0.20369,0.0407 -0.36659,1.34438 c -0.019,-0.29823 -0.091,-0.4868 -0.2445,-0.57035 l 0.041,-0.32591 0.3667,-0.48886 z m 10.30691,0.0815 0.2444,0.0815 -0.1222,0.44812 -0.2852,-0.0407 0.163,-0.48885 z m 2.11838,0.0407 0.2444,0.0407 -0.082,0.24444 0.041,0.16294 c -0.01,0.1969 0.032,0.3372 0.1222,0.44813 l 0,0.0815 -0.1629,0 -0.4074,0.44813 -0.20369,0 0.24439,-0.85552 0.163,-0.28516 -0.041,-0.0407 0.082,-0.24444 z m 1.38509,0.0407 0.2444,0.28518 0,0.28516 c -0.1625,-0.11746 -0.2809,-0.25346 -0.4074,-0.36664 l 0.163,-0.2037 z m -7.69954,0.2037 0.2851,0.0407 -0.1629,0.48885 -0.2445,-0.0815 0.1223,-0.44812 z m 13.97328,0.0815 0.2037,0.0407 0.3259,0.48886 -0.082,0.24444 -0.2037,-0.0815 -0.082,-0.0815 0,-0.16296 -0.2037,0 c 0.013,-0.15533 0.042,-0.32188 0.041,-0.44811 z m -16.53986,0.0815 -0.1222,0.36664 -0.041,1.42586 -0.65179,0.81477 0.3666,0.0815 -0.4481,0.12221 -0.082,0.24444 0.2852,0.3259 -0.041,0.20369 -0.5704,0.61109 0.082,0.97772 -0.85549,1.42585 0.2852,0.28516 -0.6111,-0.12222 0.4481,-1.54805 -1.50729,0.8555 0.2851,0.28518 -1.01839,0.44811 c -0.1112,-0.21925 -0.218,-0.41747 -0.3259,-0.65181 0,-0.0107 0.01,-0.03 0,-0.0407 l 0.1222,-0.77403 0.2851,0.0815 0.69259,0.44812 c -0.20059,-0.6795 -0.55919,-1.09061 -1.14069,-1.22216 l 0.2037,-0.69255 c 0.015,-0.0461 0.027,-0.077 0.041,-0.12221 l 0.1222,-0.0407 0.041,-0.2037 -0.082,-0.0407 c 0.068,-0.22572 0.108,-0.44974 0.163,-0.65181 l 0.1629,-0.12221 0.041,-0.2037 -0.041,-0.12221 c 0.059,-0.23983 0.045,-0.41041 0.082,-0.61108 0.2166,-0.0412 0.45009,-0.15496 0.69259,-0.36665 -0.087,0.52224 -0.036,0.83279 0.2444,0.89625 l -0.3259,0.20369 -0.041,0.0815 c -0.1805,0.11243 -0.37509,0.24349 -0.52959,0.36665 l -0.041,0.24443 0.40739,0.12221 -0.32589,1.67028 0.57029,0.12222 0.1222,-0.40739 0.4482,-0.20369 -0.2852,-0.28517 -0.2852,-0.0815 0.082,-0.2037 1.50739,0.12222 0.2037,-0.69256 -0.5296,-0.12221 0.1222,-0.40739 0.57029,0.12222 0.3667,-1.14068 0.2444,-0.16295 -0.2037,-0.0407 0.4889,-1.54808 0.32589,-0.12221 z m -6.11074,0.0407 0.2444,0.0815 -0.1222,0.36665 -0.2037,-0.0407 0.082,-0.40739 z m 24.03569,0 0.163,0.24444 0.2037,0.0815 0.32589,-0.12221 -0.041,0.16295 c -0.39619,0.0368 -0.72569,0.11789 -0.97779,0.20371 l -0.041,0 -0.1629,-0.0407 0.2852,-0.44813 0.2444,-0.0815 z m -12.0179,0.0815 0.6111,0.12222 -0.1222,0.4074 -0.4889,-0.52962 z m 3.95167,0.12222 0.3259,0.0815 -0.041,0.16296 -0.2852,0.0815 0,-0.0407 0,-0.28517 z m 4.80716,0.0407 0.2037,0.0407 0,0.0407 -0.2037,0 c 0,-0.0303 0,-0.052 0,-0.0815 z m -13.81038,0.0815 0.28519,0.0815 -0.082,0.61109 -0.36669,0.12221 0.041,-0.40738 0.1223,-0.4074 z m 29.57615,0.0407 0.20369,0.0407 -0.1222,0.36666 -0.20369,-0.0407 0.1222,-0.36666 z m -7.45515,0.32592 0.4074,0.12222 -0.082,0.44812 -0.4074,-0.24443 0.082,-0.32591 z m -26.35777,0.0407 0.4074,0.12222 -0.082,0.20369 -0.4074,-0.12221 0.082,-0.2037 z m 1.67029,0 0.2037,0.24443 -0.041,0.20369 -0.3259,-0.3259 0.1629,-0.12222 z m 18.16934,0.0407 c 0.1619,0.0875 0.2758,0.18387 0.4889,0.28517 -0.019,0.0576 -0.041,0.1396 -0.041,0.20369 l -0.5296,0 c 0.031,-0.17322 0.06,-0.33607 0.082,-0.48886 z m -3.25907,0.20369 0.163,0 0,0.0407 -0.163,-0.0407 z m -12.1401,0.20369 -0.082,0.57034 -0.041,0.24444 -0.28519,-0.0815 0.041,-0.61108 0.36669,-0.12222 z m -3.29977,0.0815 0.2444,0.0407 -0.1222,0.48886 -0.2852,-0.0407 0.163,-0.48886 z m 10.71422,0.0407 0.73329,0.16295 0,0.0815 -0.082,0.24443 -0.082,0.12222 0,0.16295 0,0.0407 -0.1222,0.28517 -0.082,0 -0.2037,-0.28517 c 0.017,-0.3233 -0.065,-0.59919 -0.16299,-0.81477 z m 20.00262,0 c -0.1782,0.66667 0.096,1.38753 0.6925,2.1184 l 0.24449,-0.12222 0.1629,0.24443 -0.041,0.16296 c -0.24629,-0.0658 -0.49569,0.0124 -0.69249,0.16295 -0.042,-0.0157 -0.074,-0.0298 -0.1223,-0.0407 l -0.3666,0.12221 c 0.1402,-0.44386 0.062,-0.72707 -0.32589,-0.81477 l -0.4074,0.12222 -0.041,0.0815 -0.2852,-0.20369 c 0.2165,-0.51357 0.4453,-0.70986 0.8148,-0.61108 l 0.1222,-0.40738 -0.6111,-0.16295 0.85559,-0.65182 z m 2.40358,0.0407 0.3259,0.48887 -0.1222,0.44812 -0.2852,-0.57034 0.082,-0.36665 z m -17.96574,0.0815 0.28519,0.0815 -0.1222,0.40739 -0.24449,-0.32591 0.082,-0.16296 z m -14.25848,0.0407 0.28519,0.0407 -0.082,0.20369 c -0.1131,0.033 -0.21799,0.0873 -0.32589,0.12222 l 0.1222,-0.36665 z m 15.76586,0 0.73329,0 -0.082,0.2037 -0.6926,0.0815 c 0.022,-0.10671 0.02,-0.18393 0.041,-0.28517 z m -3.99236,0.0815 0.041,0 0,0.12222 -0.041,0 0,-0.12222 z m 19.67663,0 0.2037,0.0407 -0.2037,0.81477 -0.2037,-0.0407 0.2037,-0.81477 z m -28.43546,0.16295 0.57029,0.12222 -0.2444,0.69255 -0.36659,-0.61107 0.041,-0.2037 z m 2.15918,0.0407 -0.082,1.14068 0.61099,0.16296 0.082,-1.18142 -0.61099,-0.12222 z m 19.55443,0.12222 0.163,0.0407 -0.1222,0.44812 -0.2037,-0.0407 0,-0.0407 0.041,0 0.1222,-0.40738 z m -13.44368,0.0407 0.1222,0 0.2852,0.73329 -0.1222,0.16295 -0.163,0 -0.2037,-0.61108 c 0.01,-0.0113 0,-0.0293 0,-0.0407 l 0,-0.0407 c 0.026,-0.0655 0.056,-0.13405 0.082,-0.20369 z m 6.31444,0 0.4074,0 -0.082,0.48886 -0.3259,0 0,-0.48886 z m 4.03317,0 0.2444,0.0407 -0.041,0.16295 -0.2444,-0.0815 0.041,-0.12222 z m -25.70608,0.0815 0.082,0.0407 -0.041,0.20368 -0.082,-0.0407 0.041,-0.20368 z m 38.17207,0.0815 -0.041,0.16295 0.041,0.0407 0,-0.20369 z m -21.55071,0.0407 0.082,0 0,0.3259 -0.2037,-0.0407 0.1222,-0.28517 z m -10.91791,0.24443 c 0.2732,-0.0456 0.67939,-0.0134 1.18139,0.0407 l -0.1222,0.40738 c -0.3876,-0.0877 -0.75009,0.1822 -0.93699,0.77403 l -0.5704,-0.89624 c 0.053,-0.16645 0.175,-0.28029 0.4482,-0.32591 z m 14.09548,0.0407 0.3259,0 -0.1222,0.20369 -0.2037,0 0,-0.20369 z m 0.77409,0 0.082,0 0,0.20369 -0.041,0 -0.041,-0.20369 z m 15.15468,0.0407 0.48889,0.12222 -0.2852,1.01846 -0.36659,-0.48885 0.1629,-0.65183 z m -17.96565,0.0407 0.2444,0.0407 -0.2852,0.0815 0.041,-0.12222 z m 10.8364,0 0.2037,0.0407 -0.041,0.12222 -0.2444,0.12221 0,0.0815 -0.041,0 0.041,-0.0815 0.082,-0.28517 z m 9.57362,0.12222 -0.12229,0.0815 -0.082,0.16295 0.20369,0.24444 0,-0.48887 z m -13.81038,0.0815 0.4074,0.0815 -0.3259,0.44813 -0.326,-0.0815 -0.041,-0.16295 0.2852,-0.28517 z m -10.4291,0.0407 0.12219,0.0815 0,0.24444 -0.16289,-0.0407 c 0.032,-0.10244 0.017,-0.18859 0.041,-0.28517 z m 13.85107,0.0407 0.61109,0.5296 0.041,0.0407 -0.1222,0.61108 c -0.17379,-0.13018 -0.33509,-0.28385 -0.48889,-0.36665 -0.043,-0.24559 -0.071,-0.51515 -0.041,-0.81477 z m -8.55502,0.0407 0.36659,0 0,0.24444 -0.36659,0 0,-0.24444 z m -16.45836,0.0815 0.1629,0.0407 -0.1222,0.40738 -0.2852,-0.0815 0.082,-0.28517 0.163,-0.0815 z m 4.19606,0.2037 0.52959,0.12221 0,1.18141 c -0.33909,-0.0767 -0.52099,-0.50904 -0.52959,-1.30362 z m 1.79248,0.16295 -0.2444,0.69255 0.6518,0.16296 0.2037,-0.69256 -0.6111,-0.16295 z m 3.01467,0.24442 c 0.53691,0.1214 0.59101,1.23745 0.16291,3.29982 -0.149,0.24871 -0.3559,0.70204 -0.5703,1.14068 l -0.5704,-0.12222 -0.52959,-1.34436 c 0.3877,0.0877 0.59319,-0.0857 0.73329,-0.5296 l 0.082,-1.18142 0.2037,0.24443 0.6518,0.16296 -0.16291,-1.67029 z m 9.69573,0.0407 0.1222,0.12222 -0.2444,0.28517 -0.1222,0.44812 -0.1222,0 -0.2852,-0.0815 -0.041,-0.44813 0.082,-0.12221 0.2444,0.24443 0.3667,-0.44813 z m 5.37745,0 c 10e-5,0.30601 -0.1563,0.44816 -0.5703,0.44813 l 0,0.2037 0.4074,0 -0.3667,0.65181 -0.40729,-0.0815 0.082,-0.0815 0,-0.28517 -0.041,-0.0407 0.40729,-0.77404 c 0.1596,-0.009 0.3126,-0.0407 0.4889,-0.0407 z m -13.44368,0.0407 0.2852,0.0407 -0.4481,1.2629 -0.082,0.32591 c 0.1979,0.0814 0.3666,0.16669 0.5296,0.24443 l -0.2445,0.44812 -0.1222,-0.2037 -0.3259,0.16296 -0.24439,-0.0407 c 0.067,-0.14188 0.13049,-0.2725 0.20369,-0.48886 l -0.20369,0 0.16289,-0.48886 0.041,0.0407 0.2852,0 0.163,-1.30364 z m -8.18844,0.0815 0.5704,0.12222 -0.163,0.40739 -0.4074,-0.52961 z m 13.15859,0.0815 0.082,0.0815 -0.16299,-0.0407 0.082,-0.0407 z m 4.35896,0 0.3259,0 c -0.047,0.25427 -0.075,0.44865 -0.082,0.65181 l -0.61099,0 0.082,-0.57033 0.28509,-0.0815 z m -3.13687,0.0815 0.082,0.48886 c -0.2042,-0.10677 -0.34879,-0.23499 -0.44809,-0.40739 l 0.36659,-0.0815 z m -1.75168,0.0815 -0.1223,0.48886 -0.1629,0 0,-0.40738 0.2852,-0.0815 z m 18.00635,0.0407 0.20369,0.0407 -0.1629,0.65181 -0.20369,-0.0815 0.1629,-0.61107 z m 0.65189,0 0.48879,0.12222 -0.40739,1.46658 -0.1629,-0.0407 c -0.083,-0.0189 -0.171,0.0209 -0.2445,0.0407 l 0,-0.36664 0.326,-1.22216 z m -21.22482,0.0407 0.1222,0 0,0.0407 -0.1222,-0.0407 z m 3.50357,0.12222 c 0.081,0.0361 0.1343,0.0796 0.2036,0.12221 l -0.2444,0.0407 0.041,-0.16295 z m -12.1809,0.0815 0.2852,0.0407 -0.2852,0.89625 -0.2851,-0.0407 0.2851,-0.89624 z m 1.79249,0.16295 -0.1222,0.44812 0.61109,0.12221 -0.48889,-0.57033 z m 19.59523,0 c 0.045,0.041 0.1551,0.11944 0.2037,0.16295 l -0.082,0.5296 -0.8962,2.85169 -0.57039,0.81478 0.3667,1.0592 -0.6518,-0.16296 -0.36669,2.07767 -0.5296,-0.12222 0,-0.97772 0.3259,-0.12222 0.082,-0.20369 0.16299,-1.46659 0.4888,-0.57034 -0.1222,-0.12221 c 0.028,-0.0546 0.041,-0.1272 0.041,-0.2037 l 0.2037,-0.12221 -0.4074,-0.57034 0.3667,-0.12222 0.2444,0.0407 0.082,-1.14067 0.36659,-1.14068 0.5296,0.12221 0.163,-0.61107 z m 1.26289,0.0815 0.12229,0.16295 -0.16299,-0.0407 0.041,-0.12221 z m 1.83329,0.12221 0.082,1.62955 0.48889,0.12222 0.2036,-0.2037 -0.2444,0.81477 c -0.11469,-0.18977 -0.15689,-0.28133 -0.28519,-0.48886 l -0.2037,0.0815 c -0.022,-0.0177 -0.055,-0.0241 -0.082,-0.0407 l -0.4073,-0.65182 0.4481,-1.2629 z m 0.52959,0 0.3666,0.0815 0,0.0815 -0.2444,0.36665 -0.24439,-0.0815 0.12219,-0.44813 z m 3.78867,0.16296 0.2037,0.0407 -0.1222,0.44813 -0.2037,-0.0815 0.1222,-0.40739 z m 1.79248,0.24443 0.2037,0.0815 0,1.0592 0,0.0407 c -0.05,0.0364 -0.1167,0.0642 -0.1629,0.12222 l -0.36669,-0.0815 0.32589,-1.22216 z m -32.10192,0.0407 0.24439,0.0815 -0.97769,3.09612 -0.2444,-0.0407 0.9777,-3.13687 z m 29.57615,0.16296 0.082,0.0407 -0.1629,0.61107 -0.2037,-0.0407 0.1222,-0.44812 0.1629,-0.16295 z m -14.01409,0.16295 0.2037,0 0,0.48886 -0.2037,0 0,-0.48886 z m 11.69201,0.0815 0.2037,0.0815 0.041,0.24443 -0.2852,-0.20369 0.041,-0.12221 z m -24.2802,0.0815 -0.1629,0.44813 0.61109,0.16295 0.1629,-0.48886 -0.61109,-0.12222 z m 27.13187,0.0407 0.2037,0.0407 0.041,0.69256 -0.4074,-0.12222 0.163,-0.61108 z m -29.04655,0.0407 0.28519,0.0407 -0.20369,0.65182 -0.2445,-0.0815 0.163,-0.61108 z m 31.57233,0.20369 0.40739,0.12222 -0.082,1.0592 -0.082,0.32591 -0.2444,-0.0815 0.082,-1.14068 c -0.055,-0.0125 -0.1121,-0.005 -0.163,0 l 0.082,-0.28517 z m -19.55443,0.24443 0.041,0 0,0.44813 -0.2037,0 0.1629,-0.44813 z m -5.54045,0.0407 0.69249,0.16296 -0.57029,1.18142 -0.3259,0.44811 -0.082,0 0.2037,-0.61107 0,-1.0592 c 0.035,-0.0284 0.048,-0.0737 0.082,-0.12222 z m 5.94784,0.2037 0.4073,0 0,0.48885 0.2445,0 0.041,-0.0407 -0.041,0.28518 -0.3259,0.0815 -0.041,-0.12221 0.041,-0.2037 -0.3667,-0.0815 -0.1629,0.0407 c 0.1408,-0.12156 0.2037,-0.25687 0.2037,-0.44811 z m 13.89179,0 0.24439,0.0407 0.1223,0.73329 -0.082,0.24443 -0.40739,-0.61108 0.1222,-0.40738 z m -11.81421,0.20369 0.082,0 -0.20369,0.89625 -0.082,0.0407 -0.2036,-0.2037 c -0.1036,0 -0.1645,0.009 -0.2445,0.0407 l 0.2037,-0.65182 0.44809,-0.12221 z m 0.7741,0 0.48879,0 0.163,0.0407 -0.2444,0.77403 -0.52959,0.32591 -0.2445,0 0.082,-0.20369 0.163,0 0,-0.2037 0.2852,-0.0815 -0.2852,-0.28517 0.1222,-0.36664 z m 2.85167,0 0.65179,0 -0.082,0.20369 -0.6111,-0.12221 0.041,-0.0815 z m -22.5284,0.16295 0.65179,0.16295 -0.4888,0.61109 -0.36669,-0.0815 0.2037,-0.69256 z m 14.95107,0.12221 0.2037,0 0.36659,0.0815 -0.40739,0.2037 -0.041,0.20369 0.041,0.12222 -0.1629,0.0407 -0.2037,0 0.2037,-0.65183 z m 20.00263,0.0407 0.2036,0.0407 -0.041,0.2037 -0.2036,-0.0407 0.041,-0.2037 z m -18.82124,0.16296 0.2444,0.0407 -0.041,0.20369 -0.2852,0.0407 0.082,-0.28517 z m 6.19224,0 0.2852,0.0407 -0.041,0.0815 -0.2445,-0.0815 0,-0.0407 z m 6.15156,0.20369 0.65179,0.12222 0.2852,0.85551 c 0.027,0.31399 0.036,0.61617 -0.041,0.93698 l -0.2037,-0.0815 0.1629,-0.44812 -0.5703,-0.12221 -0.041,0.20369 0.3259,0.81477 -0.3259,0.12222 c -0.10509,0.33292 -0.023,0.6072 0.2852,0.77402 -0.04,0.10991 -0.074,0.22001 -0.1223,0.32591 l -0.24439,0.0815 0.12219,-0.40739 -0.57029,-0.12221 -0.2445,1.75176 c -0.1707,0.17431 -0.36791,0.3712 -0.5703,0.52959 l 0.20369,-0.28517 c 0.09,-0.61374 -0.12659,-0.99033 -0.61109,-1.09994 l 0.1222,-0.40738 0.6111,0.12222 0.1222,-0.28517 -0.3259,-0.28517 0.4481,-0.12222 0,-1.18142 0.5297,-1.79249 z m -27.37627,0.0407 0.81469,0.40739 -0.3259,1.09994 -0.2852,-0.0815 -0.32589,-1.01846 0.1223,-0.40739 z m 2.48497,0.0407 0.5704,0.12222 -0.082,0.20369 -0.5296,-0.12222 0.041,-0.20369 z m 32.02053,0.12222 0.2851,0.0407 -0.2036,0.69255 -0.2852,-0.0407 0.2037,-0.69255 z m -23.3025,0.0407 0.2037,0 0,0.20369 -0.2444,-0.0407 0.041,-0.16295 z m 10.14391,0 0,0.0815 -0.041,0 0.041,-0.0815 z m 11.8142,0.28516 -0.36669,1.34437 -0.041,0 0.40739,-1.34437 z m -11.4883,0.0815 0.2445,0.0815 -0.082,0.2037 -0.2852,0.12221 0.1222,-0.40738 z m 10.30691,0 0.041,0 c 0.027,0.19875 0.01,0.41806 -0.041,0.65182 l -0.16299,-0.0407 0.16299,-0.61108 z m 1.58879,0 0.1222,0.0407 0,0.2037 -0.163,-0.0407 0.041,-0.20369 z m -16.33616,0.12221 0.163,0 -0.4482,0.44813 -0.2037,0 0.4889,-0.44813 z m 3.13687,0 0.2852,0 -0.082,0.44813 -0.326,0 0.1223,-0.44813 z m -22.4469,0.2037 0.082,0.12221 -0.041,0.0815 c -0.011,-0.0687 -0.041,-0.1361 -0.041,-0.20369 z m 20.16552,0 0.5296,0 0.082,0.0815 -0.082,0.32591 -0.6111,-0.12221 0.082,-0.28517 z m -18.90264,0.0815 0.2037,0.0407 0,0.24444 c -0.066,-0.0966 -0.1384,-0.18401 -0.2037,-0.28518 z m 10.71422,0.2037 -0.082,0.28517 -0.041,0.0815 -0.041,0.12221 -0.163,-0.20368 0.3259,-0.28517 z m 19.71743,0 0.20369,0.0407 -0.082,0.16295 c -0.028,-0.0538 -0.092,-0.14667 -0.1222,-0.20369 z m -4.15538,0.0407 0.6111,0.12221 -0.082,0.24443 -0.6111,-0.16295 0.082,-0.20369 z m 7.94404,0 0.163,0.0407 -0.2852,0.97772 -0.1222,-0.0407 0.2444,-0.97772 z m -29.45395,0.0815 1.22219,0.0815 -0.2037,0.61108 -1.26289,0 0.2444,-0.69256 z m 10.91791,0.0407 0.65189,0 0,0.20369 -0.12229,0 -0.611,-0.16295 c 0.029,-0.0137 0.051,-0.0271 0.082,-0.0407 z m 14.29928,0.0815 0.2852,0.40738 -0.2852,0.44813 -0.2445,-0.0407 0.2445,-0.81477 z m 1.14069,0.3259 0.1222,0.61109 -0.2852,-0.0815 0.163,-0.52961 z m 4.15526,0.0407 0.1223,0 c -0.064,0.20396 -0.057,0.39209 0,0.52961 l -0.041,0 -0.1223,0.40738 0.041,0.89625 -0.40739,0.48886 -0.2036,-0.0407 0.32589,-1.18142 -0.44819,-0.12222 0.2445,-0.81476 0.40739,0.12221 0.082,-0.28517 z m -17.23235,0.0407 0.3666,0 0,0.28517 -0.2444,0.0815 -0.1222,-0.0407 0,-0.32591 z m 0.77399,0 0.4074,0 -0.1629,0.57034 -0.2445,-0.0407 -0.082,-0.0815 0.082,0 0,-0.44813 z m 2.03698,0 0.4074,0 -0.1223,0.69256 c -0.1459,0.15266 -0.3487,0.24964 -0.57029,0.3259 l -0.6111,-0.44812 c 0.097,0.029 0.2025,0.0644 0.3259,0.0815 0.41409,0 0.57039,-0.19281 0.57039,-0.65182 z m -22.4469,0.0407 c 0.01,0.0179 0.071,0.0224 0.082,0.0407 l -0.082,0 0,-0.0407 z m 2.77017,0.0407 0.8148,0.20369 -0.082,0.2037 -0.8148,0.0815 c -0.02,-0.0217 -0.021,-0.0594 -0.041,-0.0815 l 0.1222,-0.40739 z m 21.42842,0 0.28519,0.16295 -0.082,0.2037 -0.2851,-0.0407 0.082,-0.32591 z m -2.32208,0.0815 0.2852,0.0815 -0.2852,0 0,-0.0815 z m -14.29918,0.36665 0.48889,0.52959 -0.20369,0.65182 -0.041,0 -0.2445,-0.32591 -0.5296,-0.12221 c -0.048,0.151 -0.13909,0.27939 -0.24439,0.36664 l -0.8555,-0.24443 c -0.047,-0.23181 -0.22219,-0.40088 -0.61109,-0.48886 l 0.041,-0.20369 0.57029,0.12221 0.2037,0.24443 c 0.1053,-0.33289 0.569,-0.44604 1.42589,-0.52959 z m 3.17757,0.3259 0.3667,0.44812 -0.6518,-0.12221 0.2851,-0.32591 z m 21.67292,0 0.1222,0.20369 c -0.02,0.075 -0.087,0.16363 -0.1222,0.24443 l -0.1222,-0.0407 0.1222,-0.40739 z m -1.34439,0.12221 0.2037,0.36665 -0.041,0.2037 -0.24439,-0.36665 c 0.023,-0.0703 0.061,-0.13194 0.082,-0.2037 z m -25.90968,0.40739 0.2444,0.0407 -0.1222,0.40739 -0.2444,-0.0407 0.1222,-0.40739 z m -1.50729,0.0815 0.2037,0.0407 -0.041,0.12221 c -0.061,-0.0422 -0.1022,-0.11766 -0.163,-0.16295 z m -3.91096,0.0815 c 0.1984,0.0449 0.3656,0.10692 0.5296,0.12221 l 0.48889,0.61108 0,-0.48886 -0.1222,-0.12222 c 0.1736,-0.0109 0.3316,-0.0657 0.4481,-0.12221 0.1559,0.20013 0.3052,0.42705 0.48889,0.65181 l -0.32589,0.44813 -0.1222,-0.12222 -0.082,-0.16296 -0.2852,-0.0407 -0.65179,0.28517 0.041,0.61107 c -0.1698,-0.1506 -0.3285,-0.32458 -0.4889,-0.48886 l 0.082,-0.20369 -0.3667,-0.0815 c -0.15509,-0.17217 -0.30249,-0.34479 -0.44809,-0.5296 l 0.65179,0.12221 0.163,-0.48885 z m 11.7327,0.24443 0.4481,0 0,0.48886 -0.4481,0 0,-0.48886 z m 11.692,0 0.1629,0 0,0.12221 -0.1629,-0.12221 z m -4.44056,0.0407 0.163,0.28516 -0.041,0.16296 -0.97769,0 -0.2852,0 0,-0.0407 c 0.097,0.0219 0.1955,0.0613 0.2852,0.0407 0.17939,-0.0411 0.35959,-0.1964 0.48879,-0.40738 l 0.3667,-0.0407 z m -0.7333,0.0407 0,0.0407 -0.52959,0 0.52959,-0.0407 z m 2.19988,0.0407 c 0.1,0.0769 0.157,0.22678 0.163,0.36665 l -0.69259,0 0.163,-0.28518 0.36659,-0.0815 z m 17.11026,0.0407 0.1629,0.0407 -0.041,0.16296 -0.1629,-0.0815 0.041,-0.12221 z m -21.14332,0.0407 0.1222,0 c 0.1262,0.0632 0.2198,0.15471 0.2444,0.28518 l -0.3666,0 0,-0.28518 z m 11.69189,0.44813 0.5297,0.12222 -0.082,0.24443 -0.5297,-0.12221 0.082,-0.24444 z m -13.03628,0.0815 0.163,0.12222 -0.082,0.20369 -0.082,-0.0407 0,-0.28517 z m -4.11457,0.0815 0.2444,0.0407 0.1222,0.0815 0.163,0 -0.082,0.24444 -0.3667,0.20368 -0.1222,0.0407 0,-0.0815 0.1222,0.0407 0.041,-0.20368 -0.1222,-0.28517 0,-0.0815 z m 25.42079,0.0407 0.1223,0.44811 -0.1223,0.28518 0,-0.73329 z m -16.17316,0.16295 -0.041,0.20369 -0.041,0.48886 -0.93699,-0.12221 -0.082,-0.0815 0.77409,-0.36664 -0.3667,-0.0815 0.6926,-0.0407 z m -3.50347,0.0407 -0.041,0.12222 -0.2852,-0.0815 0.3259,-0.0407 z m 4.76635,0 0.4481,0.0815 0,0.0407 0,0.20368 c -0.1904,-2e-5 -0.2989,0.0479 -0.4074,0.12222 l -0.041,-0.44812 z m -2.56647,0.0407 -0.1223,0.44812 -0.611,-0.0815 -0.24449,-0.24443 -0.082,0.20369 -0.2852,-0.0407 0.082,-0.24442 0.082,0 0.2037,0.0815 -0.041,-0.0815 0.28519,0 0.7333,-0.0407 z m 3.78866,0 0.1222,0.0407 -0.1222,0 0,-0.0407 z m -15.27697,0.0407 0.163,0.24442 0.2851,0 0.163,-0.12221 0.28519,0.28517 -0.32599,0.36665 c -0.7618,0.018 -1.19929,0.12476 -1.26289,0.32591 l -0.082,0.20368 0.2852,0.0815 0.52959,0 -0.2444,0.28517 c -0.30679,2e-5 -0.72459,-0.15749 -1.18138,-0.36665 l 0.12219,-0.3259 -0.36669,-0.0815 -0.3259,0.16296 c -0.3253,-0.18391 -0.67349,-0.42525 -1.05919,-0.69256 0.53,0.11988 0.94079,0.021 1.22219,-0.28517 0.452,0.0971 0.89639,0.16295 1.38509,0.16295 l 0.082,0 0.16289,0.0407 0.041,-0.16295 0.1223,-0.12221 z m 1.91469,0.0815 c 0.012,0.27818 0.17509,0.47168 0.61109,0.57034 l -0.041,0.12222 -0.1629,0.0815 c -0.40169,-0.0334 -0.77869,-0.0703 -1.09999,-0.0815 0.1875,-0.17418 0.4654,-0.46552 0.6926,-0.69256 z m 25.17639,0 0.12229,0.0407 -0.24449,1.01847 -0.1222,-0.0407 0.2444,-1.01847 z m -10.95861,0.0815 0.24439,0.0815 -0.082,0.28517 -0.16289,0 0,-0.36665 z m -20.81742,0.12222 c 0.29649,0.34462 0.63239,0.71226 0.97779,1.09994 l -0.7333,-0.16296 c -0.29399,-0.25078 -0.58279,-0.52524 -0.85559,-0.81476 l 0.6111,-0.12222 z m -1.05919,0.24443 0.44809,0.73329 -0.3259,0 c -0.23129,-0.1353 -0.47379,-0.24992 -0.69249,-0.40738 0.047,-0.0675 0.091,-0.14685 0.1222,-0.24443 l 0.4481,-0.0815 z m 23.22099,0.16296 0.5703,0.12222 0,1.18141 -0.4481,0.12222 -0.52959,-0.12222 0.40739,-1.30363 z m 11.28451,0.12222 -0.2037,0.40737 0.082,-0.3259 0.1223,-0.0815 z m -16.29536,0.12221 0.2444,0 0,0.0815 -0.2444,-0.0407 0,-0.0407 z m -19.67673,0.12222 c 0.029,0.006 0.054,-0.005 0.082,0 l 0.082,0.0815 -0.3666,0 0.2037,-0.0815 z m 29.16885,0.0407 -0.041,0.36664 -0.2852,-0.0815 c 0.11949,-0.0874 0.2148,-0.19178 0.3259,-0.28516 z m 3.82937,0 0,0.0815 -0.041,0 0.041,-0.0815 z m -0.97769,0.0407 0.20369,0.0815 c -0.072,0.0648 -0.16969,0.10082 -0.24449,0.16296 -0.1919,0.15941 -0.368,0.33853 -0.5703,0.48887 -0.078,-0.0803 -0.1398,-0.20169 -0.2037,-0.32591 0.1573,-0.0786 0.2843,-0.16146 0.4481,-0.24444 l 0.3259,0.0815 0.041,-0.20369 c 0.01,-0.003 -0.01,-0.0377 0,-0.0407 z m -23.54691,0.20368 -1.09989,0.52961 -0.163,0 0,-0.2037 c 0.1087,2e-5 0.2966,-0.11103 0.5296,-0.28517 l 0.73329,-0.0407 z m -4.92935,0.12222 c 0.1297,0.14533 0.23019,0.25609 0.36669,0.40739 l 0,0.20369 c -0.065,-0.0425 -0.139,-0.0782 -0.2037,-0.12222 l 0.041,-0.0815 -0.16299,-0.0407 c -0.08,-0.0559 -0.166,-0.10467 -0.2444,-0.16296 l 0.1629,-0.0407 0.041,-0.16295 z m 10.02171,0.0815 0.3666,0.24443 -0.082,0.0815 -0.2037,0 c 0,-0.12072 -0.037,-0.22823 -0.082,-0.32591 z m -2.03698,0.32591 0.6518,0 0,0.20369 -0.6518,0 0,-0.20369 z m 6.64044,0 0.4073,0 0,0.0815 -0.2444,0.12222 -0.1629,0 0,-0.20369 z m -3.09617,0.12221 0.4074,0.0815 -0.4074,0 0,-0.0815 z m 5.82565,0 0.2444,0.0407 0.24439,0.28516 0.081,0 0,0.40739 c -0.36149,0.0312 -0.75799,0.0611 -1.14069,0.0815 l 0.3259,-0.48887 c 0.079,-0.004 0.1558,0 0.2445,0 l 0,-0.3259 z m -6.47744,0.3259 0.65179,0 0,0.48887 -1.01849,0 0.3667,-0.48887 z m 8.18842,0.0407 0.2852,0.0815 -0.041,0.12222 c -0.1063,0.0146 -0.2176,0.0272 -0.3259,0.0407 l 0.082,-0.24444 z m 9.41063,0.0407 c -0.02,0.28762 -0.042,0.56161 0.041,0.77404 l -0.163,0.0815 -0.1222,0.40738 -0.3259,-0.44812 0.5703,-0.81478 z m -12.0586,0.0407 c 0.01,-0.004 0.03,0.004 0.041,0 l 0.041,0.0407 -0.082,0.24443 -0.2445,-0.0407 c 0.043,-0.0934 0.1038,-0.18419 0.2445,-0.24443 z m -8.63663,0.16296 0.6518,0 0,0.20369 -0.6518,0.20369 0,-0.40738 z m 1.0185,0 0.48889,0 0,0.20369 -0.48889,0 0,-0.20369 z m 3.58496,0 0.3667,0 -0.3667,0.40738 -0.48879,0 0.48879,-0.40738 z m -15.15467,0.20369 0.041,0 0,0.20369 -0.44819,0 0,-0.0407 0.40739,-0.16296 z m 3.34047,0 0.6111,0 0,0.20369 -0.6111,0 0,-0.20369 z m 4.97016,0 0.61109,0 0,0.20369 -0.61109,0 0,-0.20369 z m 3.91087,0 0.65179,0 0,0.20369 -0.65179,0 0,-0.20369 z m 18.04715,0.0407 0.082,0 0,0.0407 -0.082,-0.0407 z m -2.72949,0.0815 0.041,0 -0.1629,0.48885 -0.52959,-0.1222 0.041,-0.0815 c 0.17549,-0.0707 0.41489,-0.20083 0.61109,-0.28517 z m 5.29606,0 c 0.072,0.0901 0.1611,0.14842 0.2444,0.24443 l 0,0.0407 -0.4074,-0.0815 c -0.029,-0.0236 -0.055,-0.0578 -0.082,-0.0815 l 0.2445,-0.12221 z m -32.63152,0.28517 0.65179,0 0,0.24442 -0.65179,0 0,-0.24442 z m 2.93317,0 0.3666,0 -0.3666,0.52959 0,-0.52959 z m -3.54426,0.24442 0.44809,0 0,0.28517 -0.44809,0 0,-0.28517 z m 9.32911,0 0.61109,0 1.0184,0.28517 1.22219,-0.28517 1.30359,0 0,0.48887 -5.17376,0 0,-0.2037 1.01849,-0.28517 z m 4.52197,0 4.60346,0 -0.4481,0.48887 -0.2037,-0.2037 -1.01849,0.2037 -2.48508,0 -0.44809,-0.48887 z m 5.45895,0 0.57029,0 0,0.28517 -0.57029,0 0,-0.28517 z m 15.31767,0 c -0.021,0.0666 -0.029,0.1361 -0.041,0.2037 l -0.041,0 0.041,-0.16296 0.041,-0.0407 z m -30.51314,0.28517 1.01849,0 0,0.2037 -1.01849,0 0,-0.2037 z"
+       style="font-size:51.30051804px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.22999998;fill:#8ae234;fill-opacity:1;stroke:none;display:inline;filter:url(#filter4332);font-family:'karabinE.';-inkscape-font-specification:'karabinE.'"
+       inkscape:export-filename="Z:\private\général\Charte graphique\OD\OD6.0\splashscreen\png\splashscreen_OD6.0.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       inkscape:connector-curvature="0" />
+    <text
+       id="text3967"
+       y="-445.37497"
+       x="567.12866"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:RondaEF;-inkscape-font-specification:RondaEF;letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:#faa542;stroke-width:0.88416499;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="font-size:33.28510284px;line-height:1.25;fill:#faa542;fill-opacity:1;stroke:#faa542;stroke-width:0.88416499;stroke-opacity:1"
+         y="-445.37497"
+         x="567.12866"
+         id="tspan3969"
+         sodipodi:role="line">1.0</tspan></text>
+    <g
+       transform="translate(166.47751,-231.23334)"
+       id="g4593"
+       inkscape:export-filename="/Volumes/partage/private/marketing/Design/ChartesGraphiques/ModelWriter/png/logo_modelwriter_HD.png"
+       inkscape:export-xdpi="600"
+       inkscape:export-ydpi="600">
+      <g
+         transform="matrix(1.0083233,0,0,1.0083233,11.632425,-451.09721)"
+         id="g4324">
+        <text
+           xml:space="preserve"
+           style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Open Sans Condensed';-inkscape-font-specification:'Open Sans Condensed';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none"
+           x="156.92473"
+           y="118.44344"
+           id="text4326"><tspan
+             sodipodi:role="line"
+             id="tspan4328"
+             x="156.92473"
+             y="118.44344"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:52.10993958px;line-height:1.25;font-family:'Merriweather Sans';-inkscape-font-specification:'Merriweather Sans Bold';letter-spacing:-1.36148632px;fill:#5a5a5a;fill-opacity:1">Intent</tspan></text>
+      </g>
+      <g
+         transform="translate(30.581957,-101.5825)"
+         id="g4400">
+        <g
+           id="g4376"
+           transform="matrix(0.62138123,0.05946504,-0.05946504,0.62138123,93.923956,-868.76894)">
+          <path
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none"
+             sodipodi:nodetypes="ccscscscsc"
+             inkscape:connector-curvature="0"
+             id="path4378"
+             d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329" />
+          <path
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#5a5a5a;fill-opacity:1;stroke:none"
+             sodipodi:nodetypes="ccccscc"
+             inkscape:connector-curvature="0"
+             id="path4380"
+             d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702" />
+        </g>
+        <g
+           transform="matrix(-0.62138123,-0.05946504,0.05946504,-0.62138123,366.91998,366.23079)"
+           id="g4394"
+           style="fill:#faa542;fill-opacity:1">
+          <path
+             d="m 353.76798,912.84277 c 0.31366,-0.42982 0.46098,-0.98102 0.44194,-1.65363 -5.04243,-14.72576 -9.38414,-30.88636 -16.84097,-44.34698 -1.02954,-1.85847 -1.62482,1.6687 -1.54396,2.60599 1.20755,8.12703 6.20172,30.20172 3.44674,33.9138 -2.60067,3.50433 -23.74398,6.82552 -33.41569,8.55038 -0.91725,0.2089 -4.05999,2.11778 -2.11516,2.40873 15.1165,2.26136 32.6588,0.12757 48.42072,-0.67442 0.81271,-0.0656 1.29274,-0.37405 1.50184,-0.66059 l 0.10452,-0.14329"
+             id="path4396"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccscscscsc"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none" />
+          <path
+             d="m 332.28429,899.14379 c -0.44809,0.59109 -1.09318,1.03281 -1.93535,1.3252 -15.83787,-10.26458 -37.79549,-16.07602 -71.04317,0.78365 -0.6928,0.0953 -0.74044,-0.25108 -0.78811,-0.59743 21.48247,-15.37477 37.15247,-19.80437 54.84276,-17.61836 9.28662,1.14756 22.17176,8.81004 19.07325,15.90992 l -0.14929,0.19702"
+             id="path4398"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccscc"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.29399872px;line-height:125%;font-family:'Nueva Std';-inkscape-font-specification:'Nueva Std Bold';letter-spacing:0px;word-spacing:0px;fill:#faa542;fill-opacity:1;stroke:none" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/mapping/releng/org.eclipse.intent.codestyle/.project b/mapping/releng/org.eclipse.intent.codestyle/.project
new file mode 100644
index 0000000..00c04e6
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.codestyle/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.codestyle</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/mapping/releng/org.eclipse.intent.codestyle/codestyle/Intent.importorder b/mapping/releng/org.eclipse.intent.codestyle/codestyle/Intent.importorder
new file mode 100644
index 0000000..2e51487
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.codestyle/codestyle/Intent.importorder
@@ -0,0 +1,8 @@
+#Organize Import Order
+#Fri Jun 28 10:00:06 CEST 2013
+5=\#org.junit
+4=org
+3=javax
+2=java
+1=fr
+0=com
diff --git a/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCheckstyle6Configuration.xml b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCheckstyle6Configuration.xml
new file mode 100644
index 0000000..f1bb905
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCheckstyle6Configuration.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+    This configuration file was written by the eclipse-cs plugin configuration editor
+-->
+<!--
+    Checkstyle-Configuration: Intent Checkstyle 6
+    Description: 
+Intent Checkstyle 6 configuration.
+-->
+<module name="Checker">
+  <property name="severity" value="warning"/>
+  <module name="TreeWalker">
+    <module name="FileContentsHolder"/>
+    <module name="SuppressWarningsHolder"/>
+    <module name="JavadocMethod">
+      <property name="severity" value="error"/>
+      <property name="allowMissingPropertyJavadoc" value="true"/>
+      <property name="suppressLoadErrors" value="true"/>
+    </module>
+    <module name="JavadocStyle">
+      <property name="severity" value="error"/>
+      <property name="checkEmptyJavadoc" value="true"/>
+      <property name="checkHtml" value="false"/>
+    </module>
+    <module name="JavadocType">
+      <property name="severity" value="error"/>
+      <property name="authorFormat" value="(&lt;a href=&quot;mailto:[a-z.]+@[a-z.]+\.[a-z]{2,4}\&quot;&gt;)?[A-Z][a-z]+\s[A-Z][a-z]+(&lt;/a&gt;)?"/>
+      <property name="allowUnknownTags" value="true"/>
+    </module>
+    <module name="JavadocVariable">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ConstantName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="LocalFinalVariableName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="LocalVariableName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MemberName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MethodName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MethodTypeParameterName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="PackageName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ParameterName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="StaticVariableName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="TypeName">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="AvoidStarImport">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="IllegalImport">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ImportOrder">
+      <property name="severity" value="error"/>
+      <property name="option" value="above"/>
+    </module>
+    <module name="RedundantImport">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="UnusedImports">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="AnonInnerLength">
+      <property name="severity" value="error"/>
+      <property name="max" value="25"/>
+    </module>
+    <module name="ExecutableStatementCount">
+      <property name="severity" value="error"/>
+      <property name="max" value="70"/>
+      <property name="tokens" value="INSTANCE_INIT,STATIC_INIT,METHOD_DEF,CTOR_DEF"/>
+    </module>
+    <module name="MethodLength">
+      <property name="severity" value="error"/>
+      <property name="max" value="140"/>
+    </module>
+    <module name="ParameterNumber">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="OuterTypeNumber">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="EmptyForInitializerPad">
+      <property name="severity" value="ignore"/>
+      <property name="option" value="space"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="EmptyForIteratorPad">
+      <property name="severity" value="error"/>
+      <property name="option" value="space"/>
+    </module>
+    <module name="NoWhitespaceBefore">
+      <property name="severity" value="error"/>
+      <property name="allowLineBreaks" value="true"/>
+      <property name="tokens" value="SEMI,DOT,POST_DEC,POST_INC"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="MethodParamPad">
+      <property name="severity" value="error"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="ParenPad">
+      <property name="severity" value="error"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="TypecastParenPad">
+      <property name="severity" value="error"/>
+      <property name="tokens" value="RPAREN,TYPECAST"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="WhitespaceAfter">
+      <property name="severity" value="error"/>
+      <property name="tokens" value="COMMA,SEMI"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="WhitespaceAround">
+      <property name="severity" value="error"/>
+      <property name="tokens" value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAND,LCURLY,LE,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_TRY,LITERAL_WHILE,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,TYPE_EXTENSION_AND"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
+    </module>
+    <module name="ModifierOrder">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="RedundantModifier">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="AvoidNestedBlocks">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="EmptyBlock">
+      <property name="severity" value="error"/>
+      <property name="option" value="text"/>
+    </module>
+    <module name="LeftCurly">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="NeedBraces">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="RightCurly">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="RightCurly"/>
+    <module name="LeftCurly">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="AvoidInlineConditionals">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="CovariantEquals">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="DefaultComesLast">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="DeclarationOrder">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="FinalLocalVariable">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="EmptyStatement">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="EqualsAvoidNull">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="EqualsHashCode">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ExplicitInitialization">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="FallThrough">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="HiddenField">
+      <property name="severity" value="error"/>
+      <property name="ignoreConstructorParameter" value="true"/>
+      <property name="ignoreSetter" value="true"/>
+    </module>
+    <module name="IllegalInstantiation">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="IllegalCatch">
+      <property name="severity" value="error"/>
+      <property name="illegalClassNames" value="java.lang.Exception, java.lang.Throwable, java.lang.RuntimeException, java.lang.Error"/>
+    </module>
+    <module name="IllegalThrows">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="InnerAssignment">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MagicNumber">
+      <property name="severity" value="error"/>
+      <property name="ignoreNumbers" value="-100, -10, -1, -0.75, -0.5, -0.1, 0, 0.1, 0.5, 0.75, 1, 2, 3, 4, 5, 6, 10, 11, 13, 100, 1000, 10000"/>
+    </module>
+    <module name="MissingSwitchDefault">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ModifiedControlVariable">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MultipleStringLiterals">
+      <property name="severity" value="error"/>
+      <property name="allowedDuplicates" value="2"/>
+    </module>
+    <module name="MultipleVariableDeclarations">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="NestedForDepth">
+      <property name="severity" value="error"/>
+      <property name="max" value="2"/>
+    </module>
+    <module name="NestedIfDepth">
+      <property name="severity" value="error"/>
+      <property name="max" value="2"/>
+    </module>
+    <module name="NestedTryDepth">
+      <property name="severity" value="error"/>
+      <property name="max" value="2"/>
+    </module>
+    <module name="NoClone">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="NoFinalizer">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="PackageDeclaration">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ParameterAssignment">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ReturnCount">
+      <property name="severity" value="error"/>
+      <property name="format" value="^$"/>
+    </module>
+    <module name="SimplifyBooleanExpression">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="SimplifyBooleanReturn">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="StringLiteralEquality">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="SuperClone">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="SuperFinalize">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ArrayTrailingComma">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="UnnecessaryParentheses">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="OneStatementPerLine">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="FinalClass">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="HideUtilityClassConstructor">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MutableException">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ThrowsCount">
+      <property name="severity" value="error"/>
+      <property name="max" value="3"/>
+    </module>
+    <module name="VisibilityModifier">
+      <property name="severity" value="error"/>
+      <property name="packageAllowed" value="true"/>
+      <property name="protectedAllowed" value="true"/>
+    </module>
+    <module name="BooleanExpressionComplexity">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ClassDataAbstractionCoupling">
+      <property name="severity" value="info"/>
+      <property name="max" value="12"/>
+    </module>
+    <module name="ClassFanOutComplexity">
+      <property name="severity" value="info"/>
+      <property name="max" value="30"/>
+    </module>
+    <module name="CyclomaticComplexity">
+      <property name="severity" value="info"/>
+    </module>
+    <module name="JavaNCSS">
+      <property name="severity" value="info"/>
+    </module>
+    <module name="NPathComplexity">
+      <property name="severity" value="info"/>
+    </module>
+    <module name="ArrayTypeStyle">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="UpperEll">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="OuterTypeFilename">
+      <property name="severity" value="error"/>
+    </module>
+    <module name="AbstractClassName">
+      <property name="severity" value="error"/>
+      <property name="format" value="^Abstract.*$"/>
+    </module>
+  </module>
+  <module name="FileLength">
+    <property name="severity" value="error"/>
+    <property name="max" value="3000"/>
+  </module>
+  <module name="SuppressionCommentFilter"/>
+  <module name="SuppressWarningsFilter"/>
+</module>
diff --git a/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCodeTemplates.xml b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCodeTemplates.xml
new file mode 100644
index 0000000..dbf10d3
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentCodeTemplates.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?><templates><template autoinsert="true" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**
+ * @return the ${bare_field_name}
+ */</template><template autoinsert="true" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**
+ * @param ${param} the ${bare_field_name} to set
+ */</template><template autoinsert="true" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**
+ * ${tags}
+ */</template><template autoinsert="false" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/*******************************************************************************
+ * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+name="typecomment">/**
+ * @author &lt;a href="mailto:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;
+ */</template><template autoinsert="true" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment">/**
+ * 
+ */</template><template autoinsert="true" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/**
+ * ${tags}
+ */</template><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment">/**{@inheritDoc}
+ *
+ * ${see_to_overridden}
+ */</template><template autoinsert="true" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/**
+ * ${tags}
+ * ${see_to_target}
+ */</template><template autoinsert="false" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">/*******************************************************************************
+ * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+${filecomment}
+${package_declaration}
+
+${typecomment}
+${type_declaration}</template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">
+</template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">
+</template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">
+</template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">
+</template><template autoinsert="true" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">// ${todo} Auto-generated catch block
+${exception_var}.printStackTrace();</template><template autoinsert="true" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody">// ${todo} Auto-generated method stub
+${body_statement}</template><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">${body_statement}
+// ${todo} Auto-generated constructor stub</template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};</template></templates>
diff --git a/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentFormatter.xml b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentFormatter.xml
new file mode 100644
index 0000000..4874360
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.codestyle/codestyle/IntentFormatter.xml
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="Intent" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="110"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="8"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="110"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
diff --git a/mapping/releng/org.eclipse.intent.product/.project b/mapping/releng/org.eclipse.intent.product/.project
new file mode 100644
index 0000000..4e6f6d1
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.product</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.resources.prefs b/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.runtime.prefs b/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/mapping/releng/org.eclipse.intent.product/category.xml b/mapping/releng/org.eclipse.intent.product/category.xml
new file mode 100644
index 0000000..ff97a74
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/category.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <feature id="org.eclipse.intent.product.feature" version="0.0.0">
+      <category name="org.eclipse.intent"/>
+   </feature>
+   <category-def name="org.eclipse.intent" label="Intent">
+      <description>
+         [Enter Catergory Description here.]
+      </description>
+   </category-def>
+</site>
diff --git a/mapping/releng/org.eclipse.intent.product/icons/ModelWriter.icns b/mapping/releng/org.eclipse.intent.product/icons/ModelWriter.icns
new file mode 100644
index 0000000..6367694
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/ModelWriter.icns
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/about.gif b/mapping/releng/org.eclipse.intent.product/icons/about.gif
new file mode 100644
index 0000000..65d4f3f
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/about.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_128.png b/mapping/releng/org.eclipse.intent.product/icons/logo_128.png
new file mode 100644
index 0000000..a98c5e6
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_128.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_16.gif b/mapping/releng/org.eclipse.intent.product/icons/logo_16.gif
new file mode 100644
index 0000000..aff9faa
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_16.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_16.png b/mapping/releng/org.eclipse.intent.product/icons/logo_16.png
new file mode 100644
index 0000000..14d5073
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_16.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_32.gif b/mapping/releng/org.eclipse.intent.product/icons/logo_32.gif
new file mode 100644
index 0000000..a1832ba
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_32.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_32.png b/mapping/releng/org.eclipse.intent.product/icons/logo_32.png
new file mode 100644
index 0000000..8bf2b44
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_32.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_48.png b/mapping/releng/org.eclipse.intent.product/icons/logo_48.png
new file mode 100644
index 0000000..4806d5b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_48.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_64.gif b/mapping/releng/org.eclipse.intent.product/icons/logo_64.gif
new file mode 100644
index 0000000..f1f2600
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_64.gif
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_64.png b/mapping/releng/org.eclipse.intent.product/icons/logo_64.png
new file mode 100644
index 0000000..20eb791
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_64.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_64.xpm b/mapping/releng/org.eclipse.intent.product/icons/logo_64.xpm
new file mode 100644
index 0000000..3145c8e
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_64.xpm
@@ -0,0 +1,90 @@
+/* XPM */
+static char * logo_64_xpm[] = {
+"64 64 23 1",
+" 	c None",
+".	c #5A5A5A",
+"+	c #5B5B5B",
+"@	c #595959",
+"#	c #F9A542",
+"$	c #F9A643",
+"%	c #FAA542",
+"&	c #FAA541",
+"*	c #FBA542",
+"=	c #FAA443",
+"-	c #F9A543",
+";	c #FAA641",
+">	c #FAA441",
+",	c #FAA442",
+"'	c #FAA643",
+")	c #F9A641",
+"!	c #FBA642",
+"~	c #FAA543",
+"{	c #F9A442",
+"]	c #F9A443",
+"^	c #FBA543",
+"/	c #F9A541",
+"(	c #F9A441",
+"                                                                ",
+"                                                                ",
+"                                           .                    ",
+"                                           .                    ",
+"                                           .                    ",
+"                              .            ..                   ",
+"                        .............      ..                   ",
+"                      ................     ..                   ",
+"                   +...          @......   ..                   ",
+"                  +                 ....   +.+                  ",
+"                                      ...  @..                  ",
+"                                       ..  ...                  ",
+"                                           ...                  ",
+"                                          .....                 ",
+"                                      @........                 ",
+"                               ................                 ",
+"                                   .....@......                 ",
+"                                                                ",
+"      .......         .......                                   ",
+"      ........       ........                                   ",
+"      ........       ........                                   ",
+"      ........+      ........                                   ",
+"      .........     .........                                   ",
+"      .........     .........                                   ",
+"      ..... ....   +... .....                                   ",
+"      ..... @...   .... .....                                   ",
+"      .....  .... @...  .....     ####        ####        ###$  ",
+"      .....  @... ....  .....     %%%%%      &%%%%%      %%%%%  ",
+"      .....   .......   .....     %%%%%      %%%%%*      %%%%=  ",
+"      .....   .......   .....     *%%%%      %%%%%%     -%%%%   ",
+"      .....   @.....+   .....      %%%%%     %%%%%%     ;%%%%   ",
+"      .....    .....    .....      %%%%%    #%%%%%%>    %%%%%   ",
+"      .....    +....    .....      ,%%%%    %%%'&%%%    %%%%,   ",
+"      .....     ...     .....      #%%%%    %%% $%%%    %%%%    ",
+"      .....             .....       %%%%=   %%%  %%%   #%%%%    ",
+"      .....             .....       %%%%%  %%%%  %%%)  %%%%%    ",
+"      .....             .....       %%%%%  &%%!  ~%%,  %%%%*    ",
+"       ....             ....        >%%%%  %%%   ,%%%  %%%%     ",
+"                                     %%%%# %%%    %%% ,%%%%     ",
+"                                     %%%%,>%%%    %%% &%%%%     ",
+"                                     %%%%%%%%#    %%%,%%%%%     ",
+"                                     &%%%%%%%     '%%%%%%%{     ",
+"                                      %%%%%%%      %%%%%%%      ",
+"                                      %%%%%%%      %%%%%%%      ",
+"                                      %%%%%%~      *%%%%%~      ",
+"                                      !%%%%%]      ,%%%%%,      ",
+"                                                                ",
+"                 %%%%!%%%;!=#                                   ",
+"                 %%%%%%%%%%%%%%%&                               ",
+"                 %%%%%%%%>                                      ",
+"                 %%%%&                                          ",
+"                  %%%                                           ",
+"                  %%*  &%                                       ",
+"                  %%%  %%%                                      ",
+"                  #%!   %%%*                 >                  ",
+"                   %%   &%%%%%^          $&-/                   ",
+"                   %%     %%%%%%%%%!%%%%%%                      ",
+"                   {%      (%%%%%%%%%%%~                        ",
+"                   ,%            #                              ",
+"                    %                                           ",
+"                    %                                           ",
+"                    %                                           ",
+"                                                                ",
+"                                                                "};
diff --git a/mapping/releng/org.eclipse.intent.product/icons/logo_title_256.png b/mapping/releng/org.eclipse.intent.product/icons/logo_title_256.png
new file mode 100644
index 0000000..50c12eb
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/icons/logo_title_256.png
Binary files differ
diff --git a/mapping/releng/org.eclipse.intent.product/index.html b/mapping/releng/org.eclipse.intent.product/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/index.html
diff --git a/mapping/releng/org.eclipse.intent.product/intent.p2.inf b/mapping/releng/org.eclipse.intent.product/intent.p2.inf
new file mode 100644
index 0000000..3de2d76
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/intent.p2.inf
@@ -0,0 +1,74 @@
+instructions.configure=\
+  mkdir(path:${installFolder}/dropins);
+
+requires.1.namespace=org.eclipse.equinox.p2.iu
+requires.1.name=toolingorg.eclipse.configuration.macosx
+requires.1.filter=(osgi.os=macosx)
+requires.1.range=[1.0.0,1.0.0]
+requires.1.greedy=true
+
+requires.2.namespace=org.eclipse.equinox.p2.iu
+requires.2.name=toolingorg.eclipse.configuration
+requires.2.filter=(!(osgi.os=macosx))
+requires.2.range=[1.0.0,1.0.0]
+requires.2.greedy=true
+
+requires.3.namespace=org.eclipse.equinox.p2.iu
+requires.3.name=toolingorg.eclipse.configuration.macosx.x86_64
+requires.3.filter=(&(osgi.os=macosx) (osgi.arch=x86_64))
+requires.3.range=[1.0.0,1.0.0]
+requires.3.greedy=true
+
+requires.4.namespace=org.eclipse.equinox.p2.iu
+requires.4.name=toolingorg.eclipse.configuration.aix.ppc64
+requires.4.filter=(&(osgi.os=aix) (osgi.arch=ppc64))
+requires.4.range=[1.0.0,1.0.0]
+requires.4.greedy=true
+
+requires.5.namespace=org.eclipse.equinox.p2.iu
+requires.5.name=org.eclipse.ui.views.log
+
+units.1.id=toolingorg.eclipse.configuration.macosx-collab
+units.1.version=1.0.0
+units.1.provides.1.namespace=org.eclipse.equinox.p2.iu
+units.1.provides.1.name=toolingorg.eclipse.configuration.macosx
+units.1.provides.1.version=1.0.0
+units.1.filter=(osgi.os=macosx)
+units.1.touchpoint.id=org.eclipse.equinox.p2.osgi
+units.1.touchpoint.version=1.0.0
+units.1.instructions.configure=setProgramProperty(propName:osgi.instance.area.default,propValue:workspace);
+units.1.instructions.unconfigure=setProgramProperty(propName:osgi.instance.area.default,propValue:);
+
+units.2.id=toolingorg.eclipse.configuration-collab
+units.2.version=1.0.0
+units.2.provides.1.namespace=org.eclipse.equinox.p2.iu
+units.2.provides.1.name=toolingorg.eclipse.configuration
+units.2.provides.1.version=1.0.0
+units.2.filter=(!(osgi.os=macosx))
+units.2.touchpoint.id=org.eclipse.equinox.p2.osgi
+units.2.touchpoint.version=1.0.0
+units.2.instructions.configure=setProgramProperty(propName:osgi.instance.area.default,propValue:workspace);
+units.2.instructions.unconfigure=setProgramProperty(propName:osgi.instance.area.default,propValue:);
+
+units.3.id=toolingorg.eclipse.configuration.macosx.x86_64-collab
+units.3.version=1.0.0
+units.3.provides.1.namespace=org.eclipse.equinox.p2.iu
+units.3.provides.1.name=toolingorg.eclipse.configuration.macosx.x86_64
+units.3.provides.1.version=1.0.0
+units.3.filter=(&(osgi.os=macosx) (osgi.arch=x86_64))
+units.3.touchpoint.id=org.eclipse.equinox.p2.osgi
+units.3.touchpoint.version=1.0.0
+units.3.instructions.configure=addJvmArg(jvmArg:-Xms40m);addJvmArg(jvmArg:-Xmx512m);
+units.3.instructions.unconfigure=removeJvmArg(jvmArg:-Xms40m);removeJvmArg(jvmArg:-Xmx512m);
+units.3.instructions.configure=setJvm(jvm:../Eclipse/jre/lib/jli/libjli.dylib);\
+
+units.4.id=toolingorg.eclipse.configuration.aix.ppc64-collab
+units.4.version=1.0.0
+units.4.provides.1.namespace=org.eclipse.equinox.p2.iu
+units.4.provides.1.name=toolingorg.eclipse.configuration.aix.ppc64
+units.4.provides.1.version=1.0.0
+units.4.filter=(&(osgi.os=aix) (osgi.arch=ppc64))
+units.4.touchpoint.id=org.eclipse.equinox.p2.osgi
+units.4.touchpoint.version=1.0.0
+units.4.instructions.configure=addJvmArg(jvmArg:-Xms40m);addJvmArg(jvmArg:-Xmx512m);
+units.4.instructions.unconfigure=removeJvmArg(jvmArg:-Xms40m);removeJvmArg(jvmArg:-Xmx512m);
diff --git a/mapping/releng/org.eclipse.intent.product/intent.product b/mapping/releng/org.eclipse.intent.product/intent.product
new file mode 100644
index 0000000..b962937
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/intent.product
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Intent" uid="org.eclipse.intent.product" id="org.eclipse.intent.product" application="org.eclipse.ui.ide.workbench" version="0.10.0.qualifier" useFeatures="true" includeLaunchers="true">
+
+   <aboutInfo>
+      <image path="icons/about.gif"/>
+      <text>
+         Intent
+
+Version  0.10.0
+
+
+Visit https://www.eclipse.org/intent/
+      </text>
+   </aboutInfo>
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>--launcher.XXMaxPermSize
+256m
+      </programArgs>
+      <vmArgs>-Xms256m
+-Xmx1024m
+-XX:MaxPermSize=256m
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages i16="icons/logo_16.png" i32="icons/logo_32.png" i48="icons/logo_48.png" i64="icons/logo_64.png" i128="icons/logo_128.png"/>
+
+   <splash
+      location="org.eclipse.intent.branding"
+      startupProgressRect="0,328,458,18"
+      startupMessageRect="7,308,458,18"
+      startupForegroundColor="000000" />
+   <launcher name="Intent">
+      <linux icon="/icons/logo_64.xpm"/>
+      <macosx icon="/icons/Intent.icns"/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <intro introId="eu.intent.welcome.intro"/>
+
+   <vm>
+      <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</linux>
+      <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</macos>
+      <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</solaris>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</windows>
+   </vm>
+
+   <license>
+        <url>https://www.eclipse.org/legal/epl-v10.html</url>
+        <text>
+   Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+&quot;Contribution&quot; means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+&quot;Contributor&quot; means any person or entity that distributes the Program.
+
+&quot;Licensed Patents&quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.
+
+&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of the Program.
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+         </text>
+   </license>
+
+   <plugins>
+   </plugins>
+
+   <features>
+      <feature id="org.eclipse.intent.product.feature"/>
+      <feature id="org.eclipse.platform"/>
+      <feature id="org.eclipse.epp.mpc"/>
+   </features>
+
+   <configurations>
+      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
+      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
+      <property name="osgi.instance.area.default" value="@user.home/intentws" os="macosx" />
+   </configurations>
+
+   <preferencesInfo>
+      <targetfile overwrite="false"/>
+   </preferencesInfo>
+
+   <cssInfo>
+   </cssInfo>
+
+</product>
diff --git a/mapping/releng/org.eclipse.intent.product/pom.xml b/mapping/releng/org.eclipse.intent.product/pom.xml
new file mode 100644
index 0000000..4a1754f
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/pom.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2016 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+    Obeo - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.product</artifactId>
+  <packaging>eclipse-repository</packaging>
+
+  <name>Intent Product Repository</name>
+
+  <properties>
+    <product-id>org.eclipse.intent.product</product-id>
+  </properties>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>buchen-maven-repo</id>
+      <url>http://buchen.github.io/maven-repo</url>
+      <layout>default</layout>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-p2-director-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <executions>
+          <execution>
+            <!-- install the product for all configured os/ws/arch environments 
+              using p2 director -->
+            <id>materialize-products</id>
+            <goals>
+              <goal>materialize-products</goal>
+            </goals>
+          </execution>
+          <execution>
+            <!-- (optional) create product zips (one per os/ws/arch) -->
+            <id>archive-products</id>
+            <goals>
+              <goal>archive-products</goal>
+            </goals>
+          </execution>
+        </executions>
+        <!-- (optional) customize the root folder name of the product zip -->
+        <configuration>
+          <products>
+            <product>
+              <id>${product-id}</id>
+              <rootFolder>Intent</rootFolder>
+              <rootFolders>
+              	<macosx>Intent.app</macosx>
+              </rootFolders>
+              <archiveFileName>Intent</archiveFileName>
+            </product>
+          </products>
+        </configuration>
+      </plugin>
+      <!-- workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=349421 -->
+      <plugin>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>2.5</version>
+        <executions>
+          <execution>
+            <id>copy-resources</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>copy-resources</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/products/${product-id}/icons/</outputDirectory>
+              <nonFilteredFileExtensions>
+                <nonFilteredFileExtension>ico</nonFilteredFileExtension>
+                <nonFilteredFileExtension>xpm</nonFilteredFileExtension>
+                <nonFilteredFileExtension>icns</nonFilteredFileExtension>
+                <nonFilteredFileExtension>png</nonFilteredFileExtension>
+                <nonFilteredFileExtension>gif</nonFilteredFileExtension>
+                <nonFilteredFileExtension>bmp</nonFilteredFileExtension>
+              </nonFilteredFileExtensions>
+              <resources>
+                <resource>
+                  <directory>../icons</directory>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.product/site.xml b/mapping/releng/org.eclipse.intent.product/site.xml
new file mode 100644
index 0000000..8c5965b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.product/site.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+</site>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/.project b/mapping/releng/org.eclipse.intent.targetplatforms/.project
new file mode 100644
index 0000000..e5749bd
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.targetplatforms</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.target b/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.target
new file mode 100644
index 0000000..55b7877
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.target
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="Intent Luna Target Platform" sequenceNumber="1506936012">
+  <locations>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ui" version="0.0.0"/>
+      <unit id="org.eclipse.platform.sdk" version="0.0.0"/>
+      <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ui.views.log" version="0.0.0"/>
+      <unit id="org.eclipse.epp.mpc.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.core.runtime" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.junit" version="4.11.0.v201303080030"/>
+      <unit id="org.eclipse.emf.compare" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.runtime.feature.group" version="0.0.0"/>
+      <repository id="Eclipse" location="http://download.eclipse.org/releases/luna"/>
+    </location>
+  </locations>
+</target>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.tpd b/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.tpd
new file mode 100644
index 0000000..6b47260
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/luna/intent-luna.tpd
@@ -0,0 +1,21 @@
+target "Intent Luna Target Platform"
+
+with source requirements
+
+location Eclipse "http://download.eclipse.org/releases/luna" {
+	org.eclipse.ui lazy
+	org.eclipse.platform.sdk lazy
+	org.eclipse.equinox.executable.feature.group lazy
+	org.eclipse.ui.views.log lazy
+	org.eclipse.epp.mpc.feature.group lazy
+	org.eclipse.core.runtime lazy
+
+	org.eclipse.emf.sdk.feature.group lazy
+	org.eclipse.emf.cdo.sdk.feature.group lazy
+	
+	org.junit [4.0.0,5.0.0)
+	
+	org.eclipse.emf.compare lazy
+	
+	org.eclipse.sirius.runtime.feature.group lazy
+}
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/luna/pom.xml b/mapping/releng/org.eclipse.intent.targetplatforms/luna/pom.xml
new file mode 100644
index 0000000..0c68451
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/luna/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent</groupId>
+  <artifactId>intent-luna</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-target-definition</packaging>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.target b/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.target
new file mode 100644
index 0000000..f05ba83
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.target
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="Intent Mars Target Platform" sequenceNumber="1506936009">
+  <locations>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ui" version="0.0.0"/>
+      <unit id="org.eclipse.platform.sdk" version="0.0.0"/>
+      <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ui.views.log" version="0.0.0"/>
+      <unit id="org.eclipse.epp.mpc.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.core.runtime" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.junit" version="4.12.0.v201504281640"/>
+      <unit id="org.eclipse.emf.compare" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.runtime.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/mars"/>
+    </location>
+  </locations>
+</target>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.tpd b/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.tpd
new file mode 100644
index 0000000..e034536
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/mars/intent-mars.tpd
@@ -0,0 +1,21 @@
+target "Intent Mars Target Platform"
+
+with source requirements
+
+location "http://download.eclipse.org/releases/mars" {
+	org.eclipse.ui lazy
+	org.eclipse.platform.sdk lazy
+	org.eclipse.equinox.executable.feature.group lazy
+	org.eclipse.ui.views.log lazy
+	org.eclipse.epp.mpc.feature.group lazy
+	org.eclipse.core.runtime lazy
+
+	org.eclipse.emf.sdk.feature.group lazy
+	org.eclipse.emf.cdo.sdk.feature.group lazy
+	
+	org.junit [4.0.0,5.0.0)
+	
+	org.eclipse.emf.compare lazy
+	
+	org.eclipse.sirius.runtime.feature.group lazy
+}
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/mars/pom.xml b/mapping/releng/org.eclipse.intent.targetplatforms/mars/pom.xml
new file mode 100644
index 0000000..2604a9e
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/mars/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent</groupId>
+  <artifactId>intent-mars</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-target-definition</packaging>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.target b/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.target
new file mode 100644
index 0000000..1142c1b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.target
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="Intent Neon Target Platform" sequenceNumber="1506936020">
+  <locations>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ui" version="0.0.0"/>
+      <unit id="org.eclipse.platform.sdk" version="0.0.0"/>
+      <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ui.views.log" version="0.0.0"/>
+      <unit id="org.eclipse.epp.mpc.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.core.runtime" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.junit" version="4.12.0.v201504281640"/>
+      <unit id="org.eclipse.emf.compare" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.runtime.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/neon"/>
+    </location>
+  </locations>
+</target>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.tpd b/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.tpd
new file mode 100644
index 0000000..43be50b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/neon/intent-neon.tpd
@@ -0,0 +1,21 @@
+target "Intent Neon Target Platform"
+
+with source requirements
+
+location "http://download.eclipse.org/releases/neon" {
+	org.eclipse.ui lazy
+	org.eclipse.platform.sdk lazy
+	org.eclipse.equinox.executable.feature.group lazy
+	org.eclipse.ui.views.log lazy
+	org.eclipse.epp.mpc.feature.group lazy
+	org.eclipse.core.runtime lazy
+
+	org.eclipse.emf.sdk.feature.group lazy
+	org.eclipse.emf.cdo.sdk.feature.group lazy
+	
+	org.junit [4.0.0,5.0.0)
+	
+	org.eclipse.emf.compare lazy
+	
+	org.eclipse.sirius.runtime.feature.group lazy
+}
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/neon/pom.xml b/mapping/releng/org.eclipse.intent.targetplatforms/neon/pom.xml
new file mode 100644
index 0000000..853bdf1
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/neon/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent</groupId>
+  <artifactId>intent-neon</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-target-definition</packaging>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.target b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.target
new file mode 100644
index 0000000..334eb0d
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.target
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="Intent Oxygen Target Platform" sequenceNumber="1506936009">
+  <locations>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ui" version="0.0.0"/>
+      <unit id="org.eclipse.platform.sdk" version="0.0.0"/>
+      <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ui.views.log" version="0.0.0"/>
+      <unit id="org.eclipse.epp.mpc.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.core.runtime" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.junit" version="4.12.0.v201504281640"/>
+      <unit id="org.eclipse.emf.compare" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.runtime.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/oxygen"/>
+    </location>
+  </locations>
+</target>
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.tpd b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.tpd
new file mode 100644
index 0000000..3642bbe
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/intent-oxygen.tpd
@@ -0,0 +1,21 @@
+target "Intent Oxygen Target Platform"
+
+with source requirements
+
+location "http://download.eclipse.org/releases/oxygen" {
+	org.eclipse.ui lazy
+	org.eclipse.platform.sdk lazy
+	org.eclipse.equinox.executable.feature.group lazy
+	org.eclipse.ui.views.log lazy
+	org.eclipse.epp.mpc.feature.group lazy
+	org.eclipse.core.runtime lazy
+
+	org.eclipse.emf.sdk.feature.group lazy
+	org.eclipse.emf.cdo.sdk.feature.group lazy
+	
+	org.junit [4.0.0,5.0.0)
+	
+	org.eclipse.emf.compare lazy
+	
+	org.eclipse.sirius.runtime.feature.group lazy
+}
diff --git a/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/pom.xml b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/pom.xml
new file mode 100644
index 0000000..bd30e06
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.targetplatforms/oxygen/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../../..</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.intent</groupId>
+  <artifactId>intent-oxygen</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <packaging>eclipse-target-definition</packaging>
+
+</project>
diff --git a/mapping/releng/org.eclipse.intent.updatesite/.project b/mapping/releng/org.eclipse.intent.updatesite/.project
new file mode 100644
index 0000000..ed07fa8
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.updatesite/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.updatesite</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/releng/org.eclipse.intent.updatesite/category.xml b/mapping/releng/org.eclipse.intent.updatesite/category.xml
new file mode 100644
index 0000000..c606208
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.updatesite/category.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <feature id="org.eclipse.intent.mapping" version="0.0.0">
+      <category name="org.eclipse.intent"/>
+   </feature>
+   <feature id="org.eclipse.intent.mapping.source" version="0.0.0">
+      <category name="org.eclipse.intent"/>
+   </feature>
+   <feature id="org.eclipse.intent.mapping.sirius" version="0.0.0">
+      <category name="org.eclipse.intent"/>
+   </feature>
+   <feature id="org.eclipse.intent.mapping.sirius.source" version="0.0.0">
+      <category name="org.eclipse.intent"/>
+   </feature>
+   <category-def name="org.eclipse.intent" label="Intent">
+      <description>
+         [Enter Catergory Description here.]
+      </description>
+   </category-def>
+</site>
diff --git a/mapping/releng/org.eclipse.intent.updatesite/pom.xml b/mapping/releng/org.eclipse.intent.updatesite/pom.xml
new file mode 100644
index 0000000..85db1c3
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.updatesite/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2011, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.updatesite</artifactId>
+  <packaging>eclipse-repository</packaging>
+  <version>0.10.0-SNAPSHOT</version>
+
+  <name>Intent Repository</name>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <filtering>true</filtering>
+        <includes>
+          <include>publisher.properties</include>
+        </includes>
+      </resource>
+    </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-p2-repository-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <createArtifactRepository>true</createArtifactRepository>
+          <finalName>repository/${project.artifactId}</finalName>
+          <compress>true</compress>
+          <repositoryName>Intent ${unqualifiedVersion}.${buildQualifier}</repositoryName>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>verify</phase>
+            <goals>
+              <goal>resources</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <outputDirectory>${project.build.directory}</outputDirectory>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/mapping/releng/org.eclipse.intent.updatesite/publisher.properties b/mapping/releng/org.eclipse.intent.updatesite/publisher.properties
new file mode 100644
index 0000000..b12af24
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.updatesite/publisher.properties
@@ -0,0 +1,5 @@
+# Intent publisher properties
+UPDATE_SITE__UNQUALIFIED_VERSION=${unqualifiedVersion}
+UPDATE_SITE__QUALIFIED_VERSION=${unqualifiedVersion}.${buildQualifier}
+UPDATE_SITE__ARTIFACT_NAME=${project.groupId}-${unqualifiedVersion}.${buildQualifier}.zip
+UPDATE_SITE__ARTIFACT_URL=${env.JOB_URL}${env.BUILD_NUMBER}/artifact/releng/org.eclipse.intent.updatesite/target/${project.groupId}-${unqualifiedVersion}.${buildQualifier}.zip
diff --git a/mapping/releng/org.eclipse.intent.updatesite/site.xml b/mapping/releng/org.eclipse.intent.updatesite/site.xml
new file mode 100644
index 0000000..8c5965b
--- /dev/null
+++ b/mapping/releng/org.eclipse.intent.updatesite/site.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+</site>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.checkstyle b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.checkstyle
new file mode 100644
index 0000000..5ddb099
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter Tests" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6ConfigurationTests.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter Tests" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.classpath b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.project b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.project
new file mode 100644
index 0000000..7f433ef
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf.ide.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.core.prefs b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.ui.prefs b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/META-INF/MANIFEST.MF b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5664362
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf.ide.tests
+Bundle-Version: 0.10.0.qualifier
+Export-Package: org.eclipse.intent.mapping.emf.ide.tests,
+ org.eclipse.intent.mapping.emf.ide.tests.adapter,
+ org.eclipse.intent.mapping.emf.ide.tests.connector,
+ org.eclipse.intent.mapping.emf.ide.tests.resource
+Require-Bundle: org.junit,
+ org.eclipse.intent.mapping.ide.tests,
+ org.eclipse.intent.mapping.tests,
+ org.eclipse.intent.mapping.ide,
+ org.eclipse.intent.mapping,
+ org.eclipse.core.contenttype,
+ org.eclipse.equinox.registry,
+ org.eclipse.intent.mapping.emf.ide,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.intent.mapping.emf.tests
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/build.properties b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/org.eclipse.intent.mapping.emf.ide.tests.launch b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/org.eclipse.intent.mapping.emf.ide.tests.launch
new file mode 100644
index 0000000..79408b5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/org.eclipse.intent.mapping.emf.ide.tests.launch
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/mylyn/docs/intent/mapping/emf/ide/tests/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="com.mountainminds.eclemma.ui.launchGroup.coverage"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.intent.mapping.emf.ide.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.intent.mapping.emf.ide.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.intent.branding.product"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/pom.xml b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/pom.xml
new file mode 100644
index 0000000..678e0d5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf.ide.tests</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <name>Mapping EMF IDE Tests</name>
+
+  <packaging>eclipse-test-plugin</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-surefire-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <includes>
+            <include>**/AllTests.class</include>
+          </includes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/AllTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/AllTests.java
new file mode 100644
index 0000000..10f6abe
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/AllTests.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests;
+
+import org.eclipse.intent.mapping.emf.ide.tests.adapter.EObjectLocationToMarkerAdapterFactoryTests;
+import org.eclipse.intent.mapping.emf.ide.tests.adapter.MarkerToEObjectLocationTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.EObjectContainerProviderTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.EObjectFileConnectorDelegateTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeCDOContainerProviderTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeCDOResourceNodeConnectorTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeCDOViewConnectorTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeEObjectConnectorCDOTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeEObjectConnectorParametrizedCDOTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeEObjectConnectorParametrizedTests;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.IdeEObjectConnectorTests;
+import org.eclipse.intent.mapping.emf.ide.tests.resource.EMFEObjectFileLocationTests;
+import org.eclipse.intent.mapping.emf.ide.tests.resource.EMFResourceLocationTests;
+import org.eclipse.intent.mapping.emf.ide.tests.resource.EMFTextFileLocationTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping.emf.ide plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {EMFResourceLocationTests.class, EMFTextFileLocationTests.class,
+		EMFEObjectFileLocationTests.class, EObjectFileConnectorDelegateTests.class,
+		WorkspaceMappingBaseListenerTests.class, IdeEObjectConnectorTests.class,
+		IdeEObjectConnectorCDOTests.class, IdeCDOContainerProviderTests.class,
+		EObjectContainerProviderTests.class, IdeEObjectConnectorParametrizedTests.class,
+		IdeEObjectConnectorParametrizedCDOTests.class, EObjectLocationToMarkerAdapterFactoryTests.class,
+		MarkerToEObjectLocationTests.class, IdeCDOViewConnectorTests.class,
+		IdeCDOResourceNodeConnectorTests.class, })
+
+public class AllTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/WorkspaceMappingBaseListenerTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/WorkspaceMappingBaseListenerTests.java
new file mode 100644
index 0000000..5def8c2
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/WorkspaceMappingBaseListenerTests.java
@@ -0,0 +1,719 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseRegistryListener;
+import org.eclipse.intent.mapping.emf.ide.WorkspaceMappingBaseListener;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Tests {@link WorkspaceMappingBaseListener}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class WorkspaceMappingBaseListenerTests {
+
+	/**
+	 * Make sure org.eclipse.intent.mapping.emf.ide is activated.
+	 */
+	private static final WorkspaceMappingBaseListener LISTENER = new WorkspaceMappingBaseListener(false);
+
+	/**
+	 * Test {@link IBaseRegistryListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private class TestBaseRegistryListener implements IBaseRegistryListener {
+
+		/**
+		 * Registered {@link IBase}.
+		 */
+		private List<IBase> bases = new ArrayList<IBase>();
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseRegistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseRegistred(IBase base) {
+			bases.add(base);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseRegistryListener#baseUnregistred(org.eclipse.intent.mapping.base.IBase)
+		 */
+		public void baseUnregistred(IBase base) {
+			bases.remove(base);
+		}
+
+		/**
+		 * Gets the {@link List} of registered {@link IBase}.
+		 * 
+		 * @return the {@link List} of registered {@link IBase}
+		 */
+		public List<IBase> getBases() {
+			return bases;
+		}
+
+	}
+
+	/**
+	 * Creates an {@link IFile} that is not a {@link Base} resource in the given {@link IContainer}.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 * @return the created {@link IFile} if any, <code>null</code> otherwise
+	 */
+	private IFile createNotBaseFile(IContainer container) {
+		IFile res = container.getFile(new Path("test.txt"));
+
+		try {
+			res.create(new ByteArrayInputStream("text".getBytes()), true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Creates an {@link IProject}.
+	 * 
+	 * @return
+	 * @throws CoreException
+	 */
+	private IProject createProject() throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+	/**
+	 * Creates a {@link Base} {@link IFile} in the given container containing the given {@link Base}.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 * @param base
+	 *            the {@link Base}
+	 * @return the created {@link IFile} if any, <code>null</code> otherwise
+	 */
+	private IFile createBaseFile(IContainer container, Base base) {
+		final String fileName = "test.mapping";
+		IFile res = container.getFile(new Path(fileName));
+
+		try {
+			final ResourceSet resourceSet = new ResourceSetImpl();
+			resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(MappingPackage.eNAME,
+					new XMIResourceFactoryImpl());
+
+			final Resource resource = resourceSet.createResource(URI.createPlatformResourceURI(container
+					.getFullPath().toString() + "/" + fileName, true));
+			if (base != null) {
+				resource.getContents().add(base);
+			}
+			resource.save(null);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Clears the workspace after each test.
+	 */
+	@Before
+	public void beforeTest() {
+		try {
+			for (IResource resource : ResourcesPlugin.getWorkspace().getRoot().members()) {
+				((IProject)resource).open(new NullProgressMonitor());
+				resource.delete(true, new NullProgressMonitor());
+			}
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	@Test
+	public void resourceChangedAddProject() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedAddFile() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createNotBaseFile(project);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedAddBaseFileWithoutBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, null);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedAddBaseFileWithBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveProject() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveFile() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createNotBaseFile(project);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveBaseFileWithoutBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, null);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveBaseFileWithBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveProject() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.move(new Path("/project"), true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveFile() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createNotBaseFile(project);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			file.move(new Path("/test/file.txt"), true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveBaseFileWithoutBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, null);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			file.move(new Path("/test/file.mapping"), true, new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveBaseFileWithBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			file.move(new Path("/test/file.mapping"), true, new NullProgressMonitor());
+
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveBaseFileWithBaseToNoBaseThenToBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			file.move(new Path("/test/file.txt"), true, new NullProgressMonitor());
+			file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/test/file.txt"));
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			file.move(new Path("/test/file.mapping"), true, new NullProgressMonitor());
+
+			assertEquals(1, registeryListener.getBases().size());
+			assertEquals("test", registeryListener.getBases().get(0).getName());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenProject() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenFile() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createNotBaseFile(project);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenBaseFileWithoutBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, null);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenBaseFileWithBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(1, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseProject() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseFile() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createNotBaseFile(project);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseBaseFileWithoutBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, null);
+
+			assertTrue(file != null);
+			assertEquals(0, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseBaseFileWithBase() {
+
+		final TestBaseRegistryListener registeryListener = new TestBaseRegistryListener();
+		try {
+			MappingUtils.getMappingRegistry().addListener(registeryListener);
+
+			final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+			base.setName("test");
+			final IProject project = createProject();
+			final IFile file = createBaseFile(project, base);
+
+			assertTrue(file != null);
+			assertEquals(1, registeryListener.getBases().size());
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(0, registeryListener.getBases().size());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		} finally {
+			MappingUtils.getMappingRegistry().removeListener(registeryListener);
+		}
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/EObjectLocationToMarkerAdapterFactoryTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/EObjectLocationToMarkerAdapterFactoryTests.java
new file mode 100644
index 0000000..82f1cf2
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/EObjectLocationToMarkerAdapterFactoryTests.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.adapter;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector.EObjectContainerHelper;
+import org.eclipse.intent.mapping.emf.ide.adapter.EObjectLocationToMarkerAdapterFactory;
+import org.eclipse.intent.mapping.emf.ide.marker.IEObjectLocationMaker;
+import org.eclipse.intent.mapping.emf.ide.tests.connector.EObjectFileConnectorDelegateTests.TestEObjectFileLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestCouple;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Tests {@link EObjectLocationToMarkerAdapterFactory}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectLocationToMarkerAdapterFactoryTests {
+
+	/**
+	 * Makes sure org.eclipse.intent.mapping.emf.ide is activated.
+	 */
+	private static final EObjectLocationToMarkerAdapterFactory FACTORY = new EObjectLocationToMarkerAdapterFactory();
+
+	/**
+	 * The {@link EObjectContainerHelper}.
+	 */
+	private final EObjectContainerHelper eObjectContainerHelper = new EObjectContainerHelper();
+
+	@Test
+	public void getAdapter() throws Exception {
+		final IProject project = createProject();
+		final ResourceSet rs = new ResourceSetImpl();
+		final org.eclipse.emf.ecore.resource.Resource r = rs.createResource(URI.createPlatformResourceURI(
+				"/test/test.xmi", true));
+		final EPackage ePackage = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
+		r.getContents().add(ePackage);
+		r.save(null);
+		project.refreshLocal(1, new NullProgressMonitor());
+
+		final IBase base = new TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+
+		TestEObjectFileLocation container = new TestEObjectFileLocation();
+		container.setContainer(base);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, r);
+		container.setResource(r);
+		container.setFullPath("/test/test.xmi");
+
+		final IEObjectLocation location = new EObjectConnectorParametrizedTests.TestEObjectLocation();
+		location.setURIFragment(ePackage.eResource().getURIFragment(ePackage));
+		container.getContents().add(location);
+		location.setContainer(container);
+
+		IMarker marker = (IMarker)Platform.getAdapterManager().getAdapter(location, IMarker.class);
+
+		assertNotNull(marker);
+		assertEquals(IEObjectLocationMaker.EOBJECT_LOCATION_ID, marker.getType());
+		assertEquals("/test/test.xmi", marker.getResource().getFullPath().toString());
+		assertEquals("platform:/resource/test/test.xmi#/", marker.getAttribute(
+				IEObjectLocationMaker.URI_ATTRIBUTE));
+
+		project.delete(true, true, new NullProgressMonitor());
+	}
+
+	/**
+	 * Creates an {@link IProject}.
+	 * 
+	 * @return the created {@link IProject}
+	 * @throws CoreException
+	 */
+	private IProject createProject() throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/MarkerToEObjectLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/MarkerToEObjectLocationTests.java
new file mode 100644
index 0000000..b79815d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/adapter/MarkerToEObjectLocationTests.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.adapter;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.emf.ide.adapter.MarkerToEObjectLocationDescriptor;
+import org.eclipse.intent.mapping.emf.ide.marker.IEObjectLocationMaker;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.adapter.MarkerToLocationDescriptorAdapterFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link MarkerToEObjectLocationDescriptor}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MarkerToEObjectLocationTests {
+
+	/**
+	 * Makes sure org.eclipse.intent.mapping.ide is activated.
+	 */
+	private static final MarkerToLocationDescriptorAdapterFactory FACTORY = new MarkerToLocationDescriptorAdapterFactory();
+
+	/**
+	 * Makes sure org.eclipse.intent.mapping.emf.ide is activated.
+	 */
+	private static final MarkerToEObjectLocationDescriptor ADAPTER = new MarkerToEObjectLocationDescriptor();
+
+	@Test
+	@Ignore
+	// TODO fix this test
+	public void getAdapter() throws CoreException, IOException {
+		final IProject project = createProject();
+		final ResourceSet rs = new ResourceSetImpl();
+		final org.eclipse.emf.ecore.resource.Resource r = rs.createResource(URI.createPlatformResourceURI(
+				"/test/test.xmi", true));
+		final EPackage ePackage = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
+		ePackage.setName("testPackage");
+		r.getContents().add(ePackage);
+		r.save(null);
+		project.refreshLocal(1, new NullProgressMonitor());
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/test/test.xmi"));
+		final IMarker marker = file.createMarker(EValidator.MARKER);
+		marker.setAttribute(IEObjectLocationMaker.URI_ATTRIBUTE, EcoreUtil.getURI(ePackage).toString());
+
+		final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		MappingUtils.getMappingRegistry().register(base);
+		IdeMappingUtils.setCurrentBase(base);
+
+		ILocationDescriptor locationDescriptor = (ILocationDescriptor)Platform.getAdapterManager().getAdapter(
+				marker, ILocationDescriptor.class);
+
+		assertNotNull(locationDescriptor);
+		assertTrue(locationDescriptor.getElement() instanceof EPackage);
+		assertEquals("testPackage", ((EPackage)locationDescriptor.getElement()).getName());
+		assertTrue(locationDescriptor.getContainerDescriptor().getElement() instanceof IFile);
+		final IFile container = (IFile)locationDescriptor.getContainerDescriptor().getElement();
+		assertEquals("/test/test.xmi", container.getFullPath().toString());
+
+		project.delete(true, true, new NullProgressMonitor());
+	}
+
+	/**
+	 * Creates an {@link IProject}.
+	 * 
+	 * @return the created {@link IProject}
+	 * @throws CoreException
+	 */
+	private IProject createProject() throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectContainerProviderTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectContainerProviderTests.java
new file mode 100644
index 0000000..5e1897b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectContainerProviderTests.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.emf.ide.connector.EObjectContainerProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link EObjectContainerProvider}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectContainerProviderTests {
+
+	@Test
+	public void getContainerNull() {
+		final EObjectContainerProvider provider = new EObjectContainerProvider();
+
+		final Object result = provider.getContainer(null);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerObject() {
+		final EObjectContainerProvider provider = new EObjectContainerProvider();
+
+		final Object element = new Object();
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerEObjectNoResource() {
+		final EObjectContainerProvider provider = new EObjectContainerProvider();
+
+		final EObject element = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerEObject() throws IOException, CoreException {
+		final EObjectContainerProvider provider = new EObjectContainerProvider();
+
+		final EObject element = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(
+				EObjectContainerProviderTests.class.getCanonicalName());
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		final IFile file = project.getFile(new Path("test.xmi"));
+
+		final Resource resource = new XMIResourceImpl(URI.createPlatformResourceURI(file.getFullPath()
+				.toString(), true));
+		resource.getContents().add(element);
+		resource.save(null);
+		final Object result = provider.getContainer(element);
+
+		assertEquals(file, result);
+	}
+
+	@Test
+	public void isRegistered() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final IContainerProvider provider = MappingUtils.getContainerProviderFactory().createProvider(
+				EObjectContainerProvider.class.getCanonicalName());
+		assertTrue(provider instanceof EObjectContainerProvider);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectFileConnectorDelegateTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectFileConnectorDelegateTests.java
new file mode 100644
index 0000000..3803f69
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/EObjectFileConnectorDelegateTests.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.ide.connector.EObjectFileConnectorDelegate;
+import org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.tests.connector.ResourceConnectorTests.TestResourceLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestCouple;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link EObjectFileConnectorDelegate}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectFileConnectorDelegateTests {
+
+	/**
+	 * Test {@link IEObjectFileLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestEObjectFileLocation extends TestResourceLocation implements IEObjectFileLocation {
+
+		/**
+		 * The XMI content.
+		 */
+		private String xmiContent;
+
+		/**
+		 * The {@link Resource}.
+		 */
+		private Resource resource;
+
+		/**
+		 * The {@link List} of saved {@link URI} fragments.
+		 */
+		private List<ICouple> savedURIFragments = new ArrayList<ICouple>();
+
+		public void setResource(Resource resource) {
+			this.resource = resource;
+		}
+
+		public Resource getResrouce() {
+			return resource;
+		}
+
+		public String getXMIContent() {
+			return xmiContent;
+		}
+
+		public void setXMIContent(String content) {
+			this.xmiContent = content;
+		}
+
+		public List<ICouple> getSavedURIFragments() {
+			return savedURIFragments;
+		}
+
+	}
+
+	/**
+	 * The {@link EObjectFileConnectorDelegate} to test.
+	 */
+	private final EObjectFileConnectorDelegate delegate = new EObjectFileConnectorDelegate();
+
+	@BeforeClass
+	public static void beforeClass() throws CoreException, IOException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.create(monitor);
+		project.open(monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.create(true, true, monitor);
+
+		final Resource resource = new XMIResourceImpl(URI.createPlatformResourceURI(
+				"TestProject/TestFolder/TestFile.xmi", true));
+		resource.getContents().add(EcorePackage.eINSTANCE.getEcoreFactory().createEClass());
+		resource.getContents().add(EcorePackage.eINSTANCE.getEcoreFactory().createEClass());
+		resource.getContents().add(EcorePackage.eINSTANCE.getEcoreFactory().createEClass());
+		resource.save(null);
+	}
+
+	@AfterClass
+	public static void afterClass() throws CoreException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.delete(true, monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.delete(true, monitor);
+
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.xmi"));
+		file.delete(true, monitor);
+	}
+
+	@Test
+	public void getContentType() {
+		final IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+		final IContentType contentType = contentTypeManager.getContentType("org.eclipse.emf.ecore.xmi");
+		final IFileType expected = MappingUtils.getFileTypeRegistry().getFileType(contentType.getId());
+
+		assertEquals(expected, delegate.getFileType());
+	}
+
+	@Test
+	public void getFileLocationType() {
+		assertEquals(IEObjectFileLocation.class, delegate.getFileLocationType());
+	}
+
+	@Test
+	public void initLocation() {
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.xmi"));
+		final IBase base = new TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		TestEObjectFileLocation location = new TestEObjectFileLocation();
+		location.setContainer(base);
+
+		delegate.initLocation(location.getContainer(), location, file);
+
+		assertEquals(180, location.getXMIContent().length());
+	}
+
+	@Test
+	public void registred() {
+		boolean registred = false;
+		for (IFileConnectorDelegate d : IdeMappingUtils.getFileConectorDelegateRegistry()
+				.getConnectorDelegates()) {
+			if (d instanceof EObjectFileConnectorDelegate) {
+				registred = true;
+				break;
+			}
+		}
+		assertTrue(registred);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOContainerProviderTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOContainerProviderTests.java
new file mode 100644
index 0000000..44ca358
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOContainerProviderTests.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.emf.connector.CDOContainerProvider;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOContainerProviderTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link CDOContainerProvider} in Ide environment.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeCDOContainerProviderTests extends CDOContainerProviderTests {
+
+	@Test
+	public void isRegistered() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final IContainerProvider provider = MappingUtils.getContainerProviderFactory().createProvider(
+				CDOContainerProvider.class.getCanonicalName());
+		assertTrue(provider instanceof CDOContainerProvider);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOResourceNodeConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOResourceNodeConnectorTests.java
new file mode 100644
index 0000000..2745519
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOResourceNodeConnectorTests.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.emf.ICDOResourceNodeLocation;
+import org.eclipse.intent.mapping.emf.connector.CDOResourceNodeConnector;
+import org.eclipse.intent.mapping.emf.ide.connector.IdeCDOResourceNodeConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link IdeCDOResourceNodeConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeCDOResourceNodeConnectorTests extends CDOResourceNodeConnectorTests {
+
+	@BeforeClass
+	public static void beforeClass() throws Exception {
+		CDOResourceNodeConnectorTests.beforeClass();
+	}
+
+	@AfterClass
+	public static void afterClass() throws Exception {
+		CDOResourceNodeConnectorTests.afterClass();
+	}
+
+	@Test
+	public void isRegistred() {
+		assertTrue(MappingUtils.getConnectorRegistry().getConnector(
+				ICDOResourceNodeLocation.class) instanceof CDOResourceNodeConnector);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOViewConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOViewConnectorTests.java
new file mode 100644
index 0000000..1970c60
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeCDOViewConnectorTests.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.connector.CDOViewConnector;
+import org.eclipse.intent.mapping.emf.ide.connector.IdeCDOViewConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOViewConnectorTests;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link IdeCDOViewConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeCDOViewConnectorTests extends CDOViewConnectorTests {
+
+	@BeforeClass
+	public static void beforeClass() {
+		CDOViewConnectorTests.beforeClass();
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		CDOViewConnectorTests.afterClass();
+	}
+
+	@Test
+	public void isRegistred() {
+		assertTrue(MappingUtils.getConnectorRegistry().getConnector(
+				ICDORepositoryLocation.class) instanceof CDOViewConnector);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorCDOTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorCDOTests.java
new file mode 100644
index 0000000..fa7a93b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorCDOTests.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.emf.ide.connector.IdeEObjectConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorCDOTests;
+
+/**
+ * Tests {@link IdeEObjectConnector} with CDO.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeEObjectConnectorCDOTests extends EObjectConnectorCDOTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedCDOTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedCDOTests.java
new file mode 100644
index 0000000..4eed57c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedCDOTests.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedCDOTests;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.emf.ide.connector.IdeEObjectConnector IdeEObjectConnector} with
+ * CDO.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeEObjectConnectorParametrizedCDOTests extends EObjectConnectorParametrizedCDOTests {
+
+	public IdeEObjectConnectorParametrizedCDOTests(Object[] original, Object[] altered) {
+		super(original, altered);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedTests.java
new file mode 100644
index 0000000..807fc78
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorParametrizedTests.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.emf.ide.connector.IdeEObjectConnector IdeEObjectConnector}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeEObjectConnectorParametrizedTests extends EObjectConnectorParametrizedTests {
+
+	public IdeEObjectConnectorParametrizedTests(Object[] original, Object[] altered) {
+		super(original, altered);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorTests.java
new file mode 100644
index 0000000..e6164fb
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/connector/IdeEObjectConnectorTests.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.ide.connector.IdeEObjectConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link IdeEObjectConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeEObjectConnectorTests extends EObjectConnectorTests {
+
+	@Test
+	public void isRegistred() {
+		assertTrue(MappingUtils.getConnectorRegistry().getConnector(
+				IEObjectLocation.class) instanceof IdeEObjectConnector);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/AbstractEObjectFileLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/AbstractEObjectFileLocationTests.java
new file mode 100644
index 0000000..fbb55c5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/AbstractEObjectFileLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.resource;
+
+import org.eclipse.intent.mapping.emf.ide.resource.IEObjectFileLocation;
+import org.eclipse.intent.mapping.ide.tests.resource.AbstractResourceLocationTests;
+
+/**
+ * Tests for {@link IEObjectFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractEObjectFileLocationTests extends AbstractResourceLocationTests {
+
+	protected IEObjectFileLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(IEObjectFileLocation.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFEObjectFileLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFEObjectFileLocationTests.java
new file mode 100644
index 0000000..55fa6b0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFEObjectFileLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.resource;
+
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.ide.EObjectFileLocation EObjectFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFEObjectFileLocationTests extends AbstractEObjectFileLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFResourceLocationTests.java
new file mode 100644
index 0000000..78b7a5c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFResourceLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.resource;
+
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.ide.tests.resource.AbstractResourceLocationTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.ide.ResourceLocation ResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFResourceLocationTests extends AbstractResourceLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFTextFileLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFTextFileLocationTests.java
new file mode 100644
index 0000000..cdaf107
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.ide.tests/src/org/eclipse/intent/mapping/emf/ide/tests/resource/EMFTextFileLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.ide.tests.resource;
+
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.ide.tests.resource.AbstractTextFileLocationTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.ide.TextFileLocation TextFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFTextFileLocationTests extends AbstractTextFileLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/.checkstyle b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.checkstyle
new file mode 100644
index 0000000..d1b4112
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter Tests" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6ConfigurationTests.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter Tests" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src-gen"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/.classpath b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.classpath
new file mode 100644
index 0000000..756f428
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/.project b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.project
new file mode 100644
index 0000000..d8cf9d9
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.emf.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.core.prefs b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.ui.prefs b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..feaf373
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=anydsl;com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/META-INF/MANIFEST.MF b/mapping/tests/org.eclipse.intent.mapping.emf.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c99ba2a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.intent.mapping.emf.tests;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.intent.mapping.emf;bundle-version="0.10.0";visibility:=reexport,
+ org.eclipse.intent.mapping.tests;bundle-version="0.10.0",
+ org.junit;bundle-version="4.0.0",
+ org.eclipse.intent.mapping,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.cdo.server,
+ org.eclipse.net4j,
+ org.eclipse.net4j.tcp,
+ org.eclipse.emf.cdo.server.net4j,
+ org.eclipse.emf.cdo.net4j
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.intent.mapping.emf.tests,
+ org.eclipse.intent.mapping.emf.tests.base,
+ org.eclipse.intent.mapping.emf.tests.connector,
+ anydsl,
+ anydsl.impl,
+ anydsl.util
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/build.properties b/mapping/tests/org.eclipse.intent.mapping.emf.tests/build.properties
new file mode 100644
index 0000000..7f0c2ff
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.ecore b/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.ecore
new file mode 100644
index 0000000..ad60384
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.ecore
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="anydsl" nsURI="http://www.eclipse.org/acceleo/anydsl" nsPrefix="anydsl">
+  <eClassifiers xsi:type="ecore:EClass" name="World">
+    <eAnnotations source="http://www.obeo.fr/dsl/dnc/archetype">
+      <details key="archetype" value="MomentInterval"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="companies" upperBound="-1"
+        eType="#//Company" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sources" upperBound="-1"
+        eType="#//Source" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MultiNamedElement" abstract="true" interface="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" upperBound="-1" eType="#//SingleString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//SingleString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Producer" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="company" eType="#//Company"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" eOpposite="#//Food/producers"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Adress">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" eType="#//CountryData"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Company" abstract="true" interface="true"
+      eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="world" eType="#//World"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ProductionCompany" eSuperTypes="#//Company">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="producers" upperBound="-1"
+        eType="#//Producer" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Restaurant" eSuperTypes="#//Company">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="chefs" upperBound="-1"
+        eType="#//Chef" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="menu" upperBound="-1" eType="#//EStringToRecipeMap"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Chef" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recipes" upperBound="-1"
+        eType="#//Recipe" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Recipe" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ingredients" upperBound="-1"
+        eType="#//Food"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Food" eSuperTypes="#//NamedElement">
+    <eOperations name="ripen" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="color" eType="#//Color"/>
+    </eOperations>
+    <eOperations name="preferredColor" eType="#//Color"/>
+    <eOperations name="newFood" eType="#//Food"/>
+    <eOperations name="setColor">
+      <eParameters name="food" eType="#//Food"/>
+      <eParameters name="newColor" eType="#//Color"/>
+    </eOperations>
+    <eOperations name="setCaliber">
+      <eParameters name="food" eType="#//Food"/>
+      <eParameters name="newCaliber" upperBound="-1" eType="#//Caliber"/>
+    </eOperations>
+    <eOperations name="acceptedCaliber" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="caliber" eType="#//Caliber"/>
+    </eOperations>
+    <eOperations name="label">
+      <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eOperations name="preferredLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="color" upperBound="-1"
+        eType="#//Color"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="caliber" eType="#//Caliber"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedFoods" upperBound="-1"
+        eType="#//Food"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" eType="#//Group"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Source"
+        eOpposite="#//Source/foods"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="producers" upperBound="-1"
+        eType="#//Producer" eOpposite="#//Producer/foods"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Source" abstract="true" interface="true"
+      eSuperTypes="#//MultiNamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" eOpposite="#//Food/source"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="origin" upperBound="-1"
+        eType="#//CountryData"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Plant" eSuperTypes="#//Source">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//Kind"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Animal" eSuperTypes="#//Source">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="part" upperBound="-1" eType="#//Part"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Color">
+    <eLiterals name="black"/>
+    <eLiterals name="red" value="1"/>
+    <eLiterals name="green" value="2"/>
+    <eLiterals name="yellow" value="3"/>
+    <eLiterals name="orange" value="4"/>
+    <eLiterals name="brown" value="5"/>
+    <eLiterals name="pink" value="6"/>
+    <eLiterals name="palPink" value="7" literal="palPink"/>
+    <eLiterals name="veryYellow" value="8"/>
+    <eLiterals name="white" value="9"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Caliber">
+    <eLiterals name="S"/>
+    <eLiterals name="M" value="1"/>
+    <eLiterals name="L" value="2"/>
+    <eLiterals name="XL" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Group">
+    <eLiterals name="Water"/>
+    <eLiterals name="Dairy" value="1"/>
+    <eLiterals name="Fruit" value="2"/>
+    <eLiterals name="Grain" value="3"/>
+    <eLiterals name="Protein" value="4"/>
+    <eLiterals name="Sweet" value="5"/>
+    <eLiterals name="Vegetable" value="6"/>
+    <eLiterals name="Alcohol" value="7"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Continent">
+    <eLiterals name="Europe"/>
+    <eLiterals name="Asia" value="1"/>
+    <eLiterals name="Africa" value="2"/>
+    <eLiterals name="America" value="3"/>
+    <eLiterals name="Australia" value="4"/>
+    <eLiterals name="Antarctica" value="5"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Kind">
+    <eLiterals name="Other"/>
+    <eLiterals name="Seed" value="1"/>
+    <eLiterals name="Oilseed" value="2"/>
+    <eLiterals name="Tree" value="3"/>
+    <eLiterals name="Root" value="4"/>
+    <eLiterals name="Bulb" value="5"/>
+    <eLiterals name="Leaf" value="6"/>
+    <eLiterals name="Stem" value="7"/>
+    <eLiterals name="Flower" value="8"/>
+    <eLiterals name="Inflorescence" value="9"/>
+    <eLiterals name="Spice" value="10"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Part">
+    <eLiterals name="Other"/>
+    <eLiterals name="Muscle" value="1"/>
+    <eLiterals name="Organ" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="CountryData" instanceClassName="anydsl.Country"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="SingleString" instanceClassName="java.lang.String"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EStringToRecipeMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Recipe"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.genmodel b/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.genmodel
new file mode 100644
index 0000000..5739b99
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/model/anydsl.genmodel
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.intent.mapping.emf.tests/src-gen"
+    editDirectory="/org.eclipse.intent.mapping.emf.tests.edit/src-gen"
+    editorDirectory="/org.eclipse.intent.mapping.emf.tests.editor/src-gen"
+    modelPluginID="org.eclipse.intent.mapping.emf.tests" modelName="Anydsl"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" testsDirectory="/org.eclipse.intent.mapping.emf.tests.tests/src-gen"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>anydsl.ecore</foreignModel>
+  <genPackages prefix="Anydsl" disposableProviderFactory="true" ecorePackage="anydsl.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Color">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/black"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/red"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/green"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/yellow"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/orange"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/brown"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/pink"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/palPink"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/veryYellow"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Color/white"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Caliber">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Caliber/S"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Caliber/M"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Caliber/L"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Caliber/XL"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Group">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Water"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Dairy"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Fruit"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Grain"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Protein"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Sweet"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Vegetable"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Group/Alcohol"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Continent">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/Europe"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/Asia"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/Africa"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/America"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/Australia"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Continent/Antarctica"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Kind">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Other"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Seed"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Oilseed"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Tree"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Root"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Bulb"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Leaf"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Stem"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Flower"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Inflorescence"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Kind/Spice"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="anydsl.ecore#//Part">
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Part/Other"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Part/Muscle"/>
+      <genEnumLiterals ecoreEnumLiteral="anydsl.ecore#//Part/Organ"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="anydsl.ecore#//CountryData"/>
+    <genDataTypes ecoreDataType="anydsl.ecore#//SingleString"/>
+    <genClasses ecoreClass="anydsl.ecore#//World">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//World/companies"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//World/foods"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//World/sources"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="anydsl.ecore#//MultiNamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//MultiNamedElement/name"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="anydsl.ecore#//NamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//NamedElement/name"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Producer">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Producer/adress"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Producer/company"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Producer/foods"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Adress">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Adress/zipCode"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Adress/city"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Adress/country"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="anydsl.ecore#//Company">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Company/adress"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Company/world"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//ProductionCompany">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//ProductionCompany/producers"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Restaurant">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Restaurant/chefs"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Restaurant/menu"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Chef">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Chef/adress"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference anydsl.ecore#//Chef/recipes"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Recipe">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Recipe/ingredients"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Food">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Food/color"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Food/caliber"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Food/relatedFoods"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Food/group"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Food/label.1"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Food/source"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Food/producers"/>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/ripen">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/ripen/color"/>
+      </genOperations>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/preferredColor"/>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/newFood"/>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/setColor">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/setColor/food"/>
+        <genParameters ecoreParameter="anydsl.ecore#//Food/setColor/newColor"/>
+      </genOperations>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/setCaliber">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/setCaliber/food"/>
+        <genParameters ecoreParameter="anydsl.ecore#//Food/setCaliber/newCaliber"/>
+      </genOperations>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/acceptedCaliber">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/acceptedCaliber/caliber"/>
+      </genOperations>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/label">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/label/text"/>
+      </genOperations>
+      <genOperations ecoreOperation="anydsl.ecore#//Food/preferredLabel">
+        <genParameters ecoreParameter="anydsl.ecore#//Food/preferredLabel/text"/>
+      </genOperations>
+    </genClasses>
+    <genClasses image="false" ecoreClass="anydsl.ecore#//Source">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Source/foods"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Source/origin"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Plant">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Plant/kind"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//Animal">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//Animal/part"/>
+    </genClasses>
+    <genClasses ecoreClass="anydsl.ecore#//EStringToRecipeMap">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute anydsl.ecore#//EStringToRecipeMap/key"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//EStringToRecipeMap/value"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/org.eclipse.intent.mapping.emf.tests.launch b/mapping/tests/org.eclipse.intent.mapping.emf.tests/org.eclipse.intent.mapping.emf.tests.launch
new file mode 100644
index 0000000..3687611
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/org.eclipse.intent.mapping.emf.tests.launch
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="com.mountainminds.eclemma.core.SCOPE_IDS">
+<listEntry value="=org.eclipse.intent.mapping.emf/src"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/mylyn/docs/intent/mapping/emf/tests/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="com.mountainminds.eclemma.ui.launchGroup.coverage"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.intent.mapping.emf.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.intent.mapping.emf.tests"/>
+</launchConfiguration>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.properties b/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.properties
new file mode 100644
index 0000000..eb89588
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.properties
@@ -0,0 +1,13 @@
+#  Copyright (c) 2015 Obeo.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  Contributors:
+#     Obeo - initial API and implementation and/or initial documentation
+#     ...
+# 
+
+pluginName = EMF Mapping Test Model
+providerName = Obeo
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.xml b/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.xml
new file mode 100644
index 0000000..360acd7
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated anydsl -->
+      <package
+            uri="http://www.eclipse.org/acceleo/anydsl"
+            class="anydsl.AnydslPackage"
+            genModel="model/anydsl.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/pom.xml b/mapping/tests/org.eclipse.intent.mapping.emf.tests/pom.xml
new file mode 100644
index 0000000..ec43a5e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.emf.tests</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <name>Mapping EMF Tests</name>
+
+  <packaging>eclipse-test-plugin</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-surefire-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <includes>
+            <include>**/AllTests.class</include>
+          </includes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Adress.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Adress.java
new file mode 100644
index 0000000..bd1e853
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Adress.java
@@ -0,0 +1,105 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Adress</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Adress#getZipCode <em>Zip Code</em>}</li>
+ * <li>{@link anydsl.Adress#getCity <em>City</em>}</li>
+ * <li>{@link anydsl.Adress#getCountry <em>Country</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getAdress()
+ * @model
+ * @generated
+ */
+public interface Adress extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Zip Code</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Zip Code</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Zip Code</em>' attribute.
+	 * @see #setZipCode(String)
+	 * @see anydsl.AnydslPackage#getAdress_ZipCode()
+	 * @model
+	 * @generated
+	 */
+	String getZipCode();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Adress#getZipCode <em>Zip Code</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Zip Code</em>' attribute.
+	 * @see #getZipCode()
+	 * @generated
+	 */
+	void setZipCode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>City</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>City</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>City</em>' attribute.
+	 * @see #setCity(String)
+	 * @see anydsl.AnydslPackage#getAdress_City()
+	 * @model
+	 * @generated
+	 */
+	String getCity();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Adress#getCity <em>City</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>City</em>' attribute.
+	 * @see #getCity()
+	 * @generated
+	 */
+	void setCity(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Country</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Country</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Country</em>' attribute.
+	 * @see #setCountry(anydsl.Country)
+	 * @see anydsl.AnydslPackage#getAdress_Country()
+	 * @model dataType="anydsl.CountryData"
+	 * @generated
+	 */
+	anydsl.Country getCountry();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Adress#getCountry <em>Country</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Country</em>' attribute.
+	 * @see #getCountry()
+	 * @generated
+	 */
+	void setCountry(anydsl.Country value);
+
+} // Adress
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Animal.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Animal.java
new file mode 100644
index 0000000..48c0754
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Animal.java
@@ -0,0 +1,39 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Animal</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Animal#getPart <em>Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getAnimal()
+ * @model
+ * @generated
+ */
+public interface Animal extends Source {
+	/**
+	 * Returns the value of the '<em><b>Part</b></em>' attribute list. The list contents are of type
+	 * {@link anydsl.Part}. The literals are from the enumeration {@link anydsl.Part}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Part</em>' attribute list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Part</em>' attribute list.
+	 * @see anydsl.Part
+	 * @see anydsl.AnydslPackage#getAnimal_Part()
+	 * @model
+	 * @generated
+	 */
+	EList<Part> getPart();
+
+} // Animal
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslFactory.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslFactory.java
new file mode 100644
index 0000000..da14594
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslFactory.java
@@ -0,0 +1,111 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a create method for each non-abstract
+ * class of the model. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage
+ * @generated
+ */
+public interface AnydslFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	AnydslFactory eINSTANCE = anydsl.impl.AnydslFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>World</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>World</em>'.
+	 * @generated
+	 */
+	World createWorld();
+
+	/**
+	 * Returns a new object of class '<em>Producer</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Producer</em>'.
+	 * @generated
+	 */
+	Producer createProducer();
+
+	/**
+	 * Returns a new object of class '<em>Adress</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Adress</em>'.
+	 * @generated
+	 */
+	Adress createAdress();
+
+	/**
+	 * Returns a new object of class '<em>Production Company</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return a new object of class '<em>Production Company</em>'.
+	 * @generated
+	 */
+	ProductionCompany createProductionCompany();
+
+	/**
+	 * Returns a new object of class '<em>Restaurant</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Restaurant</em>'.
+	 * @generated
+	 */
+	Restaurant createRestaurant();
+
+	/**
+	 * Returns a new object of class '<em>Chef</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Chef</em>'.
+	 * @generated
+	 */
+	Chef createChef();
+
+	/**
+	 * Returns a new object of class '<em>Recipe</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Recipe</em>'.
+	 * @generated
+	 */
+	Recipe createRecipe();
+
+	/**
+	 * Returns a new object of class '<em>Food</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Food</em>'.
+	 * @generated
+	 */
+	Food createFood();
+
+	/**
+	 * Returns a new object of class '<em>Plant</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Plant</em>'.
+	 * @generated
+	 */
+	Plant createPlant();
+
+	/**
+	 * Returns a new object of class '<em>Animal</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Animal</em>'.
+	 * @generated
+	 */
+	Animal createAnimal();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	AnydslPackage getAnydslPackage();
+
+} // AnydslFactory
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslPackage.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslPackage.java
new file mode 100644
index 0000000..e41ddea
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/AnydslPackage.java
@@ -0,0 +1,2291 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains accessors for the meta objects to
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface AnydslPackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "anydsl";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/acceleo/anydsl";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "anydsl";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	AnydslPackage eINSTANCE = anydsl.impl.AnydslPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.WorldImpl <em>World</em>}' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.WorldImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getWorld()
+	 * @generated
+	 */
+	int WORLD = 0;
+
+	/**
+	 * The feature id for the '<em><b>Companies</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int WORLD__COMPANIES = 0;
+
+	/**
+	 * The feature id for the '<em><b>Foods</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int WORLD__FOODS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Sources</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int WORLD__SOURCES = 2;
+
+	/**
+	 * The number of structural features of the '<em>World</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int WORLD_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>World</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int WORLD_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.MultiNamedElement <em>Multi Named Element</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.MultiNamedElement
+	 * @see anydsl.impl.AnydslPackageImpl#getMultiNamedElement()
+	 * @generated
+	 */
+	int MULTI_NAMED_ELEMENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute list. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_NAMED_ELEMENT__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Multi Named Element</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_NAMED_ELEMENT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Multi Named Element</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.NamedElement <em>Named Element</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.NamedElement
+	 * @see anydsl.impl.AnydslPackageImpl#getNamedElement()
+	 * @generated
+	 */
+	int NAMED_ELEMENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Named Element</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Named Element</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.ProducerImpl <em>Producer</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.ProducerImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getProducer()
+	 * @generated
+	 */
+	int PRODUCER = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER__ADRESS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Company</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER__COMPANY = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Foods</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER__FOODS = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Producer</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Producer</em>' class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCER_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.AdressImpl <em>Adress</em>}' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.AdressImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getAdress()
+	 * @generated
+	 */
+	int ADRESS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Zip Code</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADRESS__ZIP_CODE = 0;
+
+	/**
+	 * The feature id for the '<em><b>City</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADRESS__CITY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Country</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADRESS__COUNTRY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Adress</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADRESS_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Adress</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADRESS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Company <em>Company</em>}' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.Company
+	 * @see anydsl.impl.AnydslPackageImpl#getCompany()
+	 * @generated
+	 */
+	int COMPANY = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMPANY__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMPANY__ADRESS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>World</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMPANY__WORLD = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Company</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMPANY_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Company</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMPANY_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.ProductionCompanyImpl <em>Production Company</em>}'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.ProductionCompanyImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getProductionCompany()
+	 * @generated
+	 */
+	int PRODUCTION_COMPANY = 6;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY__NAME = COMPANY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY__ADRESS = COMPANY__ADRESS;
+
+	/**
+	 * The feature id for the '<em><b>World</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY__WORLD = COMPANY__WORLD;
+
+	/**
+	 * The feature id for the '<em><b>Producers</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY__PRODUCERS = COMPANY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Production Company</em>' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY_FEATURE_COUNT = COMPANY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Production Company</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRODUCTION_COMPANY_OPERATION_COUNT = COMPANY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.RestaurantImpl <em>Restaurant</em>}' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.RestaurantImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getRestaurant()
+	 * @generated
+	 */
+	int RESTAURANT = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT__NAME = COMPANY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT__ADRESS = COMPANY__ADRESS;
+
+	/**
+	 * The feature id for the '<em><b>World</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT__WORLD = COMPANY__WORLD;
+
+	/**
+	 * The feature id for the '<em><b>Chefs</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT__CHEFS = COMPANY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Menu</b></em>' map. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT__MENU = COMPANY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Restaurant</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT_FEATURE_COUNT = COMPANY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Restaurant</em>' class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RESTAURANT_OPERATION_COUNT = COMPANY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.ChefImpl <em>Chef</em>}' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.ChefImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getChef()
+	 * @generated
+	 */
+	int CHEF = 8;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CHEF__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CHEF__ADRESS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Recipes</b></em>' containment reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CHEF__RECIPES = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Chef</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CHEF_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Chef</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int CHEF_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.RecipeImpl <em>Recipe</em>}' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.RecipeImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getRecipe()
+	 * @generated
+	 */
+	int RECIPE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RECIPE__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Ingredients</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RECIPE__INGREDIENTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Recipe</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RECIPE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Recipe</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RECIPE_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.FoodImpl <em>Food</em>}' class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.FoodImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getFood()
+	 * @generated
+	 */
+	int FOOD = 10;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Color</b></em>' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__COLOR = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Caliber</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__CALIBER = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Related Foods</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__RELATED_FOODS = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__GROUP = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__LABEL = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Producers</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD__PRODUCERS = NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Food</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Ripen</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___RIPEN__COLOR = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Preferred Color</em>' operation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___PREFERRED_COLOR = NAMED_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>New Food</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___NEW_FOOD = NAMED_ELEMENT_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Set Color</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___SET_COLOR__FOOD_COLOR = NAMED_ELEMENT_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Set Caliber</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___SET_CALIBER__FOOD_ELIST = NAMED_ELEMENT_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Accepted Caliber</em>' operation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___ACCEPTED_CALIBER__CALIBER = NAMED_ELEMENT_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Label</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___LABEL__STRING = NAMED_ELEMENT_OPERATION_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Preferred Label</em>' operation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD___PREFERRED_LABEL__STRING = NAMED_ELEMENT_OPERATION_COUNT + 7;
+
+	/**
+	 * The number of operations of the '<em>Food</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FOOD_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 8;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Source <em>Source</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Source
+	 * @see anydsl.impl.AnydslPackageImpl#getSource()
+	 * @generated
+	 */
+	int SOURCE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute list. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SOURCE__NAME = MULTI_NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Foods</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SOURCE__FOODS = MULTI_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Origin</b></em>' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SOURCE__ORIGIN = MULTI_NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Source</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SOURCE_FEATURE_COUNT = MULTI_NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Source</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SOURCE_OPERATION_COUNT = MULTI_NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.PlantImpl <em>Plant</em>}' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.PlantImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getPlant()
+	 * @generated
+	 */
+	int PLANT = 12;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute list. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT__NAME = SOURCE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Foods</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT__FOODS = SOURCE__FOODS;
+
+	/**
+	 * The feature id for the '<em><b>Origin</b></em>' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT__ORIGIN = SOURCE__ORIGIN;
+
+	/**
+	 * The feature id for the '<em><b>Kind</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT__KIND = SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Plant</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT_FEATURE_COUNT = SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Plant</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PLANT_OPERATION_COUNT = SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.AnimalImpl <em>Animal</em>}' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.AnimalImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getAnimal()
+	 * @generated
+	 */
+	int ANIMAL = 13;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute list. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL__NAME = SOURCE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Foods</b></em>' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL__FOODS = SOURCE__FOODS;
+
+	/**
+	 * The feature id for the '<em><b>Origin</b></em>' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL__ORIGIN = SOURCE__ORIGIN;
+
+	/**
+	 * The feature id for the '<em><b>Part</b></em>' attribute list. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL__PART = SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Animal</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL_FEATURE_COUNT = SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Animal</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ANIMAL_OPERATION_COUNT = SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.impl.EStringToRecipeMapImpl <em>EString To Recipe Map</em>}'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.impl.EStringToRecipeMapImpl
+	 * @see anydsl.impl.AnydslPackageImpl#getEStringToRecipeMap()
+	 * @generated
+	 */
+	int ESTRING_TO_RECIPE_MAP = 14;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ESTRING_TO_RECIPE_MAP__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ESTRING_TO_RECIPE_MAP__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>EString To Recipe Map</em>' class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ESTRING_TO_RECIPE_MAP_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>EString To Recipe Map</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ESTRING_TO_RECIPE_MAP_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Color <em>Color</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Color
+	 * @see anydsl.impl.AnydslPackageImpl#getColor()
+	 * @generated
+	 */
+	int COLOR = 15;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Caliber <em>Caliber</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Caliber
+	 * @see anydsl.impl.AnydslPackageImpl#getCaliber()
+	 * @generated
+	 */
+	int CALIBER = 16;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Group <em>Group</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Group
+	 * @see anydsl.impl.AnydslPackageImpl#getGroup()
+	 * @generated
+	 */
+	int GROUP = 17;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Continent <em>Continent</em>}' enum. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see anydsl.Continent
+	 * @see anydsl.impl.AnydslPackageImpl#getContinent()
+	 * @generated
+	 */
+	int CONTINENT = 18;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Kind <em>Kind</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Kind
+	 * @see anydsl.impl.AnydslPackageImpl#getKind()
+	 * @generated
+	 */
+	int KIND = 19;
+
+	/**
+	 * The meta object id for the '{@link anydsl.Part <em>Part</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see anydsl.Part
+	 * @see anydsl.impl.AnydslPackageImpl#getPart()
+	 * @generated
+	 */
+	int PART = 20;
+
+	/**
+	 * The meta object id for the '<em>Country Data</em>' data type. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @see anydsl.Country
+	 * @see anydsl.impl.AnydslPackageImpl#getCountryData()
+	 * @generated
+	 */
+	int COUNTRY_DATA = 21;
+
+	/**
+	 * The meta object id for the '<em>Single String</em>' data type. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see java.lang.String
+	 * @see anydsl.impl.AnydslPackageImpl#getSingleString()
+	 * @generated
+	 */
+	int SINGLE_STRING = 22;
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.World <em>World</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>World</em>'.
+	 * @see anydsl.World
+	 * @generated
+	 */
+	EClass getWorld();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link anydsl.World#getCompanies
+	 * <em>Companies</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Companies</em>'.
+	 * @see anydsl.World#getCompanies()
+	 * @see #getWorld()
+	 * @generated
+	 */
+	EReference getWorld_Companies();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link anydsl.World#getFoods
+	 * <em>Foods</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Foods</em>'.
+	 * @see anydsl.World#getFoods()
+	 * @see #getWorld()
+	 * @generated
+	 */
+	EReference getWorld_Foods();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link anydsl.World#getSources
+	 * <em>Sources</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Sources</em>'.
+	 * @see anydsl.World#getSources()
+	 * @see #getWorld()
+	 * @generated
+	 */
+	EReference getWorld_Sources();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.MultiNamedElement <em>Multi Named Element</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Multi Named Element</em>'.
+	 * @see anydsl.MultiNamedElement
+	 * @generated
+	 */
+	EClass getMultiNamedElement();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link anydsl.MultiNamedElement#getName <em>Name</em>}
+	 * '. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute list '<em>Name</em>'.
+	 * @see anydsl.MultiNamedElement#getName()
+	 * @see #getMultiNamedElement()
+	 * @generated
+	 */
+	EAttribute getMultiNamedElement_Name();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.NamedElement <em>Named Element</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Named Element</em>'.
+	 * @see anydsl.NamedElement
+	 * @generated
+	 */
+	EClass getNamedElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.NamedElement#getName <em>Name</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see anydsl.NamedElement#getName()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	EAttribute getNamedElement_Name();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Producer <em>Producer</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Producer</em>'.
+	 * @see anydsl.Producer
+	 * @generated
+	 */
+	EClass getProducer();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link anydsl.Producer#getAdress
+	 * <em>Adress</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference '<em>Adress</em>'.
+	 * @see anydsl.Producer#getAdress()
+	 * @see #getProducer()
+	 * @generated
+	 */
+	EReference getProducer_Adress();
+
+	/**
+	 * Returns the meta object for the reference '{@link anydsl.Producer#getCompany <em>Company</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>Company</em>'.
+	 * @see anydsl.Producer#getCompany()
+	 * @see #getProducer()
+	 * @generated
+	 */
+	EReference getProducer_Company();
+
+	/**
+	 * Returns the meta object for the reference list '{@link anydsl.Producer#getFoods <em>Foods</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Foods</em>'.
+	 * @see anydsl.Producer#getFoods()
+	 * @see #getProducer()
+	 * @generated
+	 */
+	EReference getProducer_Foods();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Adress <em>Adress</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Adress</em>'.
+	 * @see anydsl.Adress
+	 * @generated
+	 */
+	EClass getAdress();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Adress#getZipCode <em>Zip Code</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Zip Code</em>'.
+	 * @see anydsl.Adress#getZipCode()
+	 * @see #getAdress()
+	 * @generated
+	 */
+	EAttribute getAdress_ZipCode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Adress#getCity <em>City</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>City</em>'.
+	 * @see anydsl.Adress#getCity()
+	 * @see #getAdress()
+	 * @generated
+	 */
+	EAttribute getAdress_City();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Adress#getCountry <em>Country</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Country</em>'.
+	 * @see anydsl.Adress#getCountry()
+	 * @see #getAdress()
+	 * @generated
+	 */
+	EAttribute getAdress_Country();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Company <em>Company</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Company</em>'.
+	 * @see anydsl.Company
+	 * @generated
+	 */
+	EClass getCompany();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link anydsl.Company#getAdress <em>Adress</em>}
+	 * '. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference '<em>Adress</em>'.
+	 * @see anydsl.Company#getAdress()
+	 * @see #getCompany()
+	 * @generated
+	 */
+	EReference getCompany_Adress();
+
+	/**
+	 * Returns the meta object for the reference '{@link anydsl.Company#getWorld <em>World</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>World</em>'.
+	 * @see anydsl.Company#getWorld()
+	 * @see #getCompany()
+	 * @generated
+	 */
+	EReference getCompany_World();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.ProductionCompany <em>Production Company</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Production Company</em>'.
+	 * @see anydsl.ProductionCompany
+	 * @generated
+	 */
+	EClass getProductionCompany();
+
+	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link anydsl.ProductionCompany#getProducers <em>Producers</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Producers</em>'.
+	 * @see anydsl.ProductionCompany#getProducers()
+	 * @see #getProductionCompany()
+	 * @generated
+	 */
+	EReference getProductionCompany_Producers();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Restaurant <em>Restaurant</em>}'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Restaurant</em>'.
+	 * @see anydsl.Restaurant
+	 * @generated
+	 */
+	EClass getRestaurant();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link anydsl.Restaurant#getChefs
+	 * <em>Chefs</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Chefs</em>'.
+	 * @see anydsl.Restaurant#getChefs()
+	 * @see #getRestaurant()
+	 * @generated
+	 */
+	EReference getRestaurant_Chefs();
+
+	/**
+	 * Returns the meta object for the map '{@link anydsl.Restaurant#getMenu <em>Menu</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the map '<em>Menu</em>'.
+	 * @see anydsl.Restaurant#getMenu()
+	 * @see #getRestaurant()
+	 * @generated
+	 */
+	EReference getRestaurant_Menu();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Chef <em>Chef</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Chef</em>'.
+	 * @see anydsl.Chef
+	 * @generated
+	 */
+	EClass getChef();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link anydsl.Chef#getAdress <em>Adress</em>}'.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference '<em>Adress</em>'.
+	 * @see anydsl.Chef#getAdress()
+	 * @see #getChef()
+	 * @generated
+	 */
+	EReference getChef_Adress();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link anydsl.Chef#getRecipes
+	 * <em>Recipes</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '<em>Recipes</em>'.
+	 * @see anydsl.Chef#getRecipes()
+	 * @see #getChef()
+	 * @generated
+	 */
+	EReference getChef_Recipes();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Recipe <em>Recipe</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Recipe</em>'.
+	 * @see anydsl.Recipe
+	 * @generated
+	 */
+	EClass getRecipe();
+
+	/**
+	 * Returns the meta object for the reference list '{@link anydsl.Recipe#getIngredients
+	 * <em>Ingredients</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Ingredients</em>'.
+	 * @see anydsl.Recipe#getIngredients()
+	 * @see #getRecipe()
+	 * @generated
+	 */
+	EReference getRecipe_Ingredients();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Food <em>Food</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Food</em>'.
+	 * @see anydsl.Food
+	 * @generated
+	 */
+	EClass getFood();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link anydsl.Food#getColor <em>Color</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute list '<em>Color</em>'.
+	 * @see anydsl.Food#getColor()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EAttribute getFood_Color();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Food#getCaliber <em>Caliber</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Caliber</em>'.
+	 * @see anydsl.Food#getCaliber()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EAttribute getFood_Caliber();
+
+	/**
+	 * Returns the meta object for the reference list '{@link anydsl.Food#getRelatedFoods <em>Related
+	 * Foods</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Related Foods</em>'.
+	 * @see anydsl.Food#getRelatedFoods()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EReference getFood_RelatedFoods();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Food#getGroup <em>Group</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Group</em>'.
+	 * @see anydsl.Food#getGroup()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EAttribute getFood_Group();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Food#getLabel <em>Label</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Label</em>'.
+	 * @see anydsl.Food#getLabel()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EAttribute getFood_Label();
+
+	/**
+	 * Returns the meta object for the reference '{@link anydsl.Food#getSource <em>Source</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>Source</em>'.
+	 * @see anydsl.Food#getSource()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EReference getFood_Source();
+
+	/**
+	 * Returns the meta object for the reference list '{@link anydsl.Food#getProducers <em>Producers</em>}'.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Producers</em>'.
+	 * @see anydsl.Food#getProducers()
+	 * @see #getFood()
+	 * @generated
+	 */
+	EReference getFood_Producers();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#ripen(anydsl.Color) <em>Ripen</em>}' operation.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Ripen</em>' operation.
+	 * @see anydsl.Food#ripen(anydsl.Color)
+	 * @generated
+	 */
+	EOperation getFood__Ripen__Color();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#preferredColor() <em>Preferred Color</em>}'
+	 * operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Preferred Color</em>' operation.
+	 * @see anydsl.Food#preferredColor()
+	 * @generated
+	 */
+	EOperation getFood__PreferredColor();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#newFood() <em>New Food</em>}' operation. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>New Food</em>' operation.
+	 * @see anydsl.Food#newFood()
+	 * @generated
+	 */
+	EOperation getFood__NewFood();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#setColor(anydsl.Food, anydsl.Color) <em>Set
+	 * Color</em>}' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Set Color</em>' operation.
+	 * @see anydsl.Food#setColor(anydsl.Food, anydsl.Color)
+	 * @generated
+	 */
+	EOperation getFood__SetColor__Food_Color();
+
+	/**
+	 * Returns the meta object for the '
+	 * {@link anydsl.Food#setCaliber(anydsl.Food, org.eclipse.emf.common.util.EList) <em>Set Caliber</em>}'
+	 * operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Set Caliber</em>' operation.
+	 * @see anydsl.Food#setCaliber(anydsl.Food, org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getFood__SetCaliber__Food_EList();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#acceptedCaliber(anydsl.Caliber) <em>Accepted
+	 * Caliber</em>}' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Accepted Caliber</em>' operation.
+	 * @see anydsl.Food#acceptedCaliber(anydsl.Caliber)
+	 * @generated
+	 */
+	EOperation getFood__AcceptedCaliber__Caliber();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#label(java.lang.String) <em>Label</em>}' operation.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Label</em>' operation.
+	 * @see anydsl.Food#label(java.lang.String)
+	 * @generated
+	 */
+	EOperation getFood__Label__String();
+
+	/**
+	 * Returns the meta object for the '{@link anydsl.Food#preferredLabel(java.lang.String) <em>Preferred
+	 * Label</em>}' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the '<em>Preferred Label</em>' operation.
+	 * @see anydsl.Food#preferredLabel(java.lang.String)
+	 * @generated
+	 */
+	EOperation getFood__PreferredLabel__String();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Source <em>Source</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Source</em>'.
+	 * @see anydsl.Source
+	 * @generated
+	 */
+	EClass getSource();
+
+	/**
+	 * Returns the meta object for the reference list '{@link anydsl.Source#getFoods <em>Foods</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Foods</em>'.
+	 * @see anydsl.Source#getFoods()
+	 * @see #getSource()
+	 * @generated
+	 */
+	EReference getSource_Foods();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link anydsl.Source#getOrigin <em>Origin</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute list '<em>Origin</em>'.
+	 * @see anydsl.Source#getOrigin()
+	 * @see #getSource()
+	 * @generated
+	 */
+	EAttribute getSource_Origin();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Plant <em>Plant</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Plant</em>'.
+	 * @see anydsl.Plant
+	 * @generated
+	 */
+	EClass getPlant();
+
+	/**
+	 * Returns the meta object for the attribute '{@link anydsl.Plant#getKind <em>Kind</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Kind</em>'.
+	 * @see anydsl.Plant#getKind()
+	 * @see #getPlant()
+	 * @generated
+	 */
+	EAttribute getPlant_Kind();
+
+	/**
+	 * Returns the meta object for class '{@link anydsl.Animal <em>Animal</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Animal</em>'.
+	 * @see anydsl.Animal
+	 * @generated
+	 */
+	EClass getAnimal();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link anydsl.Animal#getPart <em>Part</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute list '<em>Part</em>'.
+	 * @see anydsl.Animal#getPart()
+	 * @see #getAnimal()
+	 * @generated
+	 */
+	EAttribute getAnimal_Part();
+
+	/**
+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>EString To Recipe Map</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>EString To Recipe Map</em>'.
+	 * @see java.util.Map.Entry
+	 * @model keyDataType="org.eclipse.emf.ecore.EString" valueType="anydsl.Recipe"
+	 * @generated
+	 */
+	EClass getEStringToRecipeMap();
+
+	/**
+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getEStringToRecipeMap()
+	 * @generated
+	 */
+	EAttribute getEStringToRecipeMap_Key();
+
+	/**
+	 * Returns the meta object for the reference '{@link java.util.Map.Entry <em>Value</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>Value</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getEStringToRecipeMap()
+	 * @generated
+	 */
+	EReference getEStringToRecipeMap_Value();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Color <em>Color</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Color</em>'.
+	 * @see anydsl.Color
+	 * @generated
+	 */
+	EEnum getColor();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Caliber <em>Caliber</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Caliber</em>'.
+	 * @see anydsl.Caliber
+	 * @generated
+	 */
+	EEnum getCaliber();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Group <em>Group</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Group</em>'.
+	 * @see anydsl.Group
+	 * @generated
+	 */
+	EEnum getGroup();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Continent <em>Continent</em>}'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Continent</em>'.
+	 * @see anydsl.Continent
+	 * @generated
+	 */
+	EEnum getContinent();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Kind <em>Kind</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Kind</em>'.
+	 * @see anydsl.Kind
+	 * @generated
+	 */
+	EEnum getKind();
+
+	/**
+	 * Returns the meta object for enum '{@link anydsl.Part <em>Part</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for enum '<em>Part</em>'.
+	 * @see anydsl.Part
+	 * @generated
+	 */
+	EEnum getPart();
+
+	/**
+	 * Returns the meta object for data type '{@link anydsl.Country <em>Country Data</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>Country Data</em>'.
+	 * @see anydsl.Country
+	 * @model instanceClass="anydsl.Country"
+	 * @generated
+	 */
+	EDataType getCountryData();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>Single String</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>Single String</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 * @generated
+	 */
+	EDataType getSingleString();
+
+	/**
+	 * Returns the factory that creates the instances of the model. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	AnydslFactory getAnydslFactory();
+
+	/**
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.WorldImpl <em>World</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.WorldImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getWorld()
+		 * @generated
+		 */
+		EClass WORLD = eINSTANCE.getWorld();
+
+		/**
+		 * The meta object literal for the '<em><b>Companies</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference WORLD__COMPANIES = eINSTANCE.getWorld_Companies();
+
+		/**
+		 * The meta object literal for the '<em><b>Foods</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference WORLD__FOODS = eINSTANCE.getWorld_Foods();
+
+		/**
+		 * The meta object literal for the '<em><b>Sources</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference WORLD__SOURCES = eINSTANCE.getWorld_Sources();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.MultiNamedElement <em>Multi Named Element</em>}'
+		 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.MultiNamedElement
+		 * @see anydsl.impl.AnydslPackageImpl#getMultiNamedElement()
+		 * @generated
+		 */
+		EClass MULTI_NAMED_ELEMENT = eINSTANCE.getMultiNamedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute list feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute MULTI_NAMED_ELEMENT__NAME = eINSTANCE.getMultiNamedElement_Name();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.NamedElement <em>Named Element</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.NamedElement
+		 * @see anydsl.impl.AnydslPackageImpl#getNamedElement()
+		 * @generated
+		 */
+		EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.ProducerImpl <em>Producer</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.ProducerImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getProducer()
+		 * @generated
+		 */
+		EClass PRODUCER = eINSTANCE.getProducer();
+
+		/**
+		 * The meta object literal for the '<em><b>Adress</b></em>' containment reference feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PRODUCER__ADRESS = eINSTANCE.getProducer_Adress();
+
+		/**
+		 * The meta object literal for the '<em><b>Company</b></em>' reference feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PRODUCER__COMPANY = eINSTANCE.getProducer_Company();
+
+		/**
+		 * The meta object literal for the '<em><b>Foods</b></em>' reference list feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PRODUCER__FOODS = eINSTANCE.getProducer_Foods();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.AdressImpl <em>Adress</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.AdressImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getAdress()
+		 * @generated
+		 */
+		EClass ADRESS = eINSTANCE.getAdress();
+
+		/**
+		 * The meta object literal for the '<em><b>Zip Code</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ADRESS__ZIP_CODE = eINSTANCE.getAdress_ZipCode();
+
+		/**
+		 * The meta object literal for the '<em><b>City</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ADRESS__CITY = eINSTANCE.getAdress_City();
+
+		/**
+		 * The meta object literal for the '<em><b>Country</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ADRESS__COUNTRY = eINSTANCE.getAdress_Country();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Company <em>Company</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Company
+		 * @see anydsl.impl.AnydslPackageImpl#getCompany()
+		 * @generated
+		 */
+		EClass COMPANY = eINSTANCE.getCompany();
+
+		/**
+		 * The meta object literal for the '<em><b>Adress</b></em>' containment reference feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference COMPANY__ADRESS = eINSTANCE.getCompany_Adress();
+
+		/**
+		 * The meta object literal for the '<em><b>World</b></em>' reference feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference COMPANY__WORLD = eINSTANCE.getCompany_World();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.ProductionCompanyImpl <em>Production
+		 * Company</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.ProductionCompanyImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getProductionCompany()
+		 * @generated
+		 */
+		EClass PRODUCTION_COMPANY = eINSTANCE.getProductionCompany();
+
+		/**
+		 * The meta object literal for the '<em><b>Producers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PRODUCTION_COMPANY__PRODUCERS = eINSTANCE.getProductionCompany_Producers();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.RestaurantImpl <em>Restaurant</em>}' class.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.RestaurantImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getRestaurant()
+		 * @generated
+		 */
+		EClass RESTAURANT = eINSTANCE.getRestaurant();
+
+		/**
+		 * The meta object literal for the '<em><b>Chefs</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference RESTAURANT__CHEFS = eINSTANCE.getRestaurant_Chefs();
+
+		/**
+		 * The meta object literal for the '<em><b>Menu</b></em>' map feature. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference RESTAURANT__MENU = eINSTANCE.getRestaurant_Menu();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.ChefImpl <em>Chef</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.ChefImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getChef()
+		 * @generated
+		 */
+		EClass CHEF = eINSTANCE.getChef();
+
+		/**
+		 * The meta object literal for the '<em><b>Adress</b></em>' containment reference feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference CHEF__ADRESS = eINSTANCE.getChef_Adress();
+
+		/**
+		 * The meta object literal for the '<em><b>Recipes</b></em>' containment reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference CHEF__RECIPES = eINSTANCE.getChef_Recipes();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.RecipeImpl <em>Recipe</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.RecipeImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getRecipe()
+		 * @generated
+		 */
+		EClass RECIPE = eINSTANCE.getRecipe();
+
+		/**
+		 * The meta object literal for the '<em><b>Ingredients</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference RECIPE__INGREDIENTS = eINSTANCE.getRecipe_Ingredients();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.FoodImpl <em>Food</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.FoodImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getFood()
+		 * @generated
+		 */
+		EClass FOOD = eINSTANCE.getFood();
+
+		/**
+		 * The meta object literal for the '<em><b>Color</b></em>' attribute list feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FOOD__COLOR = eINSTANCE.getFood_Color();
+
+		/**
+		 * The meta object literal for the '<em><b>Caliber</b></em>' attribute feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FOOD__CALIBER = eINSTANCE.getFood_Caliber();
+
+		/**
+		 * The meta object literal for the '<em><b>Related Foods</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference FOOD__RELATED_FOODS = eINSTANCE.getFood_RelatedFoods();
+
+		/**
+		 * The meta object literal for the '<em><b>Group</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FOOD__GROUP = eINSTANCE.getFood_Group();
+
+		/**
+		 * The meta object literal for the '<em><b>Label</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FOOD__LABEL = eINSTANCE.getFood_Label();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' reference feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference FOOD__SOURCE = eINSTANCE.getFood_Source();
+
+		/**
+		 * The meta object literal for the '<em><b>Producers</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference FOOD__PRODUCERS = eINSTANCE.getFood_Producers();
+
+		/**
+		 * The meta object literal for the '<em><b>Ripen</b></em>' operation. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___RIPEN__COLOR = eINSTANCE.getFood__Ripen__Color();
+
+		/**
+		 * The meta object literal for the '<em><b>Preferred Color</b></em>' operation. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___PREFERRED_COLOR = eINSTANCE.getFood__PreferredColor();
+
+		/**
+		 * The meta object literal for the '<em><b>New Food</b></em>' operation. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___NEW_FOOD = eINSTANCE.getFood__NewFood();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Color</b></em>' operation. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___SET_COLOR__FOOD_COLOR = eINSTANCE.getFood__SetColor__Food_Color();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Caliber</b></em>' operation. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___SET_CALIBER__FOOD_ELIST = eINSTANCE.getFood__SetCaliber__Food_EList();
+
+		/**
+		 * The meta object literal for the '<em><b>Accepted Caliber</b></em>' operation. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___ACCEPTED_CALIBER__CALIBER = eINSTANCE.getFood__AcceptedCaliber__Caliber();
+
+		/**
+		 * The meta object literal for the '<em><b>Label</b></em>' operation. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___LABEL__STRING = eINSTANCE.getFood__Label__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Preferred Label</b></em>' operation. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EOperation FOOD___PREFERRED_LABEL__STRING = eINSTANCE.getFood__PreferredLabel__String();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Source <em>Source</em>}' class. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Source
+		 * @see anydsl.impl.AnydslPackageImpl#getSource()
+		 * @generated
+		 */
+		EClass SOURCE = eINSTANCE.getSource();
+
+		/**
+		 * The meta object literal for the '<em><b>Foods</b></em>' reference list feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference SOURCE__FOODS = eINSTANCE.getSource_Foods();
+
+		/**
+		 * The meta object literal for the '<em><b>Origin</b></em>' attribute list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute SOURCE__ORIGIN = eINSTANCE.getSource_Origin();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.PlantImpl <em>Plant</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.PlantImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getPlant()
+		 * @generated
+		 */
+		EClass PLANT = eINSTANCE.getPlant();
+
+		/**
+		 * The meta object literal for the '<em><b>Kind</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute PLANT__KIND = eINSTANCE.getPlant_Kind();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.AnimalImpl <em>Animal</em>}' class. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.AnimalImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getAnimal()
+		 * @generated
+		 */
+		EClass ANIMAL = eINSTANCE.getAnimal();
+
+		/**
+		 * The meta object literal for the '<em><b>Part</b></em>' attribute list feature. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ANIMAL__PART = eINSTANCE.getAnimal_Part();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.impl.EStringToRecipeMapImpl <em>EString To Recipe
+		 * Map</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.impl.EStringToRecipeMapImpl
+		 * @see anydsl.impl.AnydslPackageImpl#getEStringToRecipeMap()
+		 * @generated
+		 */
+		EClass ESTRING_TO_RECIPE_MAP = eINSTANCE.getEStringToRecipeMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ESTRING_TO_RECIPE_MAP__KEY = eINSTANCE.getEStringToRecipeMap_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' reference feature. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference ESTRING_TO_RECIPE_MAP__VALUE = eINSTANCE.getEStringToRecipeMap_Value();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Color <em>Color</em>}' enum. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Color
+		 * @see anydsl.impl.AnydslPackageImpl#getColor()
+		 * @generated
+		 */
+		EEnum COLOR = eINSTANCE.getColor();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Caliber <em>Caliber</em>}' enum. <!-- begin-user-doc
+		 * --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Caliber
+		 * @see anydsl.impl.AnydslPackageImpl#getCaliber()
+		 * @generated
+		 */
+		EEnum CALIBER = eINSTANCE.getCaliber();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Group <em>Group</em>}' enum. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Group
+		 * @see anydsl.impl.AnydslPackageImpl#getGroup()
+		 * @generated
+		 */
+		EEnum GROUP = eINSTANCE.getGroup();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Continent <em>Continent</em>}' enum. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Continent
+		 * @see anydsl.impl.AnydslPackageImpl#getContinent()
+		 * @generated
+		 */
+		EEnum CONTINENT = eINSTANCE.getContinent();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Kind <em>Kind</em>}' enum. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Kind
+		 * @see anydsl.impl.AnydslPackageImpl#getKind()
+		 * @generated
+		 */
+		EEnum KIND = eINSTANCE.getKind();
+
+		/**
+		 * The meta object literal for the '{@link anydsl.Part <em>Part</em>}' enum. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see anydsl.Part
+		 * @see anydsl.impl.AnydslPackageImpl#getPart()
+		 * @generated
+		 */
+		EEnum PART = eINSTANCE.getPart();
+
+		/**
+		 * The meta object literal for the '<em>Country Data</em>' data type. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see anydsl.Country
+		 * @see anydsl.impl.AnydslPackageImpl#getCountryData()
+		 * @generated
+		 */
+		EDataType COUNTRY_DATA = eINSTANCE.getCountryData();
+
+		/**
+		 * The meta object literal for the '<em>Single String</em>' data type. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see java.lang.String
+		 * @see anydsl.impl.AnydslPackageImpl#getSingleString()
+		 * @generated
+		 */
+		EDataType SINGLE_STRING = eINSTANCE.getSingleString();
+
+	}
+
+} // AnydslPackage
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Caliber.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Caliber.java
new file mode 100644
index 0000000..b5219e6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Caliber.java
@@ -0,0 +1,254 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Caliber</b></em>', and
+ * utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getCaliber()
+ * @model
+ * @generated
+ */
+public enum Caliber implements Enumerator {
+	/**
+	 * The '<em><b>S</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #S_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	S(0, "S", "S"),
+
+	/**
+	 * The '<em><b>M</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #M_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	M(1, "M", "M"),
+
+	/**
+	 * The '<em><b>L</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #L_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	L(2, "L", "L"),
+
+	/**
+	 * The '<em><b>XL</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #XL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	XL(3, "XL", "XL");
+
+	/**
+	 * The '<em><b>S</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>S</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #S
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int S_VALUE = 0;
+
+	/**
+	 * The '<em><b>M</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>M</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #M
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int M_VALUE = 1;
+
+	/**
+	 * The '<em><b>L</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>L</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #L
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int L_VALUE = 2;
+
+	/**
+	 * The '<em><b>XL</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>XL</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #XL
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int XL_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Caliber</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	private static final Caliber[] VALUES_ARRAY = new Caliber[] {S, M, L, XL, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Caliber</b></em>' enumerators. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Caliber> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Caliber</b></em>' literal with the specified literal value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Caliber get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Caliber result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Caliber</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Caliber getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Caliber result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Caliber</b></em>' literal with the specified integer value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Caliber get(int value) {
+		switch (value) {
+			case S_VALUE:
+				return S;
+			case M_VALUE:
+				return M;
+			case L_VALUE:
+				return L;
+			case XL_VALUE:
+				return XL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Caliber(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Caliber
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Chef.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Chef.java
new file mode 100644
index 0000000..6528423
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Chef.java
@@ -0,0 +1,65 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Chef</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Chef#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.Chef#getRecipes <em>Recipes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getChef()
+ * @model
+ * @generated
+ */
+public interface Chef extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Adress</em>' containment reference isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Adress</em>' containment reference.
+	 * @see #setAdress(Adress)
+	 * @see anydsl.AnydslPackage#getChef_Adress()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Adress getAdress();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Chef#getAdress <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Adress</em>' containment reference.
+	 * @see #getAdress()
+	 * @generated
+	 */
+	void setAdress(Adress value);
+
+	/**
+	 * Returns the value of the '<em><b>Recipes</b></em>' containment reference list. The list contents are of
+	 * type {@link anydsl.Recipe}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recipes</em>' containment reference list isn't clear, there really should be
+	 * more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Recipes</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getChef_Recipes()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Recipe> getRecipes();
+
+} // Chef
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Color.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Color.java
new file mode 100644
index 0000000..b0710da
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Color.java
@@ -0,0 +1,410 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Color</b></em>', and
+ * utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getColor()
+ * @model
+ * @generated
+ */
+public enum Color implements Enumerator {
+	/**
+	 * The '<em><b>Black</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #BLACK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BLACK(0, "black", "black"),
+
+	/**
+	 * The '<em><b>Red</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #RED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RED(1, "red", "red"),
+
+	/**
+	 * The '<em><b>Green</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #GREEN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREEN(2, "green", "green"),
+
+	/**
+	 * The '<em><b>Yellow</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #YELLOW_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	YELLOW(3, "yellow", "yellow"),
+
+	/**
+	 * The '<em><b>Orange</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ORANGE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ORANGE(4, "orange", "orange"),
+
+	/**
+	 * The '<em><b>Brown</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #BROWN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BROWN(5, "brown", "brown"),
+
+	/**
+	 * The '<em><b>Pink</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #PINK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PINK(6, "pink", "pink"),
+
+	/**
+	 * The '<em><b>Pal Pink</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #PAL_PINK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PAL_PINK(7, "palPink", "palPink"),
+
+	/**
+	 * The '<em><b>Very Yellow</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #VERY_YELLOW_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	VERY_YELLOW(8, "veryYellow", "veryYellow"),
+
+	/**
+	 * The '<em><b>White</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #WHITE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WHITE(9, "white", "white");
+
+	/**
+	 * The '<em><b>Black</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Black</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #BLACK
+	 * @model name="black"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BLACK_VALUE = 0;
+
+	/**
+	 * The '<em><b>Red</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Red</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #RED
+	 * @model name="red"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RED_VALUE = 1;
+
+	/**
+	 * The '<em><b>Green</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Green</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #GREEN
+	 * @model name="green"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREEN_VALUE = 2;
+
+	/**
+	 * The '<em><b>Yellow</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Yellow</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #YELLOW
+	 * @model name="yellow"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int YELLOW_VALUE = 3;
+
+	/**
+	 * The '<em><b>Orange</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Orange</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ORANGE
+	 * @model name="orange"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ORANGE_VALUE = 4;
+
+	/**
+	 * The '<em><b>Brown</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Brown</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #BROWN
+	 * @model name="brown"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BROWN_VALUE = 5;
+
+	/**
+	 * The '<em><b>Pink</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Pink</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #PINK
+	 * @model name="pink"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PINK_VALUE = 6;
+
+	/**
+	 * The '<em><b>Pal Pink</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Pal Pink</b></em>' literal object isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #PAL_PINK
+	 * @model name="palPink"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PAL_PINK_VALUE = 7;
+
+	/**
+	 * The '<em><b>Very Yellow</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Very Yellow</b></em>' literal object isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #VERY_YELLOW
+	 * @model name="veryYellow"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int VERY_YELLOW_VALUE = 8;
+
+	/**
+	 * The '<em><b>White</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>White</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #WHITE
+	 * @model name="white"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WHITE_VALUE = 9;
+
+	/**
+	 * An array of all the '<em><b>Color</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final Color[] VALUES_ARRAY = new Color[] {BLACK, RED, GREEN, YELLOW, ORANGE, BROWN, PINK,
+			PAL_PINK, VERY_YELLOW, WHITE, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Color</b></em>' enumerators. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Color> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Color</b></em>' literal with the specified literal value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Color get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Color result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Color</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Color getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Color result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Color</b></em>' literal with the specified integer value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Color get(int value) {
+		switch (value) {
+			case BLACK_VALUE:
+				return BLACK;
+			case RED_VALUE:
+				return RED;
+			case GREEN_VALUE:
+				return GREEN;
+			case YELLOW_VALUE:
+				return YELLOW;
+			case ORANGE_VALUE:
+				return ORANGE;
+			case BROWN_VALUE:
+				return BROWN;
+			case PINK_VALUE:
+				return PINK;
+			case PAL_PINK_VALUE:
+				return PAL_PINK;
+			case VERY_YELLOW_VALUE:
+				return VERY_YELLOW;
+			case WHITE_VALUE:
+				return WHITE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Color(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Color
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Company.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Company.java
new file mode 100644
index 0000000..bc8940c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Company.java
@@ -0,0 +1,75 @@
+/**
+ */
+package anydsl;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Company</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Company#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.Company#getWorld <em>World</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getCompany()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface Company extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Adress</em>' containment reference isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Adress</em>' containment reference.
+	 * @see #setAdress(Adress)
+	 * @see anydsl.AnydslPackage#getCompany_Adress()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Adress getAdress();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Company#getAdress <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Adress</em>' containment reference.
+	 * @see #getAdress()
+	 * @generated
+	 */
+	void setAdress(Adress value);
+
+	/**
+	 * Returns the value of the '<em><b>World</b></em>' reference. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>World</em>' reference isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>World</em>' reference.
+	 * @see #setWorld(World)
+	 * @see anydsl.AnydslPackage#getCompany_World()
+	 * @model
+	 * @generated
+	 */
+	World getWorld();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Company#getWorld <em>World</em>}' reference. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>World</em>' reference.
+	 * @see #getWorld()
+	 * @generated
+	 */
+	void setWorld(World value);
+
+} // Company
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Continent.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Continent.java
new file mode 100644
index 0000000..db28fc5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Continent.java
@@ -0,0 +1,307 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Continent</b></em>',
+ * and utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getContinent()
+ * @model
+ * @generated
+ */
+public enum Continent implements Enumerator {
+	/**
+	 * The '<em><b>Europe</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #EUROPE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EUROPE(0, "Europe", "Europe"),
+
+	/**
+	 * The '<em><b>Asia</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ASIA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ASIA(1, "Asia", "Asia"),
+
+	/**
+	 * The '<em><b>Africa</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #AFRICA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AFRICA(2, "Africa", "Africa"),
+
+	/**
+	 * The '<em><b>America</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #AMERICA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AMERICA(3, "America", "America"),
+
+	/**
+	 * The '<em><b>Australia</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #AUSTRALIA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AUSTRALIA(4, "Australia", "Australia"),
+
+	/**
+	 * The '<em><b>Antarctica</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ANTARCTICA_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ANTARCTICA(5, "Antarctica", "Antarctica");
+
+	/**
+	 * The '<em><b>Europe</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Europe</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #EUROPE
+	 * @model name="Europe"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EUROPE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Asia</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Asia</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ASIA
+	 * @model name="Asia"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ASIA_VALUE = 1;
+
+	/**
+	 * The '<em><b>Africa</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Africa</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #AFRICA
+	 * @model name="Africa"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AFRICA_VALUE = 2;
+
+	/**
+	 * The '<em><b>America</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>America</b></em>' literal object isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #AMERICA
+	 * @model name="America"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AMERICA_VALUE = 3;
+
+	/**
+	 * The '<em><b>Australia</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Australia</b></em>' literal object isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #AUSTRALIA
+	 * @model name="Australia"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AUSTRALIA_VALUE = 4;
+
+	/**
+	 * The '<em><b>Antarctica</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Antarctica</b></em>' literal object isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ANTARCTICA
+	 * @model name="Antarctica"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ANTARCTICA_VALUE = 5;
+
+	/**
+	 * An array of all the '<em><b>Continent</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @generated
+	 */
+	private static final Continent[] VALUES_ARRAY = new Continent[] {EUROPE, ASIA, AFRICA, AMERICA, AUSTRALIA,
+			ANTARCTICA, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Continent</b></em>' enumerators. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Continent> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Continent</b></em>' literal with the specified literal value. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Continent get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Continent result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Continent</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Continent getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Continent result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Continent</b></em>' literal with the specified integer value. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Continent get(int value) {
+		switch (value) {
+			case EUROPE_VALUE:
+				return EUROPE;
+			case ASIA_VALUE:
+				return ASIA;
+			case AFRICA_VALUE:
+				return AFRICA;
+			case AMERICA_VALUE:
+				return AMERICA;
+			case AUSTRALIA_VALUE:
+				return AUSTRALIA;
+			case ANTARCTICA_VALUE:
+				return ANTARCTICA;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Continent(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Continent
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Country.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Country.java
new file mode 100644
index 0000000..a6b0be1
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Country.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package anydsl;
+
+import java.io.Serializable;
+
+public class Country implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private String name;
+
+	private Continent continent;
+
+	public Country() {
+	}
+
+	public Country(String name, Continent continent) {
+		this.name = name;
+		this.continent = continent;
+	}
+
+	public Continent getContinent() {
+		return continent;
+	}
+
+	public void setContinent(Continent continent) {
+		this.continent = continent;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Food.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Food.java
new file mode 100644
index 0000000..a438050
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Food.java
@@ -0,0 +1,259 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Food</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Food#getColor <em>Color</em>}</li>
+ * <li>{@link anydsl.Food#getCaliber <em>Caliber</em>}</li>
+ * <li>{@link anydsl.Food#getRelatedFoods <em>Related Foods</em>}</li>
+ * <li>{@link anydsl.Food#getGroup <em>Group</em>}</li>
+ * <li>{@link anydsl.Food#getLabel <em>Label</em>}</li>
+ * <li>{@link anydsl.Food#getSource <em>Source</em>}</li>
+ * <li>{@link anydsl.Food#getProducers <em>Producers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getFood()
+ * @model
+ * @generated
+ */
+public interface Food extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Color</b></em>' attribute list. The list contents are of type
+	 * {@link anydsl.Color}. The literals are from the enumeration {@link anydsl.Color}. <!-- begin-user-doc
+	 * -->
+	 * <p>
+	 * If the meaning of the '<em>Color</em>' attribute list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Color</em>' attribute list.
+	 * @see anydsl.Color
+	 * @see anydsl.AnydslPackage#getFood_Color()
+	 * @model
+	 * @generated
+	 */
+	EList<Color> getColor();
+
+	/**
+	 * Returns the value of the '<em><b>Caliber</b></em>' attribute. The literals are from the enumeration
+	 * {@link anydsl.Caliber}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Caliber</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Caliber</em>' attribute.
+	 * @see anydsl.Caliber
+	 * @see #setCaliber(Caliber)
+	 * @see anydsl.AnydslPackage#getFood_Caliber()
+	 * @model
+	 * @generated
+	 */
+	Caliber getCaliber();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Food#getCaliber <em>Caliber</em>}' attribute. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Caliber</em>' attribute.
+	 * @see anydsl.Caliber
+	 * @see #getCaliber()
+	 * @generated
+	 */
+	void setCaliber(Caliber value);
+
+	/**
+	 * Returns the value of the '<em><b>Related Foods</b></em>' reference list. The list contents are of type
+	 * {@link anydsl.Food}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Related Foods</em>' reference list isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Related Foods</em>' reference list.
+	 * @see anydsl.AnydslPackage#getFood_RelatedFoods()
+	 * @model
+	 * @generated
+	 */
+	EList<Food> getRelatedFoods();
+
+	/**
+	 * Returns the value of the '<em><b>Group</b></em>' attribute. The literals are from the enumeration
+	 * {@link anydsl.Group}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Group</em>' attribute.
+	 * @see anydsl.Group
+	 * @see #setGroup(Group)
+	 * @see anydsl.AnydslPackage#getFood_Group()
+	 * @model
+	 * @generated
+	 */
+	Group getGroup();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Food#getGroup <em>Group</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Group</em>' attribute.
+	 * @see anydsl.Group
+	 * @see #getGroup()
+	 * @generated
+	 */
+	void setGroup(Group value);
+
+	/**
+	 * Returns the value of the '<em><b>Label</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Label</em>' attribute.
+	 * @see #setLabel(String)
+	 * @see anydsl.AnydslPackage#getFood_Label()
+	 * @model
+	 * @generated
+	 */
+	String getLabel();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Food#getLabel <em>Label</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Label</em>' attribute.
+	 * @see #getLabel()
+	 * @generated
+	 */
+	void setLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Source</b></em>' reference. It is bidirectional and its opposite is '
+	 * {@link anydsl.Source#getFoods <em>Foods</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source</em>' reference isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Source</em>' reference.
+	 * @see #setSource(Source)
+	 * @see anydsl.AnydslPackage#getFood_Source()
+	 * @see anydsl.Source#getFoods
+	 * @model opposite="foods"
+	 * @generated
+	 */
+	Source getSource();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Food#getSource <em>Source</em>}' reference. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Source</em>' reference.
+	 * @see #getSource()
+	 * @generated
+	 */
+	void setSource(Source value);
+
+	/**
+	 * Returns the value of the '<em><b>Producers</b></em>' reference list. The list contents are of type
+	 * {@link anydsl.Producer}. It is bidirectional and its opposite is '{@link anydsl.Producer#getFoods
+	 * <em>Foods</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Producers</em>' reference list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Producers</em>' reference list.
+	 * @see anydsl.AnydslPackage#getFood_Producers()
+	 * @see anydsl.Producer#getFoods
+	 * @model opposite="foods"
+	 * @generated
+	 */
+	EList<Producer> getProducers();
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	boolean ripen(Color color);
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	Color preferredColor();
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	Food newFood();
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	void setColor(Food food, Color newColor);
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model newCaliberMany="true"
+	 * @generated
+	 */
+	void setCaliber(Food food, EList<Caliber> newCaliber);
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	boolean acceptedCaliber(Caliber caliber);
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	void label(String text);
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	String preferredLabel(String text);
+
+} // Food
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Group.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Group.java
new file mode 100644
index 0000000..07bd882
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Group.java
@@ -0,0 +1,358 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Group</b></em>', and
+ * utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getGroup()
+ * @model
+ * @generated
+ */
+public enum Group implements Enumerator {
+	/**
+	 * The '<em><b>Water</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #WATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WATER(0, "Water", "Water"),
+
+	/**
+	 * The '<em><b>Dairy</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #DAIRY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DAIRY(1, "Dairy", "Dairy"),
+
+	/**
+	 * The '<em><b>Fruit</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #FRUIT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FRUIT(2, "Fruit", "Fruit"),
+
+	/**
+	 * The '<em><b>Grain</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #GRAIN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GRAIN(3, "Grain", "Grain"),
+
+	/**
+	 * The '<em><b>Protein</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #PROTEIN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PROTEIN(4, "Protein", "Protein"),
+
+	/**
+	 * The '<em><b>Sweet</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #SWEET_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SWEET(5, "Sweet", "Sweet"),
+
+	/**
+	 * The '<em><b>Vegetable</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #VEGETABLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	VEGETABLE(6, "Vegetable", "Vegetable"),
+
+	/**
+	 * The '<em><b>Alcohol</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ALCOHOL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ALCOHOL(7, "Alcohol", "Alcohol");
+
+	/**
+	 * The '<em><b>Water</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Water</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #WATER
+	 * @model name="Water"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WATER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Dairy</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Dairy</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #DAIRY
+	 * @model name="Dairy"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DAIRY_VALUE = 1;
+
+	/**
+	 * The '<em><b>Fruit</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Fruit</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #FRUIT
+	 * @model name="Fruit"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FRUIT_VALUE = 2;
+
+	/**
+	 * The '<em><b>Grain</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Grain</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #GRAIN
+	 * @model name="Grain"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GRAIN_VALUE = 3;
+
+	/**
+	 * The '<em><b>Protein</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Protein</b></em>' literal object isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #PROTEIN
+	 * @model name="Protein"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PROTEIN_VALUE = 4;
+
+	/**
+	 * The '<em><b>Sweet</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Sweet</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #SWEET
+	 * @model name="Sweet"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SWEET_VALUE = 5;
+
+	/**
+	 * The '<em><b>Vegetable</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Vegetable</b></em>' literal object isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #VEGETABLE
+	 * @model name="Vegetable"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int VEGETABLE_VALUE = 6;
+
+	/**
+	 * The '<em><b>Alcohol</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Alcohol</b></em>' literal object isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ALCOHOL
+	 * @model name="Alcohol"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ALCOHOL_VALUE = 7;
+
+	/**
+	 * An array of all the '<em><b>Group</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final Group[] VALUES_ARRAY = new Group[] {WATER, DAIRY, FRUIT, GRAIN, PROTEIN, SWEET,
+			VEGETABLE, ALCOHOL, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Group</b></em>' enumerators. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Group> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Group</b></em>' literal with the specified literal value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Group get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Group result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Group</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Group getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Group result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Group</b></em>' literal with the specified integer value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Group get(int value) {
+		switch (value) {
+			case WATER_VALUE:
+				return WATER;
+			case DAIRY_VALUE:
+				return DAIRY;
+			case FRUIT_VALUE:
+				return FRUIT;
+			case GRAIN_VALUE:
+				return GRAIN;
+			case PROTEIN_VALUE:
+				return PROTEIN;
+			case SWEET_VALUE:
+				return SWEET;
+			case VEGETABLE_VALUE:
+				return VEGETABLE;
+			case ALCOHOL_VALUE:
+				return ALCOHOL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Group(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Group
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Kind.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Kind.java
new file mode 100644
index 0000000..2cb2c64
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Kind.java
@@ -0,0 +1,436 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Kind</b></em>', and
+ * utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getKind()
+ * @model
+ * @generated
+ */
+public enum Kind implements Enumerator {
+	/**
+	 * The '<em><b>Other</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #OTHER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OTHER(0, "Other", "Other"),
+
+	/**
+	 * The '<em><b>Seed</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #SEED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEED(1, "Seed", "Seed"),
+
+	/**
+	 * The '<em><b>Oilseed</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #OILSEED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OILSEED(2, "Oilseed", "Oilseed"),
+
+	/**
+	 * The '<em><b>Tree</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #TREE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TREE(3, "Tree", "Tree"),
+
+	/**
+	 * The '<em><b>Root</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ROOT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ROOT(4, "Root", "Root"),
+
+	/**
+	 * The '<em><b>Bulb</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #BULB_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BULB(5, "Bulb", "Bulb"),
+
+	/**
+	 * The '<em><b>Leaf</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #LEAF_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LEAF(6, "Leaf", "Leaf"),
+
+	/**
+	 * The '<em><b>Stem</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #STEM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STEM(7, "Stem", "Stem"),
+
+	/**
+	 * The '<em><b>Flower</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #FLOWER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLOWER(8, "Flower", "Flower"),
+
+	/**
+	 * The '<em><b>Inflorescence</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #INFLORESCENCE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INFLORESCENCE(9, "Inflorescence", "Inflorescence"),
+
+	/**
+	 * The '<em><b>Spice</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #SPICE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SPICE(10, "Spice", "Spice");
+
+	/**
+	 * The '<em><b>Other</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Other</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #OTHER
+	 * @model name="Other"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OTHER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Seed</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Seed</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #SEED
+	 * @model name="Seed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEED_VALUE = 1;
+
+	/**
+	 * The '<em><b>Oilseed</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Oilseed</b></em>' literal object isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #OILSEED
+	 * @model name="Oilseed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OILSEED_VALUE = 2;
+
+	/**
+	 * The '<em><b>Tree</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Tree</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #TREE
+	 * @model name="Tree"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TREE_VALUE = 3;
+
+	/**
+	 * The '<em><b>Root</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Root</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ROOT
+	 * @model name="Root"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ROOT_VALUE = 4;
+
+	/**
+	 * The '<em><b>Bulb</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Bulb</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #BULB
+	 * @model name="Bulb"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BULB_VALUE = 5;
+
+	/**
+	 * The '<em><b>Leaf</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Leaf</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #LEAF
+	 * @model name="Leaf"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LEAF_VALUE = 6;
+
+	/**
+	 * The '<em><b>Stem</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Stem</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #STEM
+	 * @model name="Stem"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STEM_VALUE = 7;
+
+	/**
+	 * The '<em><b>Flower</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Flower</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #FLOWER
+	 * @model name="Flower"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLOWER_VALUE = 8;
+
+	/**
+	 * The '<em><b>Inflorescence</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Inflorescence</b></em>' literal object isn't clear, there really should be
+	 * more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #INFLORESCENCE
+	 * @model name="Inflorescence"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INFLORESCENCE_VALUE = 9;
+
+	/**
+	 * The '<em><b>Spice</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Spice</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #SPICE
+	 * @model name="Spice"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SPICE_VALUE = 10;
+
+	/**
+	 * An array of all the '<em><b>Kind</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final Kind[] VALUES_ARRAY = new Kind[] {OTHER, SEED, OILSEED, TREE, ROOT, BULB, LEAF, STEM,
+			FLOWER, INFLORESCENCE, SPICE, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Kind</b></em>' enumerators. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Kind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Kind</b></em>' literal with the specified literal value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Kind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Kind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Kind</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Kind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Kind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Kind</b></em>' literal with the specified integer value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Kind get(int value) {
+		switch (value) {
+			case OTHER_VALUE:
+				return OTHER;
+			case SEED_VALUE:
+				return SEED;
+			case OILSEED_VALUE:
+				return OILSEED;
+			case TREE_VALUE:
+				return TREE;
+			case ROOT_VALUE:
+				return ROOT;
+			case BULB_VALUE:
+				return BULB;
+			case LEAF_VALUE:
+				return LEAF;
+			case STEM_VALUE:
+				return STEM;
+			case FLOWER_VALUE:
+				return FLOWER;
+			case INFLORESCENCE_VALUE:
+				return INFLORESCENCE;
+			case SPICE_VALUE:
+				return SPICE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Kind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Kind
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/MultiNamedElement.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/MultiNamedElement.java
new file mode 100644
index 0000000..fe2a22c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/MultiNamedElement.java
@@ -0,0 +1,39 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Multi Named Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.MultiNamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getMultiNamedElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface MultiNamedElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute list. The list contents are of type
+	 * {@link java.lang.String}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute list.
+	 * @see anydsl.AnydslPackage#getMultiNamedElement_Name()
+	 * @model dataType="anydsl.SingleString"
+	 * @generated
+	 */
+	EList<String> getName();
+
+} // MultiNamedElement
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/NamedElement.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/NamedElement.java
new file mode 100644
index 0000000..d1a8d75
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/NamedElement.java
@@ -0,0 +1,49 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Named Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.NamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getNamedElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface NamedElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see anydsl.AnydslPackage#getNamedElement_Name()
+	 * @model dataType="anydsl.SingleString"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link anydsl.NamedElement#getName <em>Name</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // NamedElement
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Part.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Part.java
new file mode 100644
index 0000000..6afba0a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Part.java
@@ -0,0 +1,227 @@
+/**
+ */
+package anydsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Part</b></em>', and
+ * utility methods for working with them. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage#getPart()
+ * @model
+ * @generated
+ */
+public enum Part implements Enumerator {
+	/**
+	 * The '<em><b>Other</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #OTHER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OTHER(0, "Other", "Other"),
+
+	/**
+	 * The '<em><b>Muscle</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #MUSCLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MUSCLE(1, "Muscle", "Muscle"),
+
+	/**
+	 * The '<em><b>Organ</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #ORGAN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ORGAN(2, "Organ", "Organ");
+
+	/**
+	 * The '<em><b>Other</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Other</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #OTHER
+	 * @model name="Other"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OTHER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Muscle</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Muscle</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #MUSCLE
+	 * @model name="Muscle"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MUSCLE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Organ</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Organ</b></em>' literal object isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #ORGAN
+	 * @model name="Organ"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ORGAN_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Part</b></em>' enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final Part[] VALUES_ARRAY = new Part[] {OTHER, MUSCLE, ORGAN, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Part</b></em>' enumerators. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<Part> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Part</b></em>' literal with the specified literal value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Part get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Part result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Part</b></em>' literal with the specified name. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Part getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Part result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Part</b></em>' literal with the specified integer value. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static Part get(int value) {
+		switch (value) {
+			case OTHER_VALUE:
+				return OTHER;
+			case MUSCLE_VALUE:
+				return MUSCLE;
+			case ORGAN_VALUE:
+				return ORGAN;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private Part(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // Part
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Plant.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Plant.java
new file mode 100644
index 0000000..4d81e27
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Plant.java
@@ -0,0 +1,49 @@
+/**
+ */
+package anydsl;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Plant</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Plant#getKind <em>Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getPlant()
+ * @model
+ * @generated
+ */
+public interface Plant extends Source {
+	/**
+	 * Returns the value of the '<em><b>Kind</b></em>' attribute. The literals are from the enumeration
+	 * {@link anydsl.Kind}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kind</em>' attribute isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Kind</em>' attribute.
+	 * @see anydsl.Kind
+	 * @see #setKind(Kind)
+	 * @see anydsl.AnydslPackage#getPlant_Kind()
+	 * @model
+	 * @generated
+	 */
+	Kind getKind();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Plant#getKind <em>Kind</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Kind</em>' attribute.
+	 * @see anydsl.Kind
+	 * @see #getKind()
+	 * @generated
+	 */
+	void setKind(Kind value);
+
+} // Plant
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Producer.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Producer.java
new file mode 100644
index 0000000..d42014f
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Producer.java
@@ -0,0 +1,96 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Producer</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Producer#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.Producer#getCompany <em>Company</em>}</li>
+ * <li>{@link anydsl.Producer#getFoods <em>Foods</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getProducer()
+ * @model
+ * @generated
+ */
+public interface Producer extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Adress</b></em>' containment reference. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Adress</em>' containment reference isn't clear, there really should be more
+	 * of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Adress</em>' containment reference.
+	 * @see #setAdress(Adress)
+	 * @see anydsl.AnydslPackage#getProducer_Adress()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Adress getAdress();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Producer#getAdress <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Adress</em>' containment reference.
+	 * @see #getAdress()
+	 * @generated
+	 */
+	void setAdress(Adress value);
+
+	/**
+	 * Returns the value of the '<em><b>Company</b></em>' reference. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Company</em>' reference isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Company</em>' reference.
+	 * @see #setCompany(Company)
+	 * @see anydsl.AnydslPackage#getProducer_Company()
+	 * @model
+	 * @generated
+	 */
+	Company getCompany();
+
+	/**
+	 * Sets the value of the '{@link anydsl.Producer#getCompany <em>Company</em>}' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Company</em>' reference.
+	 * @see #getCompany()
+	 * @generated
+	 */
+	void setCompany(Company value);
+
+	/**
+	 * Returns the value of the '<em><b>Foods</b></em>' reference list. The list contents are of type
+	 * {@link anydsl.Food}. It is bidirectional and its opposite is '{@link anydsl.Food#getProducers
+	 * <em>Producers</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Foods</em>' reference list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Foods</em>' reference list.
+	 * @see anydsl.AnydslPackage#getProducer_Foods()
+	 * @see anydsl.Food#getProducers
+	 * @model opposite="producers"
+	 * @generated
+	 */
+	EList<Food> getFoods();
+
+} // Producer
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/ProductionCompany.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/ProductionCompany.java
new file mode 100644
index 0000000..0640949
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/ProductionCompany.java
@@ -0,0 +1,38 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Production Company</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.ProductionCompany#getProducers <em>Producers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getProductionCompany()
+ * @model
+ * @generated
+ */
+public interface ProductionCompany extends Company {
+	/**
+	 * Returns the value of the '<em><b>Producers</b></em>' containment reference list. The list contents are
+	 * of type {@link anydsl.Producer}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Producers</em>' containment reference list isn't clear, there really should
+	 * be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Producers</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getProductionCompany_Producers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Producer> getProducers();
+
+} // ProductionCompany
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Recipe.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Recipe.java
new file mode 100644
index 0000000..dd131c6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Recipe.java
@@ -0,0 +1,38 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Recipe</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Recipe#getIngredients <em>Ingredients</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getRecipe()
+ * @model
+ * @generated
+ */
+public interface Recipe extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Ingredients</b></em>' reference list. The list contents are of type
+	 * {@link anydsl.Food}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ingredients</em>' reference list isn't clear, there really should be more of
+	 * a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Ingredients</em>' reference list.
+	 * @see anydsl.AnydslPackage#getRecipe_Ingredients()
+	 * @model
+	 * @generated
+	 */
+	EList<Food> getIngredients();
+
+} // Recipe
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Restaurant.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Restaurant.java
new file mode 100644
index 0000000..961fa3b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Restaurant.java
@@ -0,0 +1,56 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Restaurant</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Restaurant#getChefs <em>Chefs</em>}</li>
+ * <li>{@link anydsl.Restaurant#getMenu <em>Menu</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getRestaurant()
+ * @model
+ * @generated
+ */
+public interface Restaurant extends Company {
+	/**
+	 * Returns the value of the '<em><b>Chefs</b></em>' containment reference list. The list contents are of
+	 * type {@link anydsl.Chef}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Chefs</em>' containment reference list isn't clear, there really should be
+	 * more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Chefs</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getRestaurant_Chefs()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Chef> getChefs();
+
+	/**
+	 * Returns the value of the '<em><b>Menu</b></em>' map. The key is of type {@link java.lang.String}, and
+	 * the value is of type {@link anydsl.Recipe}, <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Menu</em>' map isn't clear, there really should be more of a description
+	 * here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Menu</em>' map.
+	 * @see anydsl.AnydslPackage#getRestaurant_Menu()
+	 * @model mapType="anydsl.EStringToRecipeMap<org.eclipse.emf.ecore.EString, anydsl.Recipe>"
+	 * @generated
+	 */
+	EMap<String, Recipe> getMenu();
+
+} // Restaurant
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Source.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Source.java
new file mode 100644
index 0000000..d15865a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/Source.java
@@ -0,0 +1,57 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Source</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.Source#getFoods <em>Foods</em>}</li>
+ * <li>{@link anydsl.Source#getOrigin <em>Origin</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getSource()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface Source extends MultiNamedElement {
+	/**
+	 * Returns the value of the '<em><b>Foods</b></em>' reference list. The list contents are of type
+	 * {@link anydsl.Food}. It is bidirectional and its opposite is '{@link anydsl.Food#getSource
+	 * <em>Source</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Foods</em>' reference list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Foods</em>' reference list.
+	 * @see anydsl.AnydslPackage#getSource_Foods()
+	 * @see anydsl.Food#getSource
+	 * @model opposite="source"
+	 * @generated
+	 */
+	EList<Food> getFoods();
+
+	/**
+	 * Returns the value of the '<em><b>Origin</b></em>' attribute list. The list contents are of type
+	 * {@link anydsl.Country}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Origin</em>' attribute list isn't clear, there really should be more of a
+	 * description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Origin</em>' attribute list.
+	 * @see anydsl.AnydslPackage#getSource_Origin()
+	 * @model dataType="anydsl.CountryData"
+	 * @generated
+	 */
+	EList<anydsl.Country> getOrigin();
+
+} // Source
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/World.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/World.java
new file mode 100644
index 0000000..ad72636
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/World.java
@@ -0,0 +1,72 @@
+/**
+ */
+package anydsl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>World</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link anydsl.World#getCompanies <em>Companies</em>}</li>
+ * <li>{@link anydsl.World#getFoods <em>Foods</em>}</li>
+ * <li>{@link anydsl.World#getSources <em>Sources</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see anydsl.AnydslPackage#getWorld()
+ * @model annotation="http://www.obeo.fr/dsl/dnc/archetype archetype='MomentInterval'"
+ * @generated
+ */
+public interface World extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Companies</b></em>' containment reference list. The list contents are
+	 * of type {@link anydsl.Company}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Companies</em>' containment reference list isn't clear, there really should
+	 * be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Companies</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getWorld_Companies()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Company> getCompanies();
+
+	/**
+	 * Returns the value of the '<em><b>Foods</b></em>' containment reference list. The list contents are of
+	 * type {@link anydsl.Food}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Foods</em>' containment reference list isn't clear, there really should be
+	 * more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Foods</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getWorld_Foods()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Food> getFoods();
+
+	/**
+	 * Returns the value of the '<em><b>Sources</b></em>' containment reference list. The list contents are of
+	 * type {@link anydsl.Source}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sources</em>' containment reference list isn't clear, there really should be
+	 * more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Sources</em>' containment reference list.
+	 * @see anydsl.AnydslPackage#getWorld_Sources()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Source> getSources();
+
+} // World
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AdressImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AdressImpl.java
new file mode 100644
index 0000000..6f4dcf6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AdressImpl.java
@@ -0,0 +1,271 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.AnydslPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Adress</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.AdressImpl#getZipCode <em>Zip Code</em>}</li>
+ * <li>{@link anydsl.impl.AdressImpl#getCity <em>City</em>}</li>
+ * <li>{@link anydsl.impl.AdressImpl#getCountry <em>Country</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AdressImpl extends MinimalEObjectImpl.Container implements Adress {
+	/**
+	 * The default value of the '{@link #getZipCode() <em>Zip Code</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getZipCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ZIP_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getZipCode() <em>Zip Code</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getZipCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String zipCode = ZIP_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCity() <em>City</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getCity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CITY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCity() <em>City</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getCity()
+	 * @generated
+	 * @ordered
+	 */
+	protected String city = CITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCountry() <em>Country</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getCountry()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final anydsl.Country COUNTRY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCountry() <em>Country</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getCountry()
+	 * @generated
+	 * @ordered
+	 */
+	protected anydsl.Country country = COUNTRY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected AdressImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.ADRESS;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getZipCode() {
+		return zipCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setZipCode(String newZipCode) {
+		String oldZipCode = zipCode;
+		zipCode = newZipCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.ADRESS__ZIP_CODE, oldZipCode,
+					zipCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getCity() {
+		return city;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCity(String newCity) {
+		String oldCity = city;
+		city = newCity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.ADRESS__CITY, oldCity, city));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public anydsl.Country getCountry() {
+		return country;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCountry(anydsl.Country newCountry) {
+		anydsl.Country oldCountry = country;
+		country = newCountry;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.ADRESS__COUNTRY, oldCountry,
+					country));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.ADRESS__ZIP_CODE:
+				return getZipCode();
+			case AnydslPackage.ADRESS__CITY:
+				return getCity();
+			case AnydslPackage.ADRESS__COUNTRY:
+				return getCountry();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.ADRESS__ZIP_CODE:
+				setZipCode((String)newValue);
+				return;
+			case AnydslPackage.ADRESS__CITY:
+				setCity((String)newValue);
+				return;
+			case AnydslPackage.ADRESS__COUNTRY:
+				setCountry((anydsl.Country)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ADRESS__ZIP_CODE:
+				setZipCode(ZIP_CODE_EDEFAULT);
+				return;
+			case AnydslPackage.ADRESS__CITY:
+				setCity(CITY_EDEFAULT);
+				return;
+			case AnydslPackage.ADRESS__COUNTRY:
+				setCountry(COUNTRY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ADRESS__ZIP_CODE:
+				return ZIP_CODE_EDEFAULT == null ? zipCode != null : !ZIP_CODE_EDEFAULT.equals(zipCode);
+			case AnydslPackage.ADRESS__CITY:
+				return CITY_EDEFAULT == null ? city != null : !CITY_EDEFAULT.equals(city);
+			case AnydslPackage.ADRESS__COUNTRY:
+				return COUNTRY_EDEFAULT == null ? country != null : !COUNTRY_EDEFAULT.equals(country);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (zipCode: ");
+		result.append(zipCode);
+		result.append(", city: ");
+		result.append(city);
+		result.append(", country: ");
+		result.append(country);
+		result.append(')');
+		return result.toString();
+	}
+
+} // AdressImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnimalImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnimalImpl.java
new file mode 100644
index 0000000..ef2675b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnimalImpl.java
@@ -0,0 +1,290 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Animal;
+import anydsl.AnydslPackage;
+import anydsl.Food;
+import anydsl.Part;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Animal</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.AnimalImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.AnimalImpl#getFoods <em>Foods</em>}</li>
+ * <li>{@link anydsl.impl.AnimalImpl#getOrigin <em>Origin</em>}</li>
+ * <li>{@link anydsl.impl.AnimalImpl#getPart <em>Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AnimalImpl extends MinimalEObjectImpl.Container implements Animal {
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> name;
+
+	/**
+	 * The cached value of the '{@link #getFoods() <em>Foods</em>}' reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFoods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> foods;
+
+	/**
+	 * The cached value of the '{@link #getOrigin() <em>Origin</em>}' attribute list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getOrigin()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<anydsl.Country> origin;
+
+	/**
+	 * The cached value of the '{@link #getPart() <em>Part</em>}' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPart()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Part> part;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected AnimalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.ANIMAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<String> getName() {
+		if (name == null) {
+			name = new EDataTypeUniqueEList<String>(String.class, this, AnydslPackage.ANIMAL__NAME);
+		}
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getFoods() {
+		if (foods == null) {
+			foods = new EObjectWithInverseResolvingEList<Food>(Food.class, this, AnydslPackage.ANIMAL__FOODS,
+					AnydslPackage.FOOD__SOURCE);
+		}
+		return foods;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<anydsl.Country> getOrigin() {
+		if (origin == null) {
+			origin = new EDataTypeUniqueEList<anydsl.Country>(anydsl.Country.class, this,
+					AnydslPackage.ANIMAL__ORIGIN);
+		}
+		return origin;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Part> getPart() {
+		if (part == null) {
+			part = new EDataTypeUniqueEList<Part>(Part.class, this, AnydslPackage.ANIMAL__PART);
+		}
+		return part;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__FOODS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getFoods()).basicAdd(otherEnd,
+						msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__FOODS:
+				return ((InternalEList<?>)getFoods()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__NAME:
+				return getName();
+			case AnydslPackage.ANIMAL__FOODS:
+				return getFoods();
+			case AnydslPackage.ANIMAL__ORIGIN:
+				return getOrigin();
+			case AnydslPackage.ANIMAL__PART:
+				return getPart();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__NAME:
+				getName().clear();
+				getName().addAll((Collection<? extends String>)newValue);
+				return;
+			case AnydslPackage.ANIMAL__FOODS:
+				getFoods().clear();
+				getFoods().addAll((Collection<? extends Food>)newValue);
+				return;
+			case AnydslPackage.ANIMAL__ORIGIN:
+				getOrigin().clear();
+				getOrigin().addAll((Collection<? extends anydsl.Country>)newValue);
+				return;
+			case AnydslPackage.ANIMAL__PART:
+				getPart().clear();
+				getPart().addAll((Collection<? extends Part>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__NAME:
+				getName().clear();
+				return;
+			case AnydslPackage.ANIMAL__FOODS:
+				getFoods().clear();
+				return;
+			case AnydslPackage.ANIMAL__ORIGIN:
+				getOrigin().clear();
+				return;
+			case AnydslPackage.ANIMAL__PART:
+				getPart().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ANIMAL__NAME:
+				return name != null && !name.isEmpty();
+			case AnydslPackage.ANIMAL__FOODS:
+				return foods != null && !foods.isEmpty();
+			case AnydslPackage.ANIMAL__ORIGIN:
+				return origin != null && !origin.isEmpty();
+			case AnydslPackage.ANIMAL__PART:
+				return part != null && !part.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", origin: ");
+		result.append(origin);
+		result.append(", part: ");
+		result.append(part);
+		result.append(')');
+		return result.toString();
+	}
+
+} // AnimalImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslFactoryImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslFactoryImpl.java
new file mode 100644
index 0000000..20e2016
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslFactoryImpl.java
@@ -0,0 +1,460 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.Animal;
+import anydsl.AnydslFactory;
+import anydsl.AnydslPackage;
+import anydsl.Caliber;
+import anydsl.Chef;
+import anydsl.Color;
+import anydsl.Continent;
+import anydsl.Food;
+import anydsl.Group;
+import anydsl.Kind;
+import anydsl.Part;
+import anydsl.Plant;
+import anydsl.Producer;
+import anydsl.ProductionCompany;
+import anydsl.Recipe;
+import anydsl.Restaurant;
+import anydsl.World;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class AnydslFactoryImpl extends EFactoryImpl implements AnydslFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static AnydslFactory init() {
+		try {
+			AnydslFactory theAnydslFactory = (AnydslFactory)EPackage.Registry.INSTANCE.getEFactory(
+					AnydslPackage.eNS_URI);
+			if (theAnydslFactory != null) {
+				return theAnydslFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new AnydslFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AnydslFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case AnydslPackage.WORLD:
+				return createWorld();
+			case AnydslPackage.PRODUCER:
+				return createProducer();
+			case AnydslPackage.ADRESS:
+				return createAdress();
+			case AnydslPackage.PRODUCTION_COMPANY:
+				return createProductionCompany();
+			case AnydslPackage.RESTAURANT:
+				return createRestaurant();
+			case AnydslPackage.CHEF:
+				return createChef();
+			case AnydslPackage.RECIPE:
+				return createRecipe();
+			case AnydslPackage.FOOD:
+				return createFood();
+			case AnydslPackage.PLANT:
+				return createPlant();
+			case AnydslPackage.ANIMAL:
+				return createAnimal();
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP:
+				return (EObject)createEStringToRecipeMap();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case AnydslPackage.COLOR:
+				return createColorFromString(eDataType, initialValue);
+			case AnydslPackage.CALIBER:
+				return createCaliberFromString(eDataType, initialValue);
+			case AnydslPackage.GROUP:
+				return createGroupFromString(eDataType, initialValue);
+			case AnydslPackage.CONTINENT:
+				return createContinentFromString(eDataType, initialValue);
+			case AnydslPackage.KIND:
+				return createKindFromString(eDataType, initialValue);
+			case AnydslPackage.PART:
+				return createPartFromString(eDataType, initialValue);
+			case AnydslPackage.COUNTRY_DATA:
+				return createCountryDataFromString(eDataType, initialValue);
+			case AnydslPackage.SINGLE_STRING:
+				return createSingleStringFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case AnydslPackage.COLOR:
+				return convertColorToString(eDataType, instanceValue);
+			case AnydslPackage.CALIBER:
+				return convertCaliberToString(eDataType, instanceValue);
+			case AnydslPackage.GROUP:
+				return convertGroupToString(eDataType, instanceValue);
+			case AnydslPackage.CONTINENT:
+				return convertContinentToString(eDataType, instanceValue);
+			case AnydslPackage.KIND:
+				return convertKindToString(eDataType, instanceValue);
+			case AnydslPackage.PART:
+				return convertPartToString(eDataType, instanceValue);
+			case AnydslPackage.COUNTRY_DATA:
+				return convertCountryDataToString(eDataType, instanceValue);
+			case AnydslPackage.SINGLE_STRING:
+				return convertSingleStringToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName()
+						+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public World createWorld() {
+		WorldImpl world = new WorldImpl();
+		return world;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Producer createProducer() {
+		ProducerImpl producer = new ProducerImpl();
+		return producer;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Adress createAdress() {
+		AdressImpl adress = new AdressImpl();
+		return adress;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ProductionCompany createProductionCompany() {
+		ProductionCompanyImpl productionCompany = new ProductionCompanyImpl();
+		return productionCompany;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Restaurant createRestaurant() {
+		RestaurantImpl restaurant = new RestaurantImpl();
+		return restaurant;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Chef createChef() {
+		ChefImpl chef = new ChefImpl();
+		return chef;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Recipe createRecipe() {
+		RecipeImpl recipe = new RecipeImpl();
+		return recipe;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Food createFood() {
+		FoodImpl food = new FoodImpl();
+		return food;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Plant createPlant() {
+		PlantImpl plant = new PlantImpl();
+		return plant;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Animal createAnimal() {
+		AnimalImpl animal = new AnimalImpl();
+		return animal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Map.Entry<String, Recipe> createEStringToRecipeMap() {
+		EStringToRecipeMapImpl eStringToRecipeMap = new EStringToRecipeMapImpl();
+		return eStringToRecipeMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Color createColorFromString(EDataType eDataType, String initialValue) {
+		Color result = Color.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertColorToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Caliber createCaliberFromString(EDataType eDataType, String initialValue) {
+		Caliber result = Caliber.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertCaliberToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Group createGroupFromString(EDataType eDataType, String initialValue) {
+		Group result = Group.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertGroupToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Continent createContinentFromString(EDataType eDataType, String initialValue) {
+		Continent result = Continent.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertContinentToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Kind createKindFromString(EDataType eDataType, String initialValue) {
+		Kind result = Kind.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Part createPartFromString(EDataType eDataType, String initialValue) {
+		Part result = Part.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertPartToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public anydsl.Country createCountryDataFromString(EDataType eDataType, String initialValue) {
+		return (anydsl.Country)super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertCountryDataToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String createSingleStringFromString(EDataType eDataType, String initialValue) {
+		return (String)super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertSingleStringToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AnydslPackage getAnydslPackage() {
+		return (AnydslPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static AnydslPackage getPackage() {
+		return AnydslPackage.eINSTANCE;
+	}
+
+} // AnydslFactoryImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslPackageImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslPackageImpl.java
new file mode 100644
index 0000000..1bbbac6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/AnydslPackageImpl.java
@@ -0,0 +1,1229 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.Animal;
+import anydsl.AnydslFactory;
+import anydsl.AnydslPackage;
+import anydsl.Caliber;
+import anydsl.Chef;
+import anydsl.Color;
+import anydsl.Company;
+import anydsl.Continent;
+import anydsl.Food;
+import anydsl.Group;
+import anydsl.Kind;
+import anydsl.MultiNamedElement;
+import anydsl.NamedElement;
+import anydsl.Part;
+import anydsl.Plant;
+import anydsl.Producer;
+import anydsl.ProductionCompany;
+import anydsl.Recipe;
+import anydsl.Restaurant;
+import anydsl.Source;
+import anydsl.World;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class AnydslPackageImpl extends EPackageImpl implements AnydslPackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass worldEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass multiNamedElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass namedElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass producerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass adressEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass companyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass productionCompanyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass restaurantEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass chefEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass recipeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass foodEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass sourceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass plantEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass animalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass eStringToRecipeMapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum colorEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum caliberEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum groupEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum continentEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum kindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum partEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType countryDataEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType singleStringEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory method {@link #init init()},
+	 * which also performs initialization of the package, or returns the registered package, if one already
+	 * exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see anydsl.AnydslPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private AnydslPackageImpl() {
+		super(eNS_URI, AnydslFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it
+	 * depends.
+	 * <p>
+	 * This method is used to initialize {@link AnydslPackage#eINSTANCE} when that field is accessed. Clients
+	 * should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static AnydslPackage init() {
+		if (isInited)
+			return (AnydslPackage)EPackage.Registry.INSTANCE.getEPackage(AnydslPackage.eNS_URI);
+
+		// Obtain or create and register package
+		AnydslPackageImpl theAnydslPackage = (AnydslPackageImpl)(EPackage.Registry.INSTANCE.get(
+				eNS_URI) instanceof AnydslPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+						: new AnydslPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theAnydslPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theAnydslPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theAnydslPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(AnydslPackage.eNS_URI, theAnydslPackage);
+		return theAnydslPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getWorld() {
+		return worldEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getWorld_Companies() {
+		return (EReference)worldEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getWorld_Foods() {
+		return (EReference)worldEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getWorld_Sources() {
+		return (EReference)worldEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getMultiNamedElement() {
+		return multiNamedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getMultiNamedElement_Name() {
+		return (EAttribute)multiNamedElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getNamedElement() {
+		return namedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Name() {
+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getProducer() {
+		return producerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getProducer_Adress() {
+		return (EReference)producerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getProducer_Company() {
+		return (EReference)producerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getProducer_Foods() {
+		return (EReference)producerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getAdress() {
+		return adressEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getAdress_ZipCode() {
+		return (EAttribute)adressEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getAdress_City() {
+		return (EAttribute)adressEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getAdress_Country() {
+		return (EAttribute)adressEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getCompany() {
+		return companyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getCompany_Adress() {
+		return (EReference)companyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getCompany_World() {
+		return (EReference)companyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getProductionCompany() {
+		return productionCompanyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getProductionCompany_Producers() {
+		return (EReference)productionCompanyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getRestaurant() {
+		return restaurantEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getRestaurant_Chefs() {
+		return (EReference)restaurantEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getRestaurant_Menu() {
+		return (EReference)restaurantEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getChef() {
+		return chefEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getChef_Adress() {
+		return (EReference)chefEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getChef_Recipes() {
+		return (EReference)chefEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getRecipe() {
+		return recipeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getRecipe_Ingredients() {
+		return (EReference)recipeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getFood() {
+		return foodEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFood_Color() {
+		return (EAttribute)foodEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFood_Caliber() {
+		return (EAttribute)foodEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getFood_RelatedFoods() {
+		return (EReference)foodEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFood_Group() {
+		return (EAttribute)foodEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFood_Label() {
+		return (EAttribute)foodEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getFood_Source() {
+		return (EReference)foodEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getFood_Producers() {
+		return (EReference)foodEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__Ripen__Color() {
+		return foodEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__PreferredColor() {
+		return foodEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__NewFood() {
+		return foodEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__SetColor__Food_Color() {
+		return foodEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__SetCaliber__Food_EList() {
+		return foodEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__AcceptedCaliber__Caliber() {
+		return foodEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__Label__String() {
+		return foodEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EOperation getFood__PreferredLabel__String() {
+		return foodEClass.getEOperations().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getSource() {
+		return sourceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getSource_Foods() {
+		return (EReference)sourceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getSource_Origin() {
+		return (EAttribute)sourceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getPlant() {
+		return plantEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getPlant_Kind() {
+		return (EAttribute)plantEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getAnimal() {
+		return animalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getAnimal_Part() {
+		return (EAttribute)animalEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEStringToRecipeMap() {
+		return eStringToRecipeMapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEStringToRecipeMap_Key() {
+		return (EAttribute)eStringToRecipeMapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getEStringToRecipeMap_Value() {
+		return (EReference)eStringToRecipeMapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getColor() {
+		return colorEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getCaliber() {
+		return caliberEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getGroup() {
+		return groupEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getContinent() {
+		return continentEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getKind() {
+		return kindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getPart() {
+		return partEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getCountryData() {
+		return countryDataEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getSingleString() {
+		return singleStringEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AnydslFactory getAnydslFactory() {
+		return (AnydslFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is guarded to have no affect on any
+	 * invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		worldEClass = createEClass(WORLD);
+		createEReference(worldEClass, WORLD__COMPANIES);
+		createEReference(worldEClass, WORLD__FOODS);
+		createEReference(worldEClass, WORLD__SOURCES);
+
+		multiNamedElementEClass = createEClass(MULTI_NAMED_ELEMENT);
+		createEAttribute(multiNamedElementEClass, MULTI_NAMED_ELEMENT__NAME);
+
+		namedElementEClass = createEClass(NAMED_ELEMENT);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+
+		producerEClass = createEClass(PRODUCER);
+		createEReference(producerEClass, PRODUCER__ADRESS);
+		createEReference(producerEClass, PRODUCER__COMPANY);
+		createEReference(producerEClass, PRODUCER__FOODS);
+
+		adressEClass = createEClass(ADRESS);
+		createEAttribute(adressEClass, ADRESS__ZIP_CODE);
+		createEAttribute(adressEClass, ADRESS__CITY);
+		createEAttribute(adressEClass, ADRESS__COUNTRY);
+
+		companyEClass = createEClass(COMPANY);
+		createEReference(companyEClass, COMPANY__ADRESS);
+		createEReference(companyEClass, COMPANY__WORLD);
+
+		productionCompanyEClass = createEClass(PRODUCTION_COMPANY);
+		createEReference(productionCompanyEClass, PRODUCTION_COMPANY__PRODUCERS);
+
+		restaurantEClass = createEClass(RESTAURANT);
+		createEReference(restaurantEClass, RESTAURANT__CHEFS);
+		createEReference(restaurantEClass, RESTAURANT__MENU);
+
+		chefEClass = createEClass(CHEF);
+		createEReference(chefEClass, CHEF__ADRESS);
+		createEReference(chefEClass, CHEF__RECIPES);
+
+		recipeEClass = createEClass(RECIPE);
+		createEReference(recipeEClass, RECIPE__INGREDIENTS);
+
+		foodEClass = createEClass(FOOD);
+		createEAttribute(foodEClass, FOOD__COLOR);
+		createEAttribute(foodEClass, FOOD__CALIBER);
+		createEReference(foodEClass, FOOD__RELATED_FOODS);
+		createEAttribute(foodEClass, FOOD__GROUP);
+		createEAttribute(foodEClass, FOOD__LABEL);
+		createEReference(foodEClass, FOOD__SOURCE);
+		createEReference(foodEClass, FOOD__PRODUCERS);
+		createEOperation(foodEClass, FOOD___RIPEN__COLOR);
+		createEOperation(foodEClass, FOOD___PREFERRED_COLOR);
+		createEOperation(foodEClass, FOOD___NEW_FOOD);
+		createEOperation(foodEClass, FOOD___SET_COLOR__FOOD_COLOR);
+		createEOperation(foodEClass, FOOD___SET_CALIBER__FOOD_ELIST);
+		createEOperation(foodEClass, FOOD___ACCEPTED_CALIBER__CALIBER);
+		createEOperation(foodEClass, FOOD___LABEL__STRING);
+		createEOperation(foodEClass, FOOD___PREFERRED_LABEL__STRING);
+
+		sourceEClass = createEClass(SOURCE);
+		createEReference(sourceEClass, SOURCE__FOODS);
+		createEAttribute(sourceEClass, SOURCE__ORIGIN);
+
+		plantEClass = createEClass(PLANT);
+		createEAttribute(plantEClass, PLANT__KIND);
+
+		animalEClass = createEClass(ANIMAL);
+		createEAttribute(animalEClass, ANIMAL__PART);
+
+		eStringToRecipeMapEClass = createEClass(ESTRING_TO_RECIPE_MAP);
+		createEAttribute(eStringToRecipeMapEClass, ESTRING_TO_RECIPE_MAP__KEY);
+		createEReference(eStringToRecipeMapEClass, ESTRING_TO_RECIPE_MAP__VALUE);
+
+		// Create enums
+		colorEEnum = createEEnum(COLOR);
+		caliberEEnum = createEEnum(CALIBER);
+		groupEEnum = createEEnum(GROUP);
+		continentEEnum = createEEnum(CONTINENT);
+		kindEEnum = createEEnum(KIND);
+		partEEnum = createEEnum(PART);
+
+		// Create data types
+		countryDataEDataType = createEDataType(COUNTRY_DATA);
+		singleStringEDataType = createEDataType(SINGLE_STRING);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This method is guarded to have no affect
+	 * on any invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		producerEClass.getESuperTypes().add(this.getNamedElement());
+		companyEClass.getESuperTypes().add(this.getNamedElement());
+		productionCompanyEClass.getESuperTypes().add(this.getCompany());
+		restaurantEClass.getESuperTypes().add(this.getCompany());
+		chefEClass.getESuperTypes().add(this.getNamedElement());
+		recipeEClass.getESuperTypes().add(this.getNamedElement());
+		foodEClass.getESuperTypes().add(this.getNamedElement());
+		sourceEClass.getESuperTypes().add(this.getMultiNamedElement());
+		plantEClass.getESuperTypes().add(this.getSource());
+		animalEClass.getESuperTypes().add(this.getSource());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(worldEClass, World.class, "World", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getWorld_Companies(), this.getCompany(), null, "companies", null, 0, -1, World.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getWorld_Foods(), this.getFood(), null, "foods", null, 0, -1, World.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getWorld_Sources(), this.getSource(), null, "sources", null, 0, -1, World.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(multiNamedElementEClass, MultiNamedElement.class, "MultiNamedElement", IS_ABSTRACT,
+				IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMultiNamedElement_Name(), this.getSingleString(), "name", null, 0, -1,
+				MultiNamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getNamedElement_Name(), this.getSingleString(), "name", null, 0, 1, NamedElement.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(producerEClass, Producer.class, "Producer", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProducer_Adress(), this.getAdress(), null, "adress", null, 0, 1, Producer.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProducer_Company(), this.getCompany(), null, "company", null, 0, 1, Producer.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProducer_Foods(), this.getFood(), this.getFood_Producers(), "foods", null, 0, -1,
+				Producer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(adressEClass, Adress.class, "Adress", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAdress_ZipCode(), ecorePackage.getEString(), "zipCode", null, 0, 1, Adress.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getAdress_City(), ecorePackage.getEString(), "city", null, 0, 1, Adress.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getAdress_Country(), this.getCountryData(), "country", null, 0, 1, Adress.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(companyEClass, Company.class, "Company", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCompany_Adress(), this.getAdress(), null, "adress", null, 0, 1, Company.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCompany_World(), this.getWorld(), null, "world", null, 0, 1, Company.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(productionCompanyEClass, ProductionCompany.class, "ProductionCompany", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProductionCompany_Producers(), this.getProducer(), null, "producers", null, 0, -1,
+				ProductionCompany.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(restaurantEClass, Restaurant.class, "Restaurant", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getRestaurant_Chefs(), this.getChef(), null, "chefs", null, 0, -1, Restaurant.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRestaurant_Menu(), this.getEStringToRecipeMap(), null, "menu", null, 0, -1,
+				Restaurant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chefEClass, Chef.class, "Chef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChef_Adress(), this.getAdress(), null, "adress", null, 0, 1, Chef.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChef_Recipes(), this.getRecipe(), null, "recipes", null, 0, -1, Chef.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(recipeEClass, Recipe.class, "Recipe", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getRecipe_Ingredients(), this.getFood(), null, "ingredients", null, 0, -1,
+				Recipe.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(foodEClass, Food.class, "Food", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFood_Color(), this.getColor(), "color", null, 0, -1, Food.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFood_Caliber(), this.getCaliber(), "caliber", null, 0, 1, Food.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFood_RelatedFoods(), this.getFood(), null, "relatedFoods", null, 0, -1, Food.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFood_Group(), this.getGroup(), "group", null, 0, 1, Food.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFood_Label(), ecorePackage.getEString(), "label", null, 0, 1, Food.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getFood_Source(), this.getSource(), this.getSource_Foods(), "source", null, 0, 1,
+				Food.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFood_Producers(), this.getProducer(), this.getProducer_Foods(), "producers", null,
+				0, -1, Food.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		EOperation op = initEOperation(getFood__Ripen__Color(), ecorePackage.getEBoolean(), "ripen", 0, 1,
+				IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getColor(), "color", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getFood__PreferredColor(), this.getColor(), "preferredColor", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+
+		initEOperation(getFood__NewFood(), this.getFood(), "newFood", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getFood__SetColor__Food_Color(), null, "setColor", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getFood(), "food", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getColor(), "newColor", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getFood__SetCaliber__Food_EList(), null, "setCaliber", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+		addEParameter(op, this.getFood(), "food", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getCaliber(), "newCaliber", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getFood__AcceptedCaliber__Caliber(), ecorePackage.getEBoolean(),
+				"acceptedCaliber", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getCaliber(), "caliber", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getFood__Label__String(), null, "label", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "text", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getFood__PreferredLabel__String(), ecorePackage.getEString(), "preferredLabel", 0,
+				1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "text", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(sourceEClass, Source.class, "Source", IS_ABSTRACT, IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSource_Foods(), this.getFood(), this.getFood_Source(), "foods", null, 0, -1,
+				Source.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSource_Origin(), this.getCountryData(), "origin", null, 0, -1, Source.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(plantEClass, Plant.class, "Plant", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPlant_Kind(), this.getKind(), "kind", null, 0, 1, Plant.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(animalEClass, Animal.class, "Animal", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAnimal_Part(), this.getPart(), "part", null, 0, -1, Animal.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(eStringToRecipeMapEClass, Map.Entry.class, "EStringToRecipeMap", !IS_ABSTRACT,
+				!IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEStringToRecipeMap_Key(), ecorePackage.getEString(), "key", null, 0, 1,
+				Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEStringToRecipeMap_Value(), this.getRecipe(), null, "value", null, 0, 1,
+				Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(colorEEnum, Color.class, "Color");
+		addEEnumLiteral(colorEEnum, Color.BLACK);
+		addEEnumLiteral(colorEEnum, Color.RED);
+		addEEnumLiteral(colorEEnum, Color.GREEN);
+		addEEnumLiteral(colorEEnum, Color.YELLOW);
+		addEEnumLiteral(colorEEnum, Color.ORANGE);
+		addEEnumLiteral(colorEEnum, Color.BROWN);
+		addEEnumLiteral(colorEEnum, Color.PINK);
+		addEEnumLiteral(colorEEnum, Color.PAL_PINK);
+		addEEnumLiteral(colorEEnum, Color.VERY_YELLOW);
+		addEEnumLiteral(colorEEnum, Color.WHITE);
+
+		initEEnum(caliberEEnum, Caliber.class, "Caliber");
+		addEEnumLiteral(caliberEEnum, Caliber.S);
+		addEEnumLiteral(caliberEEnum, Caliber.M);
+		addEEnumLiteral(caliberEEnum, Caliber.L);
+		addEEnumLiteral(caliberEEnum, Caliber.XL);
+
+		initEEnum(groupEEnum, Group.class, "Group");
+		addEEnumLiteral(groupEEnum, Group.WATER);
+		addEEnumLiteral(groupEEnum, Group.DAIRY);
+		addEEnumLiteral(groupEEnum, Group.FRUIT);
+		addEEnumLiteral(groupEEnum, Group.GRAIN);
+		addEEnumLiteral(groupEEnum, Group.PROTEIN);
+		addEEnumLiteral(groupEEnum, Group.SWEET);
+		addEEnumLiteral(groupEEnum, Group.VEGETABLE);
+		addEEnumLiteral(groupEEnum, Group.ALCOHOL);
+
+		initEEnum(continentEEnum, Continent.class, "Continent");
+		addEEnumLiteral(continentEEnum, Continent.EUROPE);
+		addEEnumLiteral(continentEEnum, Continent.ASIA);
+		addEEnumLiteral(continentEEnum, Continent.AFRICA);
+		addEEnumLiteral(continentEEnum, Continent.AMERICA);
+		addEEnumLiteral(continentEEnum, Continent.AUSTRALIA);
+		addEEnumLiteral(continentEEnum, Continent.ANTARCTICA);
+
+		initEEnum(kindEEnum, Kind.class, "Kind");
+		addEEnumLiteral(kindEEnum, Kind.OTHER);
+		addEEnumLiteral(kindEEnum, Kind.SEED);
+		addEEnumLiteral(kindEEnum, Kind.OILSEED);
+		addEEnumLiteral(kindEEnum, Kind.TREE);
+		addEEnumLiteral(kindEEnum, Kind.ROOT);
+		addEEnumLiteral(kindEEnum, Kind.BULB);
+		addEEnumLiteral(kindEEnum, Kind.LEAF);
+		addEEnumLiteral(kindEEnum, Kind.STEM);
+		addEEnumLiteral(kindEEnum, Kind.FLOWER);
+		addEEnumLiteral(kindEEnum, Kind.INFLORESCENCE);
+		addEEnumLiteral(kindEEnum, Kind.SPICE);
+
+		initEEnum(partEEnum, Part.class, "Part");
+		addEEnumLiteral(partEEnum, Part.OTHER);
+		addEEnumLiteral(partEEnum, Part.MUSCLE);
+		addEEnumLiteral(partEEnum, Part.ORGAN);
+
+		// Initialize data types
+		initEDataType(countryDataEDataType, anydsl.Country.class, "CountryData", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(singleStringEDataType, String.class, "SingleString", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.obeo.fr/dsl/dnc/archetype
+		createArchetypeAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.obeo.fr/dsl/dnc/archetype</b>. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void createArchetypeAnnotations() {
+		String source = "http://www.obeo.fr/dsl/dnc/archetype";
+		addAnnotation(worldEClass, source, new String[] {"archetype", "MomentInterval" });
+	}
+
+} // AnydslPackageImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ChefImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ChefImpl.java
new file mode 100644
index 0000000..03da075
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ChefImpl.java
@@ -0,0 +1,291 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.AnydslPackage;
+import anydsl.Chef;
+import anydsl.Recipe;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Chef</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.ChefImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.ChefImpl#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.impl.ChefImpl#getRecipes <em>Recipes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChefImpl extends MinimalEObjectImpl.Container implements Chef {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAdress() <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getAdress()
+	 * @generated
+	 * @ordered
+	 */
+	protected Adress adress;
+
+	/**
+	 * The cached value of the '{@link #getRecipes() <em>Recipes</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getRecipes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Recipe> recipes;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ChefImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.CHEF;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.CHEF__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Adress getAdress() {
+		return adress;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetAdress(Adress newAdress, NotificationChain msgs) {
+		Adress oldAdress = adress;
+		adress = newAdress;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					AnydslPackage.CHEF__ADRESS, oldAdress, newAdress);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setAdress(Adress newAdress) {
+		if (newAdress != adress) {
+			NotificationChain msgs = null;
+			if (adress != null)
+				msgs = ((InternalEObject)adress).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.CHEF__ADRESS, null, msgs);
+			if (newAdress != null)
+				msgs = ((InternalEObject)newAdress).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.CHEF__ADRESS, null, msgs);
+			msgs = basicSetAdress(newAdress, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.CHEF__ADRESS, newAdress,
+					newAdress));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Recipe> getRecipes() {
+		if (recipes == null) {
+			recipes = new EObjectContainmentEList<Recipe>(Recipe.class, this, AnydslPackage.CHEF__RECIPES);
+		}
+		return recipes;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.CHEF__ADRESS:
+				return basicSetAdress(null, msgs);
+			case AnydslPackage.CHEF__RECIPES:
+				return ((InternalEList<?>)getRecipes()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.CHEF__NAME:
+				return getName();
+			case AnydslPackage.CHEF__ADRESS:
+				return getAdress();
+			case AnydslPackage.CHEF__RECIPES:
+				return getRecipes();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.CHEF__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.CHEF__ADRESS:
+				setAdress((Adress)newValue);
+				return;
+			case AnydslPackage.CHEF__RECIPES:
+				getRecipes().clear();
+				getRecipes().addAll((Collection<? extends Recipe>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.CHEF__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.CHEF__ADRESS:
+				setAdress((Adress)null);
+				return;
+			case AnydslPackage.CHEF__RECIPES:
+				getRecipes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.CHEF__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.CHEF__ADRESS:
+				return adress != null;
+			case AnydslPackage.CHEF__RECIPES:
+				return recipes != null && !recipes.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ChefImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/EStringToRecipeMapImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/EStringToRecipeMapImpl.java
new file mode 100644
index 0000000..052ecbf
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/EStringToRecipeMapImpl.java
@@ -0,0 +1,307 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.AnydslPackage;
+import anydsl.Recipe;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>EString To Recipe Map</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.EStringToRecipeMapImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link anydsl.impl.EStringToRecipeMapImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EStringToRecipeMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String, Recipe> {
+	/**
+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' reference. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getTypedValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Recipe value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EStringToRecipeMapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.ESTRING_TO_RECIPE_MAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getTypedKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setTypedKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.ESTRING_TO_RECIPE_MAP__KEY,
+					oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Recipe getTypedValue() {
+		if (value != null && value.eIsProxy()) {
+			InternalEObject oldValue = (InternalEObject)value;
+			value = (Recipe)eResolveProxy(oldValue);
+			if (value != oldValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE, oldValue, value));
+			}
+		}
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Recipe basicGetTypedValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setTypedValue(Recipe newValue) {
+		Recipe oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE,
+					oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__KEY:
+				return getTypedKey();
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE:
+				if (resolve)
+					return getTypedValue();
+				return basicGetTypedValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__KEY:
+				setTypedKey((String)newValue);
+				return;
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE:
+				setTypedValue((Recipe)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__KEY:
+				setTypedKey(KEY_EDEFAULT);
+				return;
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE:
+				setTypedValue((Recipe)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__KEY:
+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP__VALUE:
+				return value != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected int hash = -1;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getHash() {
+		if (hash == -1) {
+			Object theKey = getKey();
+			hash = (theKey == null ? 0 : theKey.hashCode());
+		}
+		return hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setHash(int hash) {
+		this.hash = hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getKey() {
+		return getTypedKey();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setKey(String key) {
+		setTypedKey(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Recipe getValue() {
+		return getTypedValue();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Recipe setValue(Recipe value) {
+		Recipe oldValue = getValue();
+		setTypedValue(value);
+		return oldValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EMap<String, Recipe> getEMap() {
+		EObject container = eContainer();
+		return container == null ? null : (EMap<String, Recipe>)container.eGet(eContainmentFeature());
+	}
+
+} // EStringToRecipeMapImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/FoodImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/FoodImpl.java
new file mode 100644
index 0000000..4708ff3
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/FoodImpl.java
@@ -0,0 +1,695 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.AnydslPackage;
+import anydsl.Caliber;
+import anydsl.Color;
+import anydsl.Food;
+import anydsl.Group;
+import anydsl.Producer;
+import anydsl.Source;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Food</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.FoodImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getColor <em>Color</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getCaliber <em>Caliber</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getRelatedFoods <em>Related Foods</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getLabel <em>Label</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getSource <em>Source</em>}</li>
+ * <li>{@link anydsl.impl.FoodImpl#getProducers <em>Producers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FoodImpl extends MinimalEObjectImpl.Container implements Food {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getColor() <em>Color</em>}' attribute list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Color> color;
+
+	/**
+	 * The default value of the '{@link #getCaliber() <em>Caliber</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getCaliber()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Caliber CALIBER_EDEFAULT = Caliber.S;
+
+	/**
+	 * The cached value of the '{@link #getCaliber() <em>Caliber</em>}' attribute. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getCaliber()
+	 * @generated
+	 * @ordered
+	 */
+	protected Caliber caliber = CALIBER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getRelatedFoods() <em>Related Foods</em>}' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getRelatedFoods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> relatedFoods;
+
+	/**
+	 * The default value of the '{@link #getGroup() <em>Group</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Group GROUP_EDEFAULT = Group.WATER;
+
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected Group group = GROUP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected Source source;
+
+	/**
+	 * The cached value of the '{@link #getProducers() <em>Producers</em>}' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getProducers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Producer> producers;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected FoodImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.FOOD;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.FOOD__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Color> getColor() {
+		if (color == null) {
+			color = new EDataTypeUniqueEList<Color>(Color.class, this, AnydslPackage.FOOD__COLOR);
+		}
+		return color;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Caliber getCaliber() {
+		return caliber;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCaliber(Caliber newCaliber) {
+		Caliber oldCaliber = caliber;
+		caliber = newCaliber == null ? CALIBER_EDEFAULT : newCaliber;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.FOOD__CALIBER, oldCaliber,
+					caliber));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getRelatedFoods() {
+		if (relatedFoods == null) {
+			relatedFoods = new EObjectResolvingEList<Food>(Food.class, this,
+					AnydslPackage.FOOD__RELATED_FOODS);
+		}
+		return relatedFoods;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Group getGroup() {
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setGroup(Group newGroup) {
+		Group oldGroup = group;
+		group = newGroup == null ? GROUP_EDEFAULT : newGroup;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.FOOD__GROUP, oldGroup,
+					group));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.FOOD__LABEL, oldLabel,
+					label));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Source getSource() {
+		if (source != null && source.eIsProxy()) {
+			InternalEObject oldSource = (InternalEObject)source;
+			source = (Source)eResolveProxy(oldSource);
+			if (source != oldSource) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, AnydslPackage.FOOD__SOURCE,
+							oldSource, source));
+			}
+		}
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Source basicGetSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetSource(Source newSource, NotificationChain msgs) {
+		Source oldSource = source;
+		source = newSource;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					AnydslPackage.FOOD__SOURCE, oldSource, newSource);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setSource(Source newSource) {
+		if (newSource != source) {
+			NotificationChain msgs = null;
+			if (source != null)
+				msgs = ((InternalEObject)source).eInverseRemove(this, AnydslPackage.SOURCE__FOODS,
+						Source.class, msgs);
+			if (newSource != null)
+				msgs = ((InternalEObject)newSource).eInverseAdd(this, AnydslPackage.SOURCE__FOODS,
+						Source.class, msgs);
+			msgs = basicSetSource(newSource, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.FOOD__SOURCE, newSource,
+					newSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Producer> getProducers() {
+		if (producers == null) {
+			producers = new EObjectWithInverseResolvingEList.ManyInverse<Producer>(Producer.class, this,
+					AnydslPackage.FOOD__PRODUCERS, AnydslPackage.PRODUCER__FOODS);
+		}
+		return producers;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean ripen(Color color) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Color preferredColor() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Food newFood() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setColor(Food food, Color newColor) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCaliber(Food food, EList<Caliber> newCaliber) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean acceptedCaliber(Caliber caliber) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void label(String text) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String preferredLabel(String text) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__SOURCE:
+				if (source != null)
+					msgs = ((InternalEObject)source).eInverseRemove(this, AnydslPackage.SOURCE__FOODS,
+							Source.class, msgs);
+				return basicSetSource((Source)otherEnd, msgs);
+			case AnydslPackage.FOOD__PRODUCERS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getProducers()).basicAdd(otherEnd,
+						msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__SOURCE:
+				return basicSetSource(null, msgs);
+			case AnydslPackage.FOOD__PRODUCERS:
+				return ((InternalEList<?>)getProducers()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__NAME:
+				return getName();
+			case AnydslPackage.FOOD__COLOR:
+				return getColor();
+			case AnydslPackage.FOOD__CALIBER:
+				return getCaliber();
+			case AnydslPackage.FOOD__RELATED_FOODS:
+				return getRelatedFoods();
+			case AnydslPackage.FOOD__GROUP:
+				return getGroup();
+			case AnydslPackage.FOOD__LABEL:
+				return getLabel();
+			case AnydslPackage.FOOD__SOURCE:
+				if (resolve)
+					return getSource();
+				return basicGetSource();
+			case AnydslPackage.FOOD__PRODUCERS:
+				return getProducers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.FOOD__COLOR:
+				getColor().clear();
+				getColor().addAll((Collection<? extends Color>)newValue);
+				return;
+			case AnydslPackage.FOOD__CALIBER:
+				setCaliber((Caliber)newValue);
+				return;
+			case AnydslPackage.FOOD__RELATED_FOODS:
+				getRelatedFoods().clear();
+				getRelatedFoods().addAll((Collection<? extends Food>)newValue);
+				return;
+			case AnydslPackage.FOOD__GROUP:
+				setGroup((Group)newValue);
+				return;
+			case AnydslPackage.FOOD__LABEL:
+				setLabel((String)newValue);
+				return;
+			case AnydslPackage.FOOD__SOURCE:
+				setSource((Source)newValue);
+				return;
+			case AnydslPackage.FOOD__PRODUCERS:
+				getProducers().clear();
+				getProducers().addAll((Collection<? extends Producer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.FOOD__COLOR:
+				getColor().clear();
+				return;
+			case AnydslPackage.FOOD__CALIBER:
+				setCaliber(CALIBER_EDEFAULT);
+				return;
+			case AnydslPackage.FOOD__RELATED_FOODS:
+				getRelatedFoods().clear();
+				return;
+			case AnydslPackage.FOOD__GROUP:
+				setGroup(GROUP_EDEFAULT);
+				return;
+			case AnydslPackage.FOOD__LABEL:
+				setLabel(LABEL_EDEFAULT);
+				return;
+			case AnydslPackage.FOOD__SOURCE:
+				setSource((Source)null);
+				return;
+			case AnydslPackage.FOOD__PRODUCERS:
+				getProducers().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.FOOD__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.FOOD__COLOR:
+				return color != null && !color.isEmpty();
+			case AnydslPackage.FOOD__CALIBER:
+				return caliber != CALIBER_EDEFAULT;
+			case AnydslPackage.FOOD__RELATED_FOODS:
+				return relatedFoods != null && !relatedFoods.isEmpty();
+			case AnydslPackage.FOOD__GROUP:
+				return group != GROUP_EDEFAULT;
+			case AnydslPackage.FOOD__LABEL:
+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+			case AnydslPackage.FOOD__SOURCE:
+				return source != null;
+			case AnydslPackage.FOOD__PRODUCERS:
+				return producers != null && !producers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case AnydslPackage.FOOD___RIPEN__COLOR:
+				return ripen((Color)arguments.get(0));
+			case AnydslPackage.FOOD___PREFERRED_COLOR:
+				return preferredColor();
+			case AnydslPackage.FOOD___NEW_FOOD:
+				return newFood();
+			case AnydslPackage.FOOD___SET_COLOR__FOOD_COLOR:
+				setColor((Food)arguments.get(0), (Color)arguments.get(1));
+				return null;
+			case AnydslPackage.FOOD___SET_CALIBER__FOOD_ELIST:
+				setCaliber((Food)arguments.get(0), (EList<Caliber>)arguments.get(1));
+				return null;
+			case AnydslPackage.FOOD___ACCEPTED_CALIBER__CALIBER:
+				return acceptedCaliber((Caliber)arguments.get(0));
+			case AnydslPackage.FOOD___LABEL__STRING:
+				label((String)arguments.get(0));
+				return null;
+			case AnydslPackage.FOOD___PREFERRED_LABEL__STRING:
+				return preferredLabel((String)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", color: ");
+		result.append(color);
+		result.append(", caliber: ");
+		result.append(caliber);
+		result.append(", group: ");
+		result.append(group);
+		result.append(", label: ");
+		result.append(label);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FoodImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/PlantImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/PlantImpl.java
new file mode 100644
index 0000000..7f529ab
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/PlantImpl.java
@@ -0,0 +1,310 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.AnydslPackage;
+import anydsl.Food;
+import anydsl.Kind;
+import anydsl.Plant;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Plant</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.PlantImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.PlantImpl#getFoods <em>Foods</em>}</li>
+ * <li>{@link anydsl.impl.PlantImpl#getOrigin <em>Origin</em>}</li>
+ * <li>{@link anydsl.impl.PlantImpl#getKind <em>Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PlantImpl extends MinimalEObjectImpl.Container implements Plant {
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> name;
+
+	/**
+	 * The cached value of the '{@link #getFoods() <em>Foods</em>}' reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFoods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> foods;
+
+	/**
+	 * The cached value of the '{@link #getOrigin() <em>Origin</em>}' attribute list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getOrigin()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<anydsl.Country> origin;
+
+	/**
+	 * The default value of the '{@link #getKind() <em>Kind</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getKind()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Kind KIND_EDEFAULT = Kind.OTHER;
+
+	/**
+	 * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getKind()
+	 * @generated
+	 * @ordered
+	 */
+	protected Kind kind = KIND_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected PlantImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.PLANT;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<String> getName() {
+		if (name == null) {
+			name = new EDataTypeUniqueEList<String>(String.class, this, AnydslPackage.PLANT__NAME);
+		}
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getFoods() {
+		if (foods == null) {
+			foods = new EObjectWithInverseResolvingEList<Food>(Food.class, this, AnydslPackage.PLANT__FOODS,
+					AnydslPackage.FOOD__SOURCE);
+		}
+		return foods;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<anydsl.Country> getOrigin() {
+		if (origin == null) {
+			origin = new EDataTypeUniqueEList<anydsl.Country>(anydsl.Country.class, this,
+					AnydslPackage.PLANT__ORIGIN);
+		}
+		return origin;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Kind getKind() {
+		return kind;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setKind(Kind newKind) {
+		Kind oldKind = kind;
+		kind = newKind == null ? KIND_EDEFAULT : newKind;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PLANT__KIND, oldKind, kind));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__FOODS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getFoods()).basicAdd(otherEnd,
+						msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__FOODS:
+				return ((InternalEList<?>)getFoods()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__NAME:
+				return getName();
+			case AnydslPackage.PLANT__FOODS:
+				return getFoods();
+			case AnydslPackage.PLANT__ORIGIN:
+				return getOrigin();
+			case AnydslPackage.PLANT__KIND:
+				return getKind();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__NAME:
+				getName().clear();
+				getName().addAll((Collection<? extends String>)newValue);
+				return;
+			case AnydslPackage.PLANT__FOODS:
+				getFoods().clear();
+				getFoods().addAll((Collection<? extends Food>)newValue);
+				return;
+			case AnydslPackage.PLANT__ORIGIN:
+				getOrigin().clear();
+				getOrigin().addAll((Collection<? extends anydsl.Country>)newValue);
+				return;
+			case AnydslPackage.PLANT__KIND:
+				setKind((Kind)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__NAME:
+				getName().clear();
+				return;
+			case AnydslPackage.PLANT__FOODS:
+				getFoods().clear();
+				return;
+			case AnydslPackage.PLANT__ORIGIN:
+				getOrigin().clear();
+				return;
+			case AnydslPackage.PLANT__KIND:
+				setKind(KIND_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PLANT__NAME:
+				return name != null && !name.isEmpty();
+			case AnydslPackage.PLANT__FOODS:
+				return foods != null && !foods.isEmpty();
+			case AnydslPackage.PLANT__ORIGIN:
+				return origin != null && !origin.isEmpty();
+			case AnydslPackage.PLANT__KIND:
+				return kind != KIND_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", origin: ");
+		result.append(origin);
+		result.append(", kind: ");
+		result.append(kind);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PlantImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProducerImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProducerImpl.java
new file mode 100644
index 0000000..caa944c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProducerImpl.java
@@ -0,0 +1,374 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.AnydslPackage;
+import anydsl.Company;
+import anydsl.Food;
+import anydsl.Producer;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Producer</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.ProducerImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.ProducerImpl#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.impl.ProducerImpl#getCompany <em>Company</em>}</li>
+ * <li>{@link anydsl.impl.ProducerImpl#getFoods <em>Foods</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProducerImpl extends MinimalEObjectImpl.Container implements Producer {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAdress() <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getAdress()
+	 * @generated
+	 * @ordered
+	 */
+	protected Adress adress;
+
+	/**
+	 * The cached value of the '{@link #getCompany() <em>Company</em>}' reference. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getCompany()
+	 * @generated
+	 * @ordered
+	 */
+	protected Company company;
+
+	/**
+	 * The cached value of the '{@link #getFoods() <em>Foods</em>}' reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFoods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> foods;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ProducerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.PRODUCER;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCER__NAME, oldName,
+					name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Adress getAdress() {
+		return adress;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetAdress(Adress newAdress, NotificationChain msgs) {
+		Adress oldAdress = adress;
+		adress = newAdress;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					AnydslPackage.PRODUCER__ADRESS, oldAdress, newAdress);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setAdress(Adress newAdress) {
+		if (newAdress != adress) {
+			NotificationChain msgs = null;
+			if (adress != null)
+				msgs = ((InternalEObject)adress).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.PRODUCER__ADRESS, null, msgs);
+			if (newAdress != null)
+				msgs = ((InternalEObject)newAdress).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.PRODUCER__ADRESS, null, msgs);
+			msgs = basicSetAdress(newAdress, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCER__ADRESS, newAdress,
+					newAdress));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Company getCompany() {
+		if (company != null && company.eIsProxy()) {
+			InternalEObject oldCompany = (InternalEObject)company;
+			company = (Company)eResolveProxy(oldCompany);
+			if (company != oldCompany) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, AnydslPackage.PRODUCER__COMPANY,
+							oldCompany, company));
+			}
+		}
+		return company;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Company basicGetCompany() {
+		return company;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCompany(Company newCompany) {
+		Company oldCompany = company;
+		company = newCompany;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCER__COMPANY, oldCompany,
+					company));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getFoods() {
+		if (foods == null) {
+			foods = new EObjectWithInverseResolvingEList.ManyInverse<Food>(Food.class, this,
+					AnydslPackage.PRODUCER__FOODS, AnydslPackage.FOOD__PRODUCERS);
+		}
+		return foods;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__FOODS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getFoods()).basicAdd(otherEnd,
+						msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__ADRESS:
+				return basicSetAdress(null, msgs);
+			case AnydslPackage.PRODUCER__FOODS:
+				return ((InternalEList<?>)getFoods()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__NAME:
+				return getName();
+			case AnydslPackage.PRODUCER__ADRESS:
+				return getAdress();
+			case AnydslPackage.PRODUCER__COMPANY:
+				if (resolve)
+					return getCompany();
+				return basicGetCompany();
+			case AnydslPackage.PRODUCER__FOODS:
+				return getFoods();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.PRODUCER__ADRESS:
+				setAdress((Adress)newValue);
+				return;
+			case AnydslPackage.PRODUCER__COMPANY:
+				setCompany((Company)newValue);
+				return;
+			case AnydslPackage.PRODUCER__FOODS:
+				getFoods().clear();
+				getFoods().addAll((Collection<? extends Food>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.PRODUCER__ADRESS:
+				setAdress((Adress)null);
+				return;
+			case AnydslPackage.PRODUCER__COMPANY:
+				setCompany((Company)null);
+				return;
+			case AnydslPackage.PRODUCER__FOODS:
+				getFoods().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCER__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.PRODUCER__ADRESS:
+				return adress != null;
+			case AnydslPackage.PRODUCER__COMPANY:
+				return company != null;
+			case AnydslPackage.PRODUCER__FOODS:
+				return foods != null && !foods.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ProducerImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProductionCompanyImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProductionCompanyImpl.java
new file mode 100644
index 0000000..f09539a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/ProductionCompanyImpl.java
@@ -0,0 +1,358 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.AnydslPackage;
+import anydsl.Producer;
+import anydsl.ProductionCompany;
+import anydsl.World;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Production Company</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.ProductionCompanyImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.ProductionCompanyImpl#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.impl.ProductionCompanyImpl#getWorld <em>World</em>}</li>
+ * <li>{@link anydsl.impl.ProductionCompanyImpl#getProducers <em>Producers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProductionCompanyImpl extends MinimalEObjectImpl.Container implements ProductionCompany {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAdress() <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getAdress()
+	 * @generated
+	 * @ordered
+	 */
+	protected Adress adress;
+
+	/**
+	 * The cached value of the '{@link #getWorld() <em>World</em>}' reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getWorld()
+	 * @generated
+	 * @ordered
+	 */
+	protected World world;
+
+	/**
+	 * The cached value of the '{@link #getProducers() <em>Producers</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getProducers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Producer> producers;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ProductionCompanyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.PRODUCTION_COMPANY;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCTION_COMPANY__NAME,
+					oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Adress getAdress() {
+		return adress;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetAdress(Adress newAdress, NotificationChain msgs) {
+		Adress oldAdress = adress;
+		adress = newAdress;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					AnydslPackage.PRODUCTION_COMPANY__ADRESS, oldAdress, newAdress);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setAdress(Adress newAdress) {
+		if (newAdress != adress) {
+			NotificationChain msgs = null;
+			if (adress != null)
+				msgs = ((InternalEObject)adress).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.PRODUCTION_COMPANY__ADRESS, null, msgs);
+			if (newAdress != null)
+				msgs = ((InternalEObject)newAdress).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.PRODUCTION_COMPANY__ADRESS, null, msgs);
+			msgs = basicSetAdress(newAdress, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCTION_COMPANY__ADRESS,
+					newAdress, newAdress));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public World getWorld() {
+		if (world != null && world.eIsProxy()) {
+			InternalEObject oldWorld = (InternalEObject)world;
+			world = (World)eResolveProxy(oldWorld);
+			if (world != oldWorld) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							AnydslPackage.PRODUCTION_COMPANY__WORLD, oldWorld, world));
+			}
+		}
+		return world;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public World basicGetWorld() {
+		return world;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setWorld(World newWorld) {
+		World oldWorld = world;
+		world = newWorld;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.PRODUCTION_COMPANY__WORLD,
+					oldWorld, world));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Producer> getProducers() {
+		if (producers == null) {
+			producers = new EObjectContainmentEList<Producer>(Producer.class, this,
+					AnydslPackage.PRODUCTION_COMPANY__PRODUCERS);
+		}
+		return producers;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCTION_COMPANY__ADRESS:
+				return basicSetAdress(null, msgs);
+			case AnydslPackage.PRODUCTION_COMPANY__PRODUCERS:
+				return ((InternalEList<?>)getProducers()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCTION_COMPANY__NAME:
+				return getName();
+			case AnydslPackage.PRODUCTION_COMPANY__ADRESS:
+				return getAdress();
+			case AnydslPackage.PRODUCTION_COMPANY__WORLD:
+				if (resolve)
+					return getWorld();
+				return basicGetWorld();
+			case AnydslPackage.PRODUCTION_COMPANY__PRODUCERS:
+				return getProducers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCTION_COMPANY__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__ADRESS:
+				setAdress((Adress)newValue);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__WORLD:
+				setWorld((World)newValue);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__PRODUCERS:
+				getProducers().clear();
+				getProducers().addAll((Collection<? extends Producer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCTION_COMPANY__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__ADRESS:
+				setAdress((Adress)null);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__WORLD:
+				setWorld((World)null);
+				return;
+			case AnydslPackage.PRODUCTION_COMPANY__PRODUCERS:
+				getProducers().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.PRODUCTION_COMPANY__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.PRODUCTION_COMPANY__ADRESS:
+				return adress != null;
+			case AnydslPackage.PRODUCTION_COMPANY__WORLD:
+				return world != null;
+			case AnydslPackage.PRODUCTION_COMPANY__PRODUCERS:
+				return producers != null && !producers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ProductionCompanyImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RecipeImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RecipeImpl.java
new file mode 100644
index 0000000..4b7d84a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RecipeImpl.java
@@ -0,0 +1,202 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.AnydslPackage;
+import anydsl.Food;
+import anydsl.Recipe;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Recipe</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.RecipeImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.RecipeImpl#getIngredients <em>Ingredients</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RecipeImpl extends MinimalEObjectImpl.Container implements Recipe {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getIngredients() <em>Ingredients</em>}' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getIngredients()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> ingredients;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected RecipeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.RECIPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.RECIPE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getIngredients() {
+		if (ingredients == null) {
+			ingredients = new EObjectResolvingEList<Food>(Food.class, this,
+					AnydslPackage.RECIPE__INGREDIENTS);
+		}
+		return ingredients;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.RECIPE__NAME:
+				return getName();
+			case AnydslPackage.RECIPE__INGREDIENTS:
+				return getIngredients();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.RECIPE__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.RECIPE__INGREDIENTS:
+				getIngredients().clear();
+				getIngredients().addAll((Collection<? extends Food>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.RECIPE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.RECIPE__INGREDIENTS:
+				getIngredients().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.RECIPE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.RECIPE__INGREDIENTS:
+				return ingredients != null && !ingredients.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // RecipeImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RestaurantImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RestaurantImpl.java
new file mode 100644
index 0000000..593afc3
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/RestaurantImpl.java
@@ -0,0 +1,400 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.Adress;
+import anydsl.AnydslPackage;
+import anydsl.Chef;
+import anydsl.Recipe;
+import anydsl.Restaurant;
+import anydsl.World;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Restaurant</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.RestaurantImpl#getName <em>Name</em>}</li>
+ * <li>{@link anydsl.impl.RestaurantImpl#getAdress <em>Adress</em>}</li>
+ * <li>{@link anydsl.impl.RestaurantImpl#getWorld <em>World</em>}</li>
+ * <li>{@link anydsl.impl.RestaurantImpl#getChefs <em>Chefs</em>}</li>
+ * <li>{@link anydsl.impl.RestaurantImpl#getMenu <em>Menu</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RestaurantImpl extends MinimalEObjectImpl.Container implements Restaurant {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAdress() <em>Adress</em>}' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getAdress()
+	 * @generated
+	 * @ordered
+	 */
+	protected Adress adress;
+
+	/**
+	 * The cached value of the '{@link #getWorld() <em>World</em>}' reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getWorld()
+	 * @generated
+	 * @ordered
+	 */
+	protected World world;
+
+	/**
+	 * The cached value of the '{@link #getChefs() <em>Chefs</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getChefs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Chef> chefs;
+
+	/**
+	 * The cached value of the '{@link #getMenu() <em>Menu</em>}' map. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getMenu()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, Recipe> menu;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected RestaurantImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.RESTAURANT;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.RESTAURANT__NAME, oldName,
+					name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Adress getAdress() {
+		return adress;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetAdress(Adress newAdress, NotificationChain msgs) {
+		Adress oldAdress = adress;
+		adress = newAdress;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					AnydslPackage.RESTAURANT__ADRESS, oldAdress, newAdress);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setAdress(Adress newAdress) {
+		if (newAdress != adress) {
+			NotificationChain msgs = null;
+			if (adress != null)
+				msgs = ((InternalEObject)adress).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.RESTAURANT__ADRESS, null, msgs);
+			if (newAdress != null)
+				msgs = ((InternalEObject)newAdress).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+						- AnydslPackage.RESTAURANT__ADRESS, null, msgs);
+			msgs = basicSetAdress(newAdress, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.RESTAURANT__ADRESS, newAdress,
+					newAdress));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public World getWorld() {
+		if (world != null && world.eIsProxy()) {
+			InternalEObject oldWorld = (InternalEObject)world;
+			world = (World)eResolveProxy(oldWorld);
+			if (world != oldWorld) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, AnydslPackage.RESTAURANT__WORLD,
+							oldWorld, world));
+			}
+		}
+		return world;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public World basicGetWorld() {
+		return world;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setWorld(World newWorld) {
+		World oldWorld = world;
+		world = newWorld;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, AnydslPackage.RESTAURANT__WORLD, oldWorld,
+					world));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Chef> getChefs() {
+		if (chefs == null) {
+			chefs = new EObjectContainmentEList<Chef>(Chef.class, this, AnydslPackage.RESTAURANT__CHEFS);
+		}
+		return chefs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EMap<String, Recipe> getMenu() {
+		if (menu == null) {
+			menu = new EcoreEMap<String, Recipe>(AnydslPackage.Literals.ESTRING_TO_RECIPE_MAP,
+					EStringToRecipeMapImpl.class, this, AnydslPackage.RESTAURANT__MENU);
+		}
+		return menu;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.RESTAURANT__ADRESS:
+				return basicSetAdress(null, msgs);
+			case AnydslPackage.RESTAURANT__CHEFS:
+				return ((InternalEList<?>)getChefs()).basicRemove(otherEnd, msgs);
+			case AnydslPackage.RESTAURANT__MENU:
+				return ((InternalEList<?>)getMenu()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.RESTAURANT__NAME:
+				return getName();
+			case AnydslPackage.RESTAURANT__ADRESS:
+				return getAdress();
+			case AnydslPackage.RESTAURANT__WORLD:
+				if (resolve)
+					return getWorld();
+				return basicGetWorld();
+			case AnydslPackage.RESTAURANT__CHEFS:
+				return getChefs();
+			case AnydslPackage.RESTAURANT__MENU:
+				if (coreType)
+					return getMenu();
+				else
+					return getMenu().map();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.RESTAURANT__NAME:
+				setName((String)newValue);
+				return;
+			case AnydslPackage.RESTAURANT__ADRESS:
+				setAdress((Adress)newValue);
+				return;
+			case AnydslPackage.RESTAURANT__WORLD:
+				setWorld((World)newValue);
+				return;
+			case AnydslPackage.RESTAURANT__CHEFS:
+				getChefs().clear();
+				getChefs().addAll((Collection<? extends Chef>)newValue);
+				return;
+			case AnydslPackage.RESTAURANT__MENU:
+				((EStructuralFeature.Setting)getMenu()).set(newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.RESTAURANT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case AnydslPackage.RESTAURANT__ADRESS:
+				setAdress((Adress)null);
+				return;
+			case AnydslPackage.RESTAURANT__WORLD:
+				setWorld((World)null);
+				return;
+			case AnydslPackage.RESTAURANT__CHEFS:
+				getChefs().clear();
+				return;
+			case AnydslPackage.RESTAURANT__MENU:
+				getMenu().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.RESTAURANT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case AnydslPackage.RESTAURANT__ADRESS:
+				return adress != null;
+			case AnydslPackage.RESTAURANT__WORLD:
+				return world != null;
+			case AnydslPackage.RESTAURANT__CHEFS:
+				return chefs != null && !chefs.isEmpty();
+			case AnydslPackage.RESTAURANT__MENU:
+				return menu != null && !menu.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // RestaurantImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/WorldImpl.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/WorldImpl.java
new file mode 100644
index 0000000..d17792b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/impl/WorldImpl.java
@@ -0,0 +1,222 @@
+/**
+ */
+package anydsl.impl;
+
+import anydsl.AnydslPackage;
+import anydsl.Company;
+import anydsl.Food;
+import anydsl.Source;
+import anydsl.World;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>World</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link anydsl.impl.WorldImpl#getCompanies <em>Companies</em>}</li>
+ * <li>{@link anydsl.impl.WorldImpl#getFoods <em>Foods</em>}</li>
+ * <li>{@link anydsl.impl.WorldImpl#getSources <em>Sources</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WorldImpl extends MinimalEObjectImpl.Container implements World {
+	/**
+	 * The cached value of the '{@link #getCompanies() <em>Companies</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getCompanies()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Company> companies;
+
+	/**
+	 * The cached value of the '{@link #getFoods() <em>Foods</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getFoods()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Food> foods;
+
+	/**
+	 * The cached value of the '{@link #getSources() <em>Sources</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getSources()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Source> sources;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected WorldImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AnydslPackage.Literals.WORLD;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Company> getCompanies() {
+		if (companies == null) {
+			companies = new EObjectContainmentEList<Company>(Company.class, this,
+					AnydslPackage.WORLD__COMPANIES);
+		}
+		return companies;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Food> getFoods() {
+		if (foods == null) {
+			foods = new EObjectContainmentEList<Food>(Food.class, this, AnydslPackage.WORLD__FOODS);
+		}
+		return foods;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Source> getSources() {
+		if (sources == null) {
+			sources = new EObjectContainmentEList<Source>(Source.class, this, AnydslPackage.WORLD__SOURCES);
+		}
+		return sources;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AnydslPackage.WORLD__COMPANIES:
+				return ((InternalEList<?>)getCompanies()).basicRemove(otherEnd, msgs);
+			case AnydslPackage.WORLD__FOODS:
+				return ((InternalEList<?>)getFoods()).basicRemove(otherEnd, msgs);
+			case AnydslPackage.WORLD__SOURCES:
+				return ((InternalEList<?>)getSources()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case AnydslPackage.WORLD__COMPANIES:
+				return getCompanies();
+			case AnydslPackage.WORLD__FOODS:
+				return getFoods();
+			case AnydslPackage.WORLD__SOURCES:
+				return getSources();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case AnydslPackage.WORLD__COMPANIES:
+				getCompanies().clear();
+				getCompanies().addAll((Collection<? extends Company>)newValue);
+				return;
+			case AnydslPackage.WORLD__FOODS:
+				getFoods().clear();
+				getFoods().addAll((Collection<? extends Food>)newValue);
+				return;
+			case AnydslPackage.WORLD__SOURCES:
+				getSources().clear();
+				getSources().addAll((Collection<? extends Source>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.WORLD__COMPANIES:
+				getCompanies().clear();
+				return;
+			case AnydslPackage.WORLD__FOODS:
+				getFoods().clear();
+				return;
+			case AnydslPackage.WORLD__SOURCES:
+				getSources().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case AnydslPackage.WORLD__COMPANIES:
+				return companies != null && !companies.isEmpty();
+			case AnydslPackage.WORLD__FOODS:
+				return foods != null && !foods.isEmpty();
+			case AnydslPackage.WORLD__SOURCES:
+				return sources != null && !sources.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // WorldImpl
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslAdapterFactory.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslAdapterFactory.java
new file mode 100644
index 0000000..8fe7d86
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslAdapterFactory.java
@@ -0,0 +1,383 @@
+/**
+ */
+package anydsl.util;
+
+import anydsl.Adress;
+import anydsl.Animal;
+import anydsl.AnydslPackage;
+import anydsl.Chef;
+import anydsl.Company;
+import anydsl.Food;
+import anydsl.MultiNamedElement;
+import anydsl.NamedElement;
+import anydsl.Plant;
+import anydsl.Producer;
+import anydsl.ProductionCompany;
+import anydsl.Recipe;
+import anydsl.Restaurant;
+import anydsl.Source;
+import anydsl.World;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides an adapter
+ * <code>createXXX</code> method for each class of the model. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage
+ * @generated
+ */
+public class AnydslAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static AnydslPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AnydslAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = AnydslPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object. <!-- begin-user-doc --> This
+	 * implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model. <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected AnydslSwitch<Adapter> modelSwitch = new AnydslSwitch<Adapter>() {
+		@Override
+		public Adapter caseWorld(World object) {
+			return createWorldAdapter();
+		}
+
+		@Override
+		public Adapter caseMultiNamedElement(MultiNamedElement object) {
+			return createMultiNamedElementAdapter();
+		}
+
+		@Override
+		public Adapter caseNamedElement(NamedElement object) {
+			return createNamedElementAdapter();
+		}
+
+		@Override
+		public Adapter caseProducer(Producer object) {
+			return createProducerAdapter();
+		}
+
+		@Override
+		public Adapter caseAdress(Adress object) {
+			return createAdressAdapter();
+		}
+
+		@Override
+		public Adapter caseCompany(Company object) {
+			return createCompanyAdapter();
+		}
+
+		@Override
+		public Adapter caseProductionCompany(ProductionCompany object) {
+			return createProductionCompanyAdapter();
+		}
+
+		@Override
+		public Adapter caseRestaurant(Restaurant object) {
+			return createRestaurantAdapter();
+		}
+
+		@Override
+		public Adapter caseChef(Chef object) {
+			return createChefAdapter();
+		}
+
+		@Override
+		public Adapter caseRecipe(Recipe object) {
+			return createRecipeAdapter();
+		}
+
+		@Override
+		public Adapter caseFood(Food object) {
+			return createFoodAdapter();
+		}
+
+		@Override
+		public Adapter caseSource(Source object) {
+			return createSourceAdapter();
+		}
+
+		@Override
+		public Adapter casePlant(Plant object) {
+			return createPlantAdapter();
+		}
+
+		@Override
+		public Adapter caseAnimal(Animal object) {
+			return createAnimalAdapter();
+		}
+
+		@Override
+		public Adapter caseEStringToRecipeMap(Map.Entry<String, Recipe> object) {
+			return createEStringToRecipeMapAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.World <em>World</em>}'. <!-- begin-user-doc
+	 * --> This default implementation returns null so that we can easily ignore cases; it's useful to ignore
+	 * a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.World
+	 * @generated
+	 */
+	public Adapter createWorldAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.MultiNamedElement <em>Multi Named
+	 * Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can easily
+	 * ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway. <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.MultiNamedElement
+	 * @generated
+	 */
+	public Adapter createMultiNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.NamedElement <em>Named Element</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Producer <em>Producer</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Producer
+	 * @generated
+	 */
+	public Adapter createProducerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Adress <em>Adress</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Adress
+	 * @generated
+	 */
+	public Adapter createAdressAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Company <em>Company</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Company
+	 * @generated
+	 */
+	public Adapter createCompanyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.ProductionCompany <em>Production
+	 * Company</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can easily
+	 * ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway. <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.ProductionCompany
+	 * @generated
+	 */
+	public Adapter createProductionCompanyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Restaurant <em>Restaurant</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Restaurant
+	 * @generated
+	 */
+	public Adapter createRestaurantAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Chef <em>Chef</em>}'. <!-- begin-user-doc
+	 * --> This default implementation returns null so that we can easily ignore cases; it's useful to ignore
+	 * a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Chef
+	 * @generated
+	 */
+	public Adapter createChefAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Recipe <em>Recipe</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Recipe
+	 * @generated
+	 */
+	public Adapter createRecipeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Food <em>Food</em>}'. <!-- begin-user-doc
+	 * --> This default implementation returns null so that we can easily ignore cases; it's useful to ignore
+	 * a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Food
+	 * @generated
+	 */
+	public Adapter createFoodAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Source <em>Source</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Source
+	 * @generated
+	 */
+	public Adapter createSourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Plant <em>Plant</em>}'. <!-- begin-user-doc
+	 * --> This default implementation returns null so that we can easily ignore cases; it's useful to ignore
+	 * a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Plant
+	 * @generated
+	 */
+	public Adapter createPlantAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link anydsl.Animal <em>Animal</em>}'. <!--
+	 * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see anydsl.Animal
+	 * @generated
+	 */
+	public Adapter createAnimalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>EString To Recipe
+	 * Map</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can easily
+	 * ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway. <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see java.util.Map.Entry
+	 * @generated
+	 */
+	public Adapter createEStringToRecipeMapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This default implementation returns
+	 * null. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // AnydslAdapterFactory
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslSwitch.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslSwitch.java
new file mode 100644
index 0000000..45ac2dd
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src-gen/anydsl/util/AnydslSwitch.java
@@ -0,0 +1,457 @@
+/**
+ */
+package anydsl.util;
+
+import anydsl.Adress;
+import anydsl.Animal;
+import anydsl.AnydslPackage;
+import anydsl.Chef;
+import anydsl.Company;
+import anydsl.Food;
+import anydsl.MultiNamedElement;
+import anydsl.NamedElement;
+import anydsl.Plant;
+import anydsl.Producer;
+import anydsl.ProductionCompany;
+import anydsl.Recipe;
+import anydsl.Restaurant;
+import anydsl.Source;
+import anydsl.World;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance hierarchy. It supports the call
+ * {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the
+ * model, starting with the actual class of the object and proceeding up the inheritance hierarchy until a
+ * non-null result is returned, which is the result of the switch. <!-- end-user-doc -->
+ * 
+ * @see anydsl.AnydslPackage
+ * @generated
+ */
+public class AnydslSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static AnydslPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AnydslSwitch() {
+		if (modelPackage == null) {
+			modelPackage = AnydslPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+	 * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case AnydslPackage.WORLD: {
+				World world = (World)theEObject;
+				T result = caseWorld(world);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.MULTI_NAMED_ELEMENT: {
+				MultiNamedElement multiNamedElement = (MultiNamedElement)theEObject;
+				T result = caseMultiNamedElement(multiNamedElement);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.NAMED_ELEMENT: {
+				NamedElement namedElement = (NamedElement)theEObject;
+				T result = caseNamedElement(namedElement);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.PRODUCER: {
+				Producer producer = (Producer)theEObject;
+				T result = caseProducer(producer);
+				if (result == null)
+					result = caseNamedElement(producer);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.ADRESS: {
+				Adress adress = (Adress)theEObject;
+				T result = caseAdress(adress);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.COMPANY: {
+				Company company = (Company)theEObject;
+				T result = caseCompany(company);
+				if (result == null)
+					result = caseNamedElement(company);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.PRODUCTION_COMPANY: {
+				ProductionCompany productionCompany = (ProductionCompany)theEObject;
+				T result = caseProductionCompany(productionCompany);
+				if (result == null)
+					result = caseCompany(productionCompany);
+				if (result == null)
+					result = caseNamedElement(productionCompany);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.RESTAURANT: {
+				Restaurant restaurant = (Restaurant)theEObject;
+				T result = caseRestaurant(restaurant);
+				if (result == null)
+					result = caseCompany(restaurant);
+				if (result == null)
+					result = caseNamedElement(restaurant);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.CHEF: {
+				Chef chef = (Chef)theEObject;
+				T result = caseChef(chef);
+				if (result == null)
+					result = caseNamedElement(chef);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.RECIPE: {
+				Recipe recipe = (Recipe)theEObject;
+				T result = caseRecipe(recipe);
+				if (result == null)
+					result = caseNamedElement(recipe);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.FOOD: {
+				Food food = (Food)theEObject;
+				T result = caseFood(food);
+				if (result == null)
+					result = caseNamedElement(food);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.SOURCE: {
+				Source source = (Source)theEObject;
+				T result = caseSource(source);
+				if (result == null)
+					result = caseMultiNamedElement(source);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.PLANT: {
+				Plant plant = (Plant)theEObject;
+				T result = casePlant(plant);
+				if (result == null)
+					result = caseSource(plant);
+				if (result == null)
+					result = caseMultiNamedElement(plant);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.ANIMAL: {
+				Animal animal = (Animal)theEObject;
+				T result = caseAnimal(animal);
+				if (result == null)
+					result = caseSource(animal);
+				if (result == null)
+					result = caseMultiNamedElement(animal);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			case AnydslPackage.ESTRING_TO_RECIPE_MAP: {
+				@SuppressWarnings("unchecked")
+				Map.Entry<String, Recipe> eStringToRecipeMap = (Map.Entry<String, Recipe>)theEObject;
+				T result = caseEStringToRecipeMap(eStringToRecipeMap);
+				if (result == null)
+					result = defaultCase(theEObject);
+				return result;
+			}
+			default:
+				return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>World</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>World</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseWorld(World object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Named Element</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Multi Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiNamedElement(MultiNamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Producer</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Producer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProducer(Producer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adress</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adress</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdress(Adress object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Company</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Company</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCompany(Company object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Production Company</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Production Company</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProductionCompany(ProductionCompany object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Restaurant</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Restaurant</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRestaurant(Restaurant object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chef</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chef</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChef(Chef object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Recipe</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Recipe</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRecipe(Recipe object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Food</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Food</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFood(Food object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Source</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Source</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSource(Source object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Plant</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Plant</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePlant(Plant object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Animal</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Animal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAnimal(Animal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EString To Recipe Map</em>'. <!--
+	 * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+	 * switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EString To Recipe Map</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEStringToRecipeMap(Map.Entry<String, Recipe> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. <!-- begin-user-doc
+	 * --> This implementation returns null; returning a non-null result will terminate the switch, but this
+	 * is the last case anyway. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // AnydslSwitch
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AbstractEObjectLocationTest.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AbstractEObjectLocationTest.java
new file mode 100644
index 0000000..3b0c997
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AbstractEObjectLocationTest.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.tests.base.AbstractLocationTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Tests {@link IEObjectLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractEObjectLocationTest extends AbstractLocationTests {
+
+	@Override
+	protected IEObjectLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(IEObjectLocation.class);
+	}
+
+	@Test
+	public void setURIFragmentNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setURIFragment(null);
+
+		assertNull(location.getURIFragment());
+	}
+
+	@Test
+	public void setURIFragment() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setURIFragment("someFeature");
+
+		assertEquals("someFeature", location.getURIFragment());
+	}
+
+	@Test
+	public void getURIFragmentDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		assertNull(location.getURIFragment());
+	}
+
+	@Test
+	public void setSavedURIFragmentNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setSavedURIFragment(null);
+
+		assertNull(location.getSavedURIFragment());
+	}
+
+	@Test
+	public void setSavedURIFragment() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setSavedURIFragment("someFeature");
+
+		assertEquals("someFeature", location.getSavedURIFragment());
+	}
+
+	@Test
+	public void getSavedURIFragmentDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		assertNull(location.getSavedURIFragment());
+	}
+
+	@Test
+	public void setFeatureNameNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setFeatureName(null);
+
+		assertNull(location.getFeatureName());
+	}
+
+	@Test
+	public void setFeatureName() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		location.setFeatureName("someFeature");
+
+		assertEquals("someFeature", location.getFeatureName());
+	}
+
+	@Test
+	public void getFeatureNameDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IEObjectLocation location = createLocation();
+
+		assertNull(location.getFeatureName());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AllTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AllTests.java
new file mode 100644
index 0000000..324f71b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/AllTests.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.EMFBaseTests;
+import org.eclipse.intent.mapping.emf.tests.base.EMFLinkTests;
+import org.eclipse.intent.mapping.emf.tests.base.EMFReportTests;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOContainerProviderTests;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOViewConnectorTests;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorCDOTests;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedCDOTests;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorTests;
+import org.eclipse.intent.mapping.emf.tests.connector.MappingCDOListenerTest;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping.emf plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {CDOMappingBaseListenerTests.class, EMFBaseTests.class, EMFLinkTests.class,
+		EMFTextLocationTests.class, EMFEObjectLocationTests.class, EObjectConnectorTests.class,
+		EObjectConnectorCDOTests.class, EObjectConnectorParametrizedTests.class,
+		EObjectConnectorParametrizedCDOTests.class, EMFReportTests.class, CDOViewConnectorTests.class,
+		CDOResourceNodeConnectorTests.class, EMFCDORepositoryLocationTests.class,
+		EMFCDOFolderLocationTests.class, EMFCDOBinaryResourceLocationTests.class,
+		EMFCDOTextResourceLocationTests.class, MappingCDOListenerTest.class,
+		CDOContainerProviderTests.class })
+public class AllTests {
+	/**
+	 * The {@link CDOServer}.
+	 */
+	private static CDOServer server;
+
+	/**
+	 * Counts calls to {@link #startCDOServer()}.
+	 */
+	private static int startCount;
+
+	@BeforeClass
+	public static void startCDOServer() {
+		startCount++;
+		if (server == null) {
+			server = new CDOServer(false);
+			server.start();
+		}
+	}
+
+	@AfterClass
+	public static void stopCDOServer() {
+		if (startCount == 0) {
+			server.stop();
+		} else {
+			startCount--;
+		}
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOMappingBaseListenerTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOMappingBaseListenerTests.java
new file mode 100644
index 0000000..54cd5b4
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOMappingBaseListenerTests.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import anydsl.AnydslPackage;
+import anydsl.ProductionCompany;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.emf.CDOMappingBaseListener;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests {@link CDOMappingBaseListener}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOMappingBaseListenerTests {
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	@BeforeClass
+	public static void beforeClass() {
+		AllTests.startCDOServer();
+		IConnector c = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(c, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		transaction.close();
+		AllTests.stopCDOServer();
+	}
+
+	@Test
+	public void attacheObject() throws Exception {
+		final CDOMappingBaseListener listener = new CDOMappingBaseListener();
+
+		final String path = this.getClass().getCanonicalName() + "/attacheObject.resource";
+		final CDOResource resource = transaction.createResource(path);
+		resource.save(null);
+		transaction.commit();
+
+		transaction.getSession().addListener(listener);
+		final ProductionCompany eObject = AnydslPackage.eINSTANCE.getAnydslFactory()
+				.createProductionCompany();
+		resource.getContents().add(eObject);
+		eObject.setName("MyCompany");
+		resource.save(null);
+		transaction.commit();
+		transaction.getSession().removeListener(listener);
+
+		assertEquals(0, MappingUtils.getMappingRegistry().getBases().size());
+	}
+
+	@Test
+	public void detacheObject() throws Exception {
+		final CDOMappingBaseListener listener = new CDOMappingBaseListener();
+
+		final String path = this.getClass().getCanonicalName() + "/detacheObject.resource";
+		final CDOResource resource = transaction.createResource(path);
+		final ProductionCompany eObject = AnydslPackage.eINSTANCE.getAnydslFactory()
+				.createProductionCompany();
+		resource.getContents().add(eObject);
+		eObject.setName("MyCompany");
+		resource.save(null);
+		transaction.commit();
+
+		transaction.getSession().addListener(listener);
+		resource.getContents().clear();
+		resource.save(null);
+		transaction.commit();
+		transaction.getSession().removeListener(listener);
+
+		assertEquals(0, MappingUtils.getMappingRegistry().getBases().size());
+	}
+
+	@Test
+	public void attacheBase() throws Exception {
+		final CDOMappingBaseListener listener = new CDOMappingBaseListener();
+
+		final String path = this.getClass().getCanonicalName() + "/attacheBase.resource";
+		final CDOResource resource = transaction.createResource(path);
+		resource.save(null);
+		transaction.commit();
+
+		transaction.getSession().addListener(listener);
+		final Base eObject = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		resource.getContents().add(eObject);
+		eObject.setName("MyBase");
+		resource.save(null);
+		transaction.commit();
+		transaction.getSession().removeListener(listener);
+
+		assertEquals(1, MappingUtils.getMappingRegistry().getBases().size());
+		assertEquals("MyBase", MappingUtils.getMappingRegistry().getBases().iterator().next().getName());
+		MappingUtils.getMappingRegistry().unregister(eObject);
+	}
+
+	@Test
+	public void detacheBase() throws Exception {
+		final CDOMappingBaseListener listener = new CDOMappingBaseListener();
+
+		transaction.getSession().addListener(listener);
+		final String path = this.getClass().getCanonicalName() + "/detacheBase.resource";
+		final CDOResource resource = transaction.createResource(path);
+		final Base eObject = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		resource.getContents().add(eObject);
+		eObject.setName("MyBase");
+		resource.save(null);
+		transaction.commit();
+
+		assertEquals(1, MappingUtils.getMappingRegistry().getBases().size());
+		assertEquals("MyBase", MappingUtils.getMappingRegistry().getBases().iterator().next().getName());
+
+		resource.getContents().clear();
+		resource.save(null);
+		transaction.commit();
+		transaction.getSession().removeListener(listener);
+
+		assertEquals(0, MappingUtils.getMappingRegistry().getBases().size());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOServer.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOServer.java
new file mode 100644
index 0000000..f7b8b4f
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOServer.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo	 - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.cdo.internal.server.Repository;
+import org.eclipse.emf.cdo.server.CDOServerUtil;
+import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.IRepository.Props;
+import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.server.mem.MEMStoreUtil;
+import org.eclipse.emf.cdo.server.net4j.CDONet4jServerUtil;
+import org.eclipse.emf.cdo.spi.server.InternalSessionManager;
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.log.PrintLogHandler;
+import org.eclipse.net4j.util.om.trace.PrintTraceHandler;
+import org.eclipse.net4j.util.security.INegotiator;
+import org.eclipse.net4j.util.security.IUserManager;
+import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
+import org.eclipse.net4j.util.security.ResponseNegotiator;
+import org.eclipse.net4j.util.security.UserManager;
+
+/**
+ * A CDO server for testing purpose. It creates a memory store.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class CDOServer {
+
+	/**
+	 * The TCP port the server is listening to.
+	 */
+	public static final int PORT = 12345;
+
+	/**
+	 * The repository name.
+	 */
+	public static final String REPOSITORY_NAME = "testRepo";
+
+	/**
+	 * The protocol to use for communication.
+	 */
+	public static final String PROTOCOL = "tcp";
+
+	/**
+	 * The IP to bind to.
+	 */
+	public static final String IP = "127.0.0.1";
+
+	/**
+	 * The user name.
+	 */
+	public static final String USER_NAME = "user";
+
+	/**
+	 * The password.
+	 */
+	public static final String PASSWORD = "password";
+
+	/**
+	 * The {@link IRepository} of the CDO server.
+	 */
+	private static IRepository repository;
+
+	/**
+	 * Should we use authentication or not.
+	 */
+	private final boolean withAuth;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param withAuth
+	 *            tells if authentication should be activated
+	 */
+	public CDOServer(boolean withAuth) {
+		this.withAuth = withAuth;
+	}
+
+	/**
+	 * Creates the repository.
+	 * 
+	 * @return the repository
+	 */
+	protected IRepository createRepository() {
+		Map<String, String> props = new HashMap<String, String>();
+		props.put(Props.SUPPORTING_AUDITS, Boolean.TRUE.toString());
+		props.put(Props.SUPPORTING_BRANCHES, Boolean.TRUE.toString());
+
+		return CDOServerUtil.createRepository(REPOSITORY_NAME, createStore(), props);
+	}
+
+	/**
+	 * Creates the {@link IStore}.
+	 * 
+	 * @return the created {@link IStore}
+	 */
+	protected IStore createStore() {
+		return MEMStoreUtil.createMEMStore();
+	}
+
+	/**
+	 * Create the authentication {@link INegotiator}.
+	 * 
+	 * @return the created authentication {@link INegotiator
+	 */
+	protected INegotiator createNegotiator() {
+		ResponseNegotiator negotiator = new ResponseNegotiator();
+		negotiator.setCredentialsProvider(new PasswordCredentialsProvider(USER_NAME, PASSWORD));
+		return negotiator;
+	}
+
+	/**
+	 * Starts the CDO server.
+	 */
+	public void start() {
+		if (repository == null) {
+			OMPlatform.INSTANCE.setDebugging(false);
+			OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);
+			OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
+
+			Net4jUtil.prepareContainer(IPluginContainer.INSTANCE); // Prepare the Net4j kernel
+			TCPUtil.prepareContainer(IPluginContainer.INSTANCE); // Prepare the TCP support
+			CDONet4jServerUtil.prepareContainer(IPluginContainer.INSTANCE); // Prepare the CDO server
+			// OCLQueryHandler.prepareContainer(IPluginContainer.INSTANCE); // Prepare OCL queries
+
+			repository = createRepository();
+
+			if (withAuth) {
+				InternalSessionManager sessionManager = (InternalSessionManager)CDOServerUtil
+						.createSessionManager();
+				IUserManager userManager = new UserManager();
+				userManager.addUser(USER_NAME, PASSWORD.toCharArray());
+				sessionManager.setUserManager(userManager);
+				((Repository)repository).setSessionManager(sessionManager);
+			}
+			CDOServerUtil.addRepository(IPluginContainer.INSTANCE, repository);
+
+			Net4jUtil.getAcceptor(IPluginContainer.INSTANCE, PROTOCOL, IP + ":" + PORT);
+		}
+	}
+
+	/**
+	 * Stops the CDO server.
+	 */
+	public void stop() {
+		LifecycleUtil.deactivate(repository);
+		LifecycleUtil.deactivate(IPluginContainer.INSTANCE);
+		repository = null;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOUtils.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOUtils.java
new file mode 100644
index 0000000..43e2047
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/CDOUtils.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo	 - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
+import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.connector.ConnectorException;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
+
+/**
+ * A CDO utility class.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public final class CDOUtils {
+
+	/**
+	 * Constructor.
+	 */
+	private CDOUtils() {
+		// can't create instance
+	}
+
+	/**
+	 * Gets a {@link IConnector} from the given description. Caller is responsible of
+	 * {@link IConnector#close() closing} the resulting connector.
+	 * 
+	 * @param description
+	 *            the description of the protocol host and port to use for the connection
+	 * @return a new {@link IConnector}
+	 */
+	public static IConnector getConnector(String description) {
+		final IManagedContainer container = getContainer(description);
+		IConnector res = null;
+		try {
+			res = Net4jUtil.getConnector(container, description);
+		} catch (ConnectorException e) {
+			LifecycleUtil.deactivate(container);
+			throw e;
+		}
+		return res;
+	}
+
+	/**
+	 * Open a new {@link CDOSession}. Caller is responsible of {@link CDOSession#close() closing} the
+	 * resulting session.
+	 * 
+	 * @param connector
+	 *            the {@link IConnector} to use to open the {@link CDOSession}
+	 * @param repository
+	 *            the repository name
+	 * @return a new {@link CDOSession}
+	 */
+	public static CDOSession openSession(IConnector connector, String repository) {
+		return openSession(connector, repository, null, null);
+	}
+
+	/**
+	 * Open a new {@link CDOSession}. Caller is responsible of {@link CDOSession#close() closing} the
+	 * resulting session.
+	 * 
+	 * @param connector
+	 *            the {@link IConnector} to use to open the {@link CDOSession}
+	 * @param repository
+	 *            the repository name
+	 * @param login
+	 *            the user login if any, if <code>null</code> otherwise no authentication will by used
+	 * @param password
+	 *            the user password if an, if <code>null</code> empty {@link String} will be used
+	 * @return a new {@link CDOSession}
+	 */
+	public static CDOSession openSession(IConnector connector, String repository, String login,
+			String password) {
+		CDOSessionConfiguration sessionConfiguration = CDONet4jUtil.createSessionConfiguration();
+		sessionConfiguration.setConnector(connector);
+		sessionConfiguration.setRepositoryName(repository);
+		if (login != null) {
+			final String pass;
+			if (password != null) {
+				pass = password;
+			} else {
+				pass = "";
+			}
+			sessionConfiguration.getAuthenticator().setCredentialsProvider(new PasswordCredentialsProvider(
+					login, pass.toCharArray()));
+		}
+
+		CDOSession res = sessionConfiguration.openSession();
+
+		return res;
+	}
+
+	/**
+	 * Open a {@link CDOTransaction} on the main {@link CDOBranch}. Caller is responsible of
+	 * {@link CDOTransaction#close() closing} the resulting transaction.
+	 * 
+	 * @param session
+	 *            the {@link CDOSession} to use to open the {@link CDOTransaction}
+	 * @return a new {@link CDOTransaction}
+	 */
+	public static CDOTransaction openTransaction(CDOSession session) {
+		return openTransaction(session, null);
+	}
+
+	/**
+	 * Open a {@link CDOTransaction} on the given {@link CDOBranch}. Caller is responsible of
+	 * {@link CDOTransaction#close() closing} the resulting transaction.
+	 * 
+	 * @param session
+	 *            the {@link CDOSession} to use to open the {@link CDOTransaction}
+	 * @param branchName
+	 *            the branch name or <code>null</code> for the main branch
+	 * @return a new {@link CDOTransaction}
+	 */
+	public static CDOTransaction openTransaction(CDOSession session, String branchName) {
+		final CDOTransaction res;
+		if (branchName != null) {
+			CDOBranch branch = session.getBranchManager().getBranch(branchName);
+			if (branch != null) {
+				res = session.openTransaction(branch);
+			} else {
+				res = null;
+				throw new IllegalArgumentException("The branch " + branchName + " doesn't exist.");
+			}
+		} else {
+			res = session.openTransaction();
+		}
+		return res;
+	}
+
+	/**
+	 * Lists {@link CDOResource} of the given {@link CDOView}.
+	 * 
+	 * @param view
+	 *            the {@link CDOView}
+	 * @return the {@link List} of {@link CDOResource} from the given {@link CDOView}
+	 */
+	public static List<CDOResource> getResources(CDOView view) {
+		final List<CDOResource> res = new ArrayList<CDOResource>();
+
+		for (EObject eObj : view.getRootResource().eContents()) {
+			res.add((CDOResource)eObj);
+		}
+
+		return res;
+	}
+
+	/**
+	 * Lists all {@link CDOBranch} for the given {@link CDOSession}.
+	 * 
+	 * @param session
+	 *            the {@link CDOSession} to use to list {@link CDOBranch}
+	 * @return the {@link List} of {@link CDOBranch} for the given {@link CDOSession}
+	 */
+	public static List<CDOBranch> getBranches(CDOSession session) {
+		final List<CDOBranch> res = new ArrayList<CDOBranch>();
+		session.getBranchManager().getBranches(Integer.MIN_VALUE, Integer.MAX_VALUE, new CDOBranchHandler() {
+
+			/**
+			 * {@inheritDoc}
+			 * 
+			 * @see org.eclipse.emf.cdo.common.branch.CDOBranchHandler#handleBranch(org.eclipse.emf.cdo.common.branch.CDOBranch)
+			 */
+			public void handleBranch(CDOBranch branch) {
+				res.add(branch);
+			}
+		});
+		return res;
+	}
+
+	/**
+	 * Gets a {@link IManagedContainer}.
+	 * 
+	 * @param description
+	 *            the description of the protocol host and port to use for the connection
+	 * @return a {@link IManagedContainer}
+	 */
+	private static IManagedContainer getContainer(String description) {
+		IManagedContainer res = ContainerUtil.createContainer();
+		Net4jUtil.prepareContainer(res);
+		CDONet4jUtil.prepareContainer(res);
+		TCPUtil.prepareContainer(res);
+		res.activate();
+		return res;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOBinaryResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOBinaryResourceLocationTests.java
new file mode 100644
index 0000000..48de62c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOBinaryResourceLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.AbstractCDOBinaryResourceLocationTests;
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.CDOBinaryResourceLocation CDOBinaryResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFCDOBinaryResourceLocationTests extends AbstractCDOBinaryResourceLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOFolderLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOFolderLocationTests.java
new file mode 100644
index 0000000..e0bbb40
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOFolderLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.AbstractCDOFolderLocationTests;
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.CDOFolderLocation CDOFolderLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFCDOFolderLocationTests extends AbstractCDOFolderLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDORepositoryLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDORepositoryLocationTests.java
new file mode 100644
index 0000000..388d578
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDORepositoryLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.AbstractCDORepositoryLocationTests;
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.CDORepositoryLocation CDORepositoryLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFCDORepositoryLocationTests extends AbstractCDORepositoryLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOTextResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOTextResourceLocationTests.java
new file mode 100644
index 0000000..3a115bb
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFCDOTextResourceLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.AbstractCDOTextResourceLocationTests;
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.CDOTextResourceLocation CDOTextResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFCDOTextResourceLocationTests extends AbstractCDOTextResourceLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFEObjectLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFEObjectLocationTests.java
new file mode 100644
index 0000000..ba19e7b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFEObjectLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.EObjectLocation EObjectLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFEObjectLocationTests extends AbstractEObjectLocationTest {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFTextLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFTextLocationTests.java
new file mode 100644
index 0000000..6634b35
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/EMFTextLocationTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests;
+
+import org.eclipse.intent.mapping.emf.tests.base.Factory;
+import org.eclipse.intent.mapping.tests.base.AbstractTextLocationTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.tests.testmapping.TestLocation TestLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFTextLocationTests extends AbstractTextLocationTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOBinaryResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOBinaryResourceLocationTests.java
new file mode 100644
index 0000000..c5ed083
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOBinaryResourceLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+
+/**
+ * Test {@link ICDOBinaryResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDOBinaryResourceLocationTests extends AbstractCDOFileLocationTests {
+
+	@Override
+	protected ICDOBinaryResourceLocation createLocation() throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDOBinaryResourceLocation.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFileLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFileLocationTests.java
new file mode 100644
index 0000000..c934edd
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFileLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDOFileLocation;
+
+/**
+ * Test {@link ICDOFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDOFileLocationTests extends AbstractCDOResourceNodeLocationTests {
+
+	@Override
+	protected ICDOFileLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDOFileLocation.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFolderLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFolderLocationTests.java
new file mode 100644
index 0000000..616b653
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOFolderLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+
+/**
+ * Test {@link ICDOFolderLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDOFolderLocationTests extends AbstractCDOResourceNodeLocationTests {
+
+	@Override
+	protected ICDOFolderLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDOFolderLocation.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDORepositoryLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDORepositoryLocationTests.java
new file mode 100644
index 0000000..bfd633e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDORepositoryLocationTests.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.tests.base.AbstractLocationTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test {@link ICDORepositoryLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDORepositoryLocationTests extends AbstractLocationTests {
+
+	@Override
+	protected ICDORepositoryLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDORepositoryLocation.class);
+	}
+
+	@Test
+	public void setURL() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		location.setURL("someURL");
+
+		assertEquals("someURL", location.getURL());
+	}
+
+	@Test
+	public void getURLDefault() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		assertEquals(null, location.getURL());
+	}
+
+	@Test
+	public void setUUID() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		location.setUUID("someUUID");
+
+		assertEquals("someUUID", location.getUUID());
+	}
+
+	@Test
+	public void getUUIDDefault() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		assertEquals(null, location.getUUID());
+	}
+
+	@Test
+	public void setName() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		location.setName("someName");
+
+		assertEquals("someName", location.getName());
+	}
+
+	@Test
+	public void getNameDefault() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		assertEquals(null, location.getName());
+	}
+
+	@Test
+	public void setBranchID() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		location.setBranchID(42);
+
+		assertEquals(42, location.getBranchID());
+	}
+
+	@Test
+	public void getBranchIDDefault() throws Exception {
+		final ICDORepositoryLocation location = createLocation();
+
+		assertEquals(-1, location.getBranchID());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOResourceNodeLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOResourceNodeLocationTests.java
new file mode 100644
index 0000000..992cd60
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOResourceNodeLocationTests.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDOResourceNodeLocation;
+import org.eclipse.intent.mapping.tests.base.AbstractLocationTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test {@link ICDOResourceNodeLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDOResourceNodeLocationTests extends AbstractLocationTests {
+
+	@Override
+	protected ICDOResourceNodeLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDOResourceNodeLocation.class);
+	}
+
+	@Test
+	public void setPath() throws Exception {
+		final ICDOResourceNodeLocation location = createLocation();
+
+		location.setPath("somePath");
+
+		assertEquals("somePath", location.getPath());
+	}
+
+	@Test
+	public void getPathDefault() throws Exception {
+		final ICDOResourceNodeLocation location = createLocation();
+
+		assertEquals(null, location.getPath());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOTextResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOTextResourceLocationTests.java
new file mode 100644
index 0000000..980a029
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/AbstractCDOTextResourceLocationTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+
+/**
+ * Test {@link ICDOTextResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractCDOTextResourceLocationTests extends AbstractCDOFileLocationTests {
+
+	@Override
+	protected ICDOTextResourceLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ICDOTextResourceLocation.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFBaseTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFBaseTests.java
new file mode 100644
index 0000000..22b6854
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFBaseTests.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.intent.mapping.Base;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.tests.base.AbstractBaseTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.Base Base}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFBaseTests extends AbstractBaseTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+	@Test(expected = IOException.class)
+	public void saveNotInResource() throws IOException {
+		final IBase base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+
+		base.save();
+	}
+
+	@Test
+	public void save() throws IOException {
+		final Base base = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		base.setName("testBase");
+
+		final ResourceSet rs = new ResourceSetImpl();
+		rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+		rs.getPackageRegistry().put(MappingPackage.eNS_URI, MappingPackage.eINSTANCE);
+		rs.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
+		final Resource r = rs.createResource(URI.createURI("./test.mapping"));
+		r.getContents().add(base);
+
+		base.save();
+
+		final ResourceSet rs2 = new ResourceSetImpl();
+		rs2.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+		rs2.getPackageRegistry().put(MappingPackage.eNS_URI, MappingPackage.eINSTANCE);
+		rs2.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
+		final Resource r2 = rs2.getResource(URI.createFileURI("./test.mapping"), true);
+
+		assertEquals(1, r2.getContents().size());
+		assertTrue(r2.getContents().get(0) instanceof Base);
+		assertEquals("testBase", ((Base)r2.getContents().get(0)).getName());
+
+		r2.delete(null);
+
+		assertTrue(!new File("./test.mapping").exists());
+	}
+
+	@Test
+	public void testCreateEObjectLocation() throws Exception {
+		final IBase base = getBase();
+		final IEObjectLocation element = base.getFactory().createElement(IEObjectLocation.class);
+
+		assertTrue(element instanceof IEObjectLocation);
+	}
+
+	@Test
+	public void testCreateCDORepositoryLocation() throws Exception {
+		final IBase base = getBase();
+		final ICDORepositoryLocation element = base.getFactory().createElement(ICDORepositoryLocation.class);
+
+		assertTrue(element instanceof ICDORepositoryLocation);
+	}
+
+	@Test
+	public void testCreateCDOFolderLocation() throws Exception {
+		final IBase base = getBase();
+		final ICDOFolderLocation element = base.getFactory().createElement(ICDOFolderLocation.class);
+
+		assertTrue(element instanceof ICDOFolderLocation);
+	}
+
+	@Test
+	public void testCreateCDOBinaryResourceLocation() throws Exception {
+		final IBase base = getBase();
+		final ICDOBinaryResourceLocation element = base.getFactory().createElement(
+				ICDOBinaryResourceLocation.class);
+
+		assertTrue(element instanceof ICDOBinaryResourceLocation);
+	}
+
+	@Test
+	public void testCreateCDOTextResourceLocation() throws Exception {
+		final IBase base = getBase();
+		final ICDOTextResourceLocation element = base.getFactory().createElement(
+				ICDOTextResourceLocation.class);
+
+		assertTrue(element instanceof ICDOTextResourceLocation);
+	}
+
+	@Test
+	public void testCreateCDOResourceLocation() throws Exception {
+		final IBase base = getBase();
+		final ICDOResourceLocation element = base.getFactory().createElement(ICDOResourceLocation.class);
+
+		assertTrue(element instanceof ICDOResourceLocation);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFLinkTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFLinkTests.java
new file mode 100644
index 0000000..978cf72
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFLinkTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.tests.base.AbstractLinkTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.Link Link}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFLinkTests extends AbstractLinkTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFReportTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFReportTests.java
new file mode 100644
index 0000000..c4d8ab1
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/EMFReportTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.tests.base.AbstractReportTests;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * Test {@link org.eclipse.intent.mapping.Report Report}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EMFReportTests extends AbstractReportTests {
+
+	@Override
+	protected IBaseFactory getFactory() {
+		return Factory.INSTANCE;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/Factory.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/Factory.java
new file mode 100644
index 0000000..f044a78
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/base/Factory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.base;
+
+import org.eclipse.intent.mapping.impl.MappingFactoryImpl;
+import org.eclipse.intent.mapping.tests.base.IBaseFactory;
+
+/**
+ * The tested objects factory.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class Factory extends MappingFactoryImpl implements IBaseFactory {
+
+	/**
+	 * The {@link Factory} instance.
+	 */
+	public static final Factory INSTANCE = new Factory();
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOContainerProviderTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOContainerProviderTests.java
new file mode 100644
index 0000000..ffa6f0d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOContainerProviderTests.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CommitException;
+import org.eclipse.emf.cdo.util.ConcurrentAccessException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.emf.connector.CDOContainerProvider;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Tests {@link CDOContainerProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOContainerProviderTests {
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	/**
+	 * The {@link CDOResource}.
+	 */
+	private static CDOResource resource;
+
+	/**
+	 * The {@link EObject}.
+	 */
+	private static EObject eObject;
+
+	@BeforeClass
+	public static void beforeClass() throws ConcurrentAccessException, CommitException {
+		AllTests.startCDOServer();
+		IConnector connector = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(connector, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+		resource = transaction.createResource(CDOContainerProviderTests.class.getCanonicalName());
+		eObject = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		resource.getContents().add(eObject);
+		transaction.commit();
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		transaction.close();
+		AllTests.stopCDOServer();
+	}
+
+	@Test
+	public void getContainerNull() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final Object result = provider.getContainer(null);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerObject() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final Object element = new Object();
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerEObjectNoResource() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final EObject element = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerEObjectNoCDOResource() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final EObject element = MappingPackage.eINSTANCE.getMappingFactory().createBase();
+		final Resource r = new XMIResourceImpl();
+		r.getContents().add(element);
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerEOject() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final Object result = provider.getContainer(eObject);
+
+		assertEquals(resource, result);
+	}
+
+	@Test
+	public void getContainerCDOResource() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final Object result = provider.getContainer(resource);
+
+		assertEquals(transaction, result);
+	}
+
+	@Test
+	public void getContainerCDOView() {
+		final CDOContainerProvider provider = new CDOContainerProvider();
+
+		final Object result = provider.getContainer(transaction);
+
+		assertNull(result);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOResourceNodeConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOResourceNodeConnectorTests.java
new file mode 100644
index 0000000..9fcd75e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOResourceNodeConnectorTests.java
@@ -0,0 +1,906 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import org.eclipse.emf.cdo.eresource.CDOBinaryResource;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
+import org.eclipse.emf.cdo.eresource.CDOTextResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceNodeLocation;
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.connector.CDOResourceNodeConnector;
+import org.eclipse.intent.mapping.emf.connector.CDOViewConnector;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOViewConnectorTests.TestCDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests.TestEObjectContainerLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link CDOResourceNodeConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOResourceNodeConnectorTests {
+
+	/**
+	 * Test {@link ICDOResourceNodeLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public abstract static class AbstractTestCDOResourceNodeLocation extends TestLocation implements ICDOResourceNodeLocation {
+
+		/**
+		 * The path.
+		 */
+		private String path;
+
+		public String getPath() {
+			return path;
+		}
+
+		public void setPath(String path) {
+			this.path = path;
+		}
+
+	}
+
+	/**
+	 * A test {@link ICDOFolderLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCDOFolderLocation extends AbstractTestCDOResourceNodeLocation implements ICDOFolderLocation {
+
+	}
+
+	/**
+	 * A test {@link ICDOBinaryResourceLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCDOBinaryResourceLocation extends AbstractTestCDOResourceNodeLocation implements ICDOBinaryResourceLocation {
+
+	}
+
+	/**
+	 * A test {@link ICDOTextResourceLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCDOTextResourceLocation extends AbstractTestCDOResourceNodeLocation implements ICDOTextResourceLocation {
+
+		/**
+		 * The containing text.
+		 */
+		private String text;
+
+		public void setText(String text) {
+			this.text = text;
+		}
+
+		public String getText() {
+			return text;
+		}
+
+	}
+
+	/**
+	 * A test {@link ICDOResourceLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCDOResourceLocation extends TestEObjectContainerLocation implements ICDOResourceLocation {
+
+		/**
+		 * The path.
+		 */
+		private String path;
+
+		public String getPath() {
+			return path;
+		}
+
+		public void setPath(String path) {
+			this.path = path;
+		}
+
+	}
+
+	/**
+	 * Test {@link CDOViewConnector}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class TestCDOResourceNodeConnector extends CDOResourceNodeConnector {
+		@Override
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			return super.getLocationType(containerType, element);
+		}
+
+		@Override
+		public void initLocation(ILocationContainer container, ILocation location, Object element) {
+			super.initLocation(container, location, element);
+		}
+
+		@Override
+		public boolean match(ILocation location, Object element) {
+			return super.match(location, element);
+		}
+
+	}
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	/**
+	 * A {@link CDOResourceFolder}.
+	 */
+	private static CDOResourceFolder folder;
+
+	/**
+	 * A {@link CDOTextResource}.
+	 */
+	private static CDOTextResource textResource;
+
+	/**
+	 * A {@link CDOBinaryResource}.
+	 */
+	private static CDOBinaryResource binaryResource;
+
+	/**
+	 * A {@link CDOResource}.
+	 */
+	private static CDOResource resource;
+
+	/**
+	 * The {@link CDOViewConnector}.
+	 */
+	private static CDOViewConnector viewConnector = new CDOViewConnector();
+
+	/**
+	 * The connector to test.
+	 */
+	private TestCDOResourceNodeConnector connector = new TestCDOResourceNodeConnector();
+
+	@BeforeClass
+	public static void beforeClass() throws Exception {
+		AllTests.startCDOServer();
+		IConnector connector = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(connector, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+		viewConnector.addSessionToCache(transaction);
+
+		folder = transaction.createResourceFolder(CDOResourceNodeConnectorTests.class.getCanonicalName()
+				+ "/test/");
+		textResource = transaction.createTextResource(CDOResourceNodeConnectorTests.class.getCanonicalName()
+				+ "/test/test.txt");
+		binaryResource = transaction.createBinaryResource(CDOResourceNodeConnectorTests.class
+				.getCanonicalName() + "/test/test.bin");
+		resource = transaction.createResource(CDOResourceNodeConnectorTests.class.getCanonicalName()
+				+ "/test/test.resource");
+		transaction.commit();
+
+		viewConnector.addSessionToCache(transaction);
+		MappingUtils.getConnectorRegistry().register(viewConnector);
+	}
+
+	@AfterClass
+	public static void afterClass() throws Exception {
+		viewConnector.removeSessionFromCache(transaction);
+
+		resource.delete(null);
+		binaryResource.delete(null);
+		textResource.delete(null);
+		folder.delete(null);
+		transaction.commit();
+
+		MappingUtils.getConnectorRegistry().unregister(viewConnector);
+		transaction.close();
+		AllTests.stopCDOServer();
+	}
+
+	@Test
+	public void getLocationTypeFolder() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(folder.getPath());
+
+		assertEquals(ICDOFolderLocation.class, connector.getLocationType(ICDORepositoryLocation.class,
+				folder));
+	}
+
+	@Test
+	public void getLocationTypeBinaryFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(binaryResource.getPath());
+
+		assertEquals(ICDOBinaryResourceLocation.class, connector.getLocationType(ICDORepositoryLocation.class,
+				binaryResource));
+	}
+
+	@Test
+	public void getLocationTypeTextFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(textResource.getPath());
+
+		assertEquals(ICDOTextResourceLocation.class, connector.getLocationType(ICDORepositoryLocation.class,
+				textResource));
+	}
+
+	@Test
+	public void getLocationTypeResource() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(resource.getPath());
+
+		assertEquals(ICDOResourceLocation.class, connector.getLocationType(ICDORepositoryLocation.class,
+				resource));
+	}
+
+	@Test
+	public void getElementFolder() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(folder.getPath());
+
+		final Object element = connector.getElement(location);
+
+		assertTrue(element instanceof CDOResourceFolder);
+		assertEquals(folder.getPath(), ((CDOResourceFolder)element).getPath());
+	}
+
+	@Test
+	public void getElementBinaryFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(binaryResource.getPath());
+
+		final Object element = connector.getElement(location);
+
+		assertTrue(element instanceof CDOBinaryResource);
+		assertEquals(binaryResource.getPath(), ((CDOBinaryResource)element).getPath());
+	}
+
+	@Test
+	public void getElementTextFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(textResource.getPath());
+
+		final Object element = connector.getElement(location);
+
+		assertTrue(element instanceof CDOTextResource);
+		assertEquals(textResource.getPath(), ((CDOTextResource)element).getPath());
+	}
+
+	@Test
+	public void getElementResource() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(resource.getPath());
+
+		final Object element = connector.getElement(location);
+
+		assertTrue(element instanceof CDOResource);
+		assertEquals(resource.getPath(), ((CDOResource)element).getPath());
+	}
+
+	@Test
+	public void getNameFolder() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(folder.getPath());
+
+		assertEquals("/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test",
+				connector.getName(location));
+	}
+
+	@Test
+	public void getNameBinaryFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(binaryResource.getPath());
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.bin",
+				connector.getName(location));
+	}
+
+	@Test
+	public void getNameTextFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(textResource.getPath());
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.txt",
+				connector.getName(location));
+	}
+
+	@Test
+	public void getNameResource() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		location.setContainer(container);
+		location.setPath(resource.getPath());
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.resource",
+				connector.getName(location));
+	}
+
+	@Test
+	public void initLocationFolder() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, folder);
+		location.setContainer(container);
+
+		assertEquals("/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test",
+				location.getPath());
+	}
+
+	@Test
+	public void initLocationBinaryFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, binaryResource);
+		location.setContainer(container);
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.bin",
+				location.getPath());
+	}
+
+	@Test
+	public void initLocationTextFile() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, textResource);
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.txt",
+				location.getPath());
+	}
+
+	@Test
+	public void initLocationResource() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, resource);
+		location.setContainer(container);
+
+		assertEquals(
+				"/org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests/test/test.resource",
+				location.getPath());
+	}
+
+	@Test
+	public void matchFolder() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, folder);
+		location.setContainer(container);
+
+		assertTrue(connector.match(location, folder));
+	}
+
+	@Test
+	public void matchFolderDifferenteBranch() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setBranchID(container.getBranchID() + 42);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, folder);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, folder));
+	}
+
+	@Test
+	public void matchFolderDifferenteRepository() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setUUID(container.getUUID() + "42");
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, folder);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, folder));
+	}
+
+	@Test
+	public void matchFolderDifferentePath() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, folder);
+		location.setContainer(container);
+		location.setPath(location.getPath() + "42");
+
+		assertFalse(connector.match(location, folder));
+	}
+
+	@Test
+	public void matchBinaryResourceFile() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, binaryResource);
+		location.setContainer(container);
+
+		assertTrue(connector.match(location, binaryResource));
+	}
+
+	@Test
+	public void matchBinaryResourceFileDifferenteBranch() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setBranchID(container.getBranchID() + 42);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, binaryResource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, binaryResource));
+	}
+
+	@Test
+	public void matchBinaryResourceFileDifferenteRepository() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setUUID(container.getUUID() + "42");
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, binaryResource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, binaryResource));
+	}
+
+	@Test
+	public void matchBinaryResourceFileDifferentePath() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, binaryResource);
+		location.setContainer(container);
+		location.setPath(location.getPath() + "42");
+
+		assertFalse(connector.match(location, binaryResource));
+	}
+
+	@Test
+	public void matchTextFile() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, textResource);
+		location.setContainer(container);
+
+		assertTrue(connector.match(location, textResource));
+	}
+
+	@Test
+	public void matchTextFileDifferenteBranch() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setBranchID(container.getBranchID() + 42);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, textResource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, textResource));
+	}
+
+	@Test
+	public void matchTextFileDifferenteRepository() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setUUID(container.getUUID() + "42");
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, textResource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, textResource));
+	}
+
+	@Test
+	public void matchTextFileDifferentePath() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, textResource);
+		location.setContainer(container);
+		location.setPath(location.getPath() + "42");
+
+		assertFalse(connector.match(location, textResource));
+	}
+
+	@Test
+	public void matchResource() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, resource);
+		location.setContainer(container);
+
+		assertTrue(connector.match(location, resource));
+	}
+
+	@Test
+	public void matchResourceDifferenteBranch() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setBranchID(container.getBranchID() + 42);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, resource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, resource));
+	}
+
+	@Test
+	public void matchResourceDifferenteRepository() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+		container.setUUID(container.getUUID() + "42");
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, resource);
+		location.setContainer(container);
+
+		assertFalse(connector.match(location, resource));
+	}
+
+	@Test
+	public void matchResourceDifferentePath() throws Exception {
+
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+
+		final ICDORepositoryLocation container = (ICDORepositoryLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(base, transaction);
+
+		final TestCDOFolderLocation location = new TestCDOFolderLocation();
+		connector.initLocation(container, location, resource);
+		location.setContainer(container);
+		location.setPath(location.getPath() + "42");
+
+		assertFalse(connector.match(location, resource));
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOViewConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOViewConnectorTests.java
new file mode 100644
index 0000000..281246a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/CDOViewConnectorTests.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import org.eclipse.emf.cdo.internal.net4j.CDONet4jSessionImpl;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.connector.CDOViewConnector;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link CDOViewConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class CDOViewConnectorTests {
+
+	/**
+	 * Test {@link ICDORepositoryLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCDORepositoryLocation extends TestLocation implements ICDORepositoryLocation {
+
+		/**
+		 * The URL.
+		 */
+		private String url;
+
+		/**
+		 * The UUID.
+		 */
+		private String uuid;
+
+		/**
+		 * The name.
+		 */
+		private String name;
+
+		/**
+		 * The branch ID.
+		 */
+		private int branchID;
+
+		public String getURL() {
+			return url;
+		}
+
+		public void setURL(String newURL) {
+			this.url = newURL;
+		}
+
+		public String getUUID() {
+			return uuid;
+		}
+
+		public void setUUID(String newUUID) {
+			this.uuid = newUUID;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String newName) {
+			this.name = newName;
+		}
+
+		public int getBranchID() {
+			return branchID;
+		}
+
+		public void setBranchID(int id) {
+			this.branchID = id;
+		}
+
+	}
+
+	/**
+	 * Test {@link CDOViewConnector}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class TestCDOViewConnector extends CDOViewConnector {
+		@Override
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			return super.getLocationType(containerType, element);
+		}
+
+		@Override
+		public void initLocation(ILocationContainer container, ILocation location, Object element) {
+			super.initLocation(container, location, element);
+		}
+
+		@Override
+		public boolean match(ILocation location, Object element) {
+			return super.match(location, element);
+		}
+
+	}
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	/**
+	 * The connector to test.
+	 */
+	private static TestCDOViewConnector connector = new TestCDOViewConnector();
+
+	@BeforeClass
+	public static void beforeClass() {
+		AllTests.startCDOServer();
+		IConnector c = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(c, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+		connector.addSessionToCache(transaction);
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		connector.removeSessionFromCache(transaction);
+		transaction.close();
+		AllTests.stopCDOServer();
+	}
+
+	@Test
+	public void getElement() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+		location.setUUID(transaction.getSession().getRepositoryInfo().getUUID());
+		final Object element = connector.getElement(location);
+
+		assertEquals(transaction, element);
+	}
+
+	@Test
+	public void getLocationDescriptor() {
+		final TestBase base = new TestBase();
+		final ILocationDescriptor descriptor = connector.getLocationDescriptor(base, transaction);
+
+		assertEquals(null, descriptor.getContainerDescriptor());
+		assertEquals(transaction, descriptor.getElement());
+		assertEquals("testRepo (tcp://127.0.0.1:12345)", descriptor.getName());
+	}
+
+	@Test
+	public void getLocationTypeNotCDOView() {
+		assertNull(connector.getLocationType(null, new Object()));
+	}
+
+	@Test
+	public void getLocationTypeCDOView() {
+		assertEquals(ICDORepositoryLocation.class, connector.getLocationType(null, transaction));
+	}
+
+	@Test
+	public void getName() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+
+		location.setName(transaction.getSession().getRepositoryInfo().getName());
+		location.setURL(((CDONet4jSessionImpl)transaction.getSession()).getConnector().getURL());
+		location.setUUID(transaction.getSession().getRepositoryInfo().getUUID());
+
+		assertEquals("testRepo (tcp://127.0.0.1:12345)", connector.getName(location));
+	}
+
+	@Test
+	public void getType() {
+		assertEquals(ICDORepositoryLocation.class, connector.getType());
+	}
+
+	@Test
+	public void initLocation() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+
+		connector.initLocation(null, location, transaction);
+
+		assertEquals(null, location.getContainer());
+		assertEquals("testRepo", location.getName());
+		assertEquals(0, location.getBranchID());
+		assertEquals("tcp://127.0.0.1:12345", location.getURL());
+		assertEquals(transaction.getSession().getRepositoryInfo().getUUID(), location.getUUID());
+	}
+
+	@Test
+	public void match() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+
+		location.setName(transaction.getSession().getRepositoryInfo().getName());
+		location.setURL(((CDONet4jSessionImpl)transaction.getSession()).getConnector().getURL());
+		location.setUUID(transaction.getSession().getRepositoryInfo().getUUID());
+
+		assertTrue(connector.match(location, transaction));
+	}
+
+	@Test
+	public void matchDifferentBranch() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+
+		location.setName(transaction.getSession().getRepositoryInfo().getName());
+		location.setURL(((CDONet4jSessionImpl)transaction.getSession()).getConnector().getURL());
+		location.setUUID(transaction.getSession().getRepositoryInfo().getUUID() + 42);
+
+		assertFalse(connector.match(location, transaction));
+	}
+
+	@Test
+	public void matchDifferentRepository() {
+		final TestCDORepositoryLocation location = new TestCDORepositoryLocation();
+
+		location.setName(transaction.getSession().getRepositoryInfo().getName());
+		location.setURL(((CDONet4jSessionImpl)transaction.getSession()).getConnector().getURL());
+		location.setUUID(transaction.getSession().getRepositoryInfo().getUUID() + "42");
+
+		assertFalse(connector.match(location, transaction));
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorCDOTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorCDOTests.java
new file mode 100644
index 0000000..81e96f3
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorCDOTests.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import java.io.IOException;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+/**
+ * Tests {@link EObjectConnector} with CDO.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectConnectorCDOTests extends EObjectConnectorTests {
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	@BeforeClass
+	public static void beforeClass() {
+		AllTests.startCDOServer();
+		IConnector connector = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(connector, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+	}
+
+	@Override
+	protected Resource createResource(String name) {
+		final CDOResource existingResource = transaction.getResource(name, false);
+		if (existingResource != null && existingResource.isExisting()) {
+			try {
+				existingResource.delete(null);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		// CHECKSTYLE:OFF
+		return transaction.createResource("test.xmi");
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		transaction.close();
+		AllTests.stopCDOServer();
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedCDOTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedCDOTests.java
new file mode 100644
index 0000000..911b319
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedCDOTests.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import java.io.IOException;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+/**
+ * Tests {@link EObjectConnector} with CDO.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectConnectorParametrizedCDOTests extends EObjectConnectorParametrizedTests {
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	public EObjectConnectorParametrizedCDOTests(Object[] original, Object[] altered) {
+		super(original, altered);
+	}
+
+	@BeforeClass
+	public static void beforeClass() {
+		AllTests.startCDOServer();
+		EObjectConnectorParametrizedTests.beforeClass();
+		IConnector connector = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(connector, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+	}
+
+	@Override
+	protected Resource createResource(String name) {
+		final CDOResource existingResource = transaction.getResource(name, false);
+		if (existingResource != null && existingResource.isExisting()) {
+			try {
+				existingResource.delete(null);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		// CHECKSTYLE:OFF
+		return transaction.createResource("test.xmi");
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		transaction.close();
+		EObjectConnectorParametrizedTests.afterClass();
+		AllTests.stopCDOServer();
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedTests.java
new file mode 100644
index 0000000..7258e5b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorParametrizedTests.java
@@ -0,0 +1,796 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import anydsl.AnydslPackage;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.intent.mapping.MappingPackage;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectContainer;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector.EObjectContainerHelper;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestCouple;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Tests {@link EObjectConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Parameterized.class)
+public class EObjectConnectorParametrizedTests {
+
+	/**
+	 * Test {@link IEObjectContainer}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestEObjectContainerLocation extends TestLocation implements IEObjectContainer {
+
+		/**
+		 * The XMI content.
+		 */
+		private String xmiContent;
+
+		/**
+		 * The {@link Resource}.
+		 */
+		private Resource resource;
+
+		/**
+		 * The mapping from {@link EObject} {@link URI} fragments to saved {@link URI} fragment.
+		 */
+		private List<ICouple> uriFragments = new ArrayList<ICouple>();
+
+		public void setResource(Resource res) {
+			resource = res;
+		}
+
+		public Resource getResource() {
+			return resource;
+		}
+
+		public String getXMIContent() {
+			return xmiContent;
+		}
+
+		public void setXMIContent(String content) {
+			this.xmiContent = content;
+		}
+
+		public List<ICouple> getSavedURIFragments() {
+			return uriFragments;
+		}
+
+	}
+
+	/**
+	 * Connector for {@link TestEObjectContainerLocation}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestEObjectContainerConnector extends AbstractConnector {
+
+		public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+			// nothing to do here
+			return null;
+		}
+
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			// nothing to do here
+			return null;
+		}
+
+		public Object getElement(ILocation location) {
+			final Resource res;
+
+			if (location instanceof TestEObjectContainerLocation) {
+				res = ((TestEObjectContainerLocation)location).getResource();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		public String getName(ILocation location) {
+			// nothing to do here
+			return null;
+		}
+
+		public Class<? extends ILocation> getType() {
+			return IEObjectContainer.class;
+		}
+
+		@Override
+		protected boolean canUpdate(Object element) {
+			// nothing to do here
+			return false;
+		}
+
+		@Override
+		protected boolean match(ILocation location, Object element) {
+			// nothing to do here
+			return false;
+		}
+
+		@Override
+		protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Test {@link IEObjectLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestEObjectLocation extends TestLocation implements IEObjectLocation {
+
+		/**
+		 * The URI fragment.
+		 */
+		private String uriFragment;
+
+		/**
+		 * The saved URI fragment.
+		 */
+		private String savedUriFragment;
+
+		/**
+		 * The {@link EStructuralFeature#getName() feature name}.
+		 */
+		private String featureName;
+
+		/**
+		 * The index in the {@link EStructuralFeature#getName() feature}.
+		 */
+		private int index;
+
+		public String getURIFragment() {
+			return uriFragment;
+		}
+
+		public void setURIFragment(String fragment) {
+			this.uriFragment = fragment;
+		}
+
+		public String getSavedURIFragment() {
+			return savedUriFragment;
+		}
+
+		public void setSavedURIFragment(String fragment) {
+			savedUriFragment = fragment;
+		}
+
+		public void setFeatureName(String featureName) {
+			this.featureName = featureName;
+		}
+
+		public String getFeatureName() {
+			return featureName;
+		}
+
+		public int getIndex() {
+			return index;
+		}
+
+		public void setIndex(int index) {
+			this.index = index;
+		}
+
+	}
+
+	/**
+	 * The {@link TestEObjectContainerConnector}.
+	 */
+	private static TestEObjectContainerConnector testEObjectContainerConnector = new TestEObjectContainerConnector();
+
+	/**
+	 * The {@link EObjectConnector}.
+	 */
+	private static EObjectConnector eObjectConnector = new EObjectConnector();
+
+	/**
+	 * The original [{@link IEObjectLocation#getEObject() EObject},
+	 * {@link IEObjectLocation#getEStructuralFeature() feature}, {@link IEObjectLocation#getValue() value}].
+	 */
+	private final Object[] original;
+
+	/**
+	 * The altered [{@link IEObjectLocation#getEObject() EObject},
+	 * {@link IEObjectLocation#getEStructuralFeature() feature}, {@link IEObjectLocation#getValue() value}].
+	 */
+	private final Object[] altered;
+
+	/**
+	 * The {@link EObjectContainerHelper}.
+	 */
+	private final EObjectContainerHelper eObjectContainerHelper = new EObjectContainerHelper();
+
+	public EObjectConnectorParametrizedTests(Object[] original, Object[] altered) {
+		this.original = original;
+		this.altered = altered;
+	}
+
+	@Parameters
+	public static Iterable<Object[][]> data() {
+		return Arrays.asList(new Object[][][] {{{AnydslPackage.eINSTANCE.getEClassifiers().get(7), null,
+				null, }, {createEClass(), null, null, }, }, {{AnydslPackage.eINSTANCE.getEClassifiers().get(
+						10), null, null, }, {createEClass(), null, null, }, }, {{
+								((EClass)AnydslPackage.eINSTANCE.getEClassifiers().get(10)).getEOperations()
+										.get(4), null, null, }, {createEOperation(), null, null, }, }, {{
+												AnydslPackage.eINSTANCE.getEClassifiers().get(7),
+												EcorePackage.eINSTANCE.getENamedElement_Name(),
+												"Restaurant", }, {AnydslPackage.eINSTANCE.getEClassifiers()
+														.get(7), EcorePackage.eINSTANCE
+																.getENamedElement_Name(),
+														"ESomethingElse", }, },
+
+				{{((EClass)AnydslPackage.eINSTANCE.getEClassifiers().get(10)).getEOperations().get(4),
+						EcorePackage.eINSTANCE.getENamedElement_Name(), "setCaliber", }, {
+								((EClass)AnydslPackage.eINSTANCE.getEClassifiers().get(10)).getEOperations()
+										.get(4), EcorePackage.eINSTANCE.getENamedElement_Name(),
+								"someEOperation", }, },
+
+				{{AnydslPackage.eINSTANCE.getFood(), EcorePackage.eINSTANCE.getEClass_EOperations(),
+						AnydslPackage.eINSTANCE.getFood__PreferredColor(), }, {AnydslPackage.eINSTANCE
+								.getFood(), EcorePackage.eINSTANCE.getEClass_EOperations(),
+								createEOperation(), }, },
+
+				{{AnydslPackage.eINSTANCE.getNamedElement_Name(), EcorePackage.eINSTANCE
+						.getETypedElement_EType(), AnydslPackage.eINSTANCE.getSingleString(), }, {
+								AnydslPackage.eINSTANCE.getNamedElement_Name(), EcorePackage.eINSTANCE
+										.getETypedElement_EType(), AnydslPackage.eINSTANCE
+												.getCountryData(), }, }, });
+	}
+
+	@BeforeClass
+	public static void beforeClass() {
+		MappingUtils.getConnectorRegistry().register(testEObjectContainerConnector);
+		MappingUtils.getConnectorRegistry().register(eObjectConnector);
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		MappingUtils.getConnectorRegistry().unregister(testEObjectContainerConnector);
+		MappingUtils.getConnectorRegistry().unregister(eObjectConnector);
+	}
+
+	/**
+	 * Creates a new {@link Resource}.
+	 * 
+	 * @param name
+	 *            the resource name
+	 * @return the created {@link Resource}
+	 */
+	protected Resource createResource(String name) {
+		return new XMIResourceImpl(URI.createURI(name));
+	}
+
+	private static EClass createEClass() {
+		final EClass res = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
+
+		res.setName("SomeTestEClass");
+
+		return res;
+	}
+
+	private static EOperation createEOperation() {
+		final EOperation res = EcorePackage.eINSTANCE.getEcoreFactory().createEOperation();
+
+		res.setName("someTestEOperation");
+
+		return res;
+	}
+
+	protected IEObjectLocation createEObjectLocation(Copier copier, TestEObjectContainerLocation container)
+			throws Exception {
+		final TestEObjectLocation res;
+
+		final EObject eObject = copier.get(original[0]);
+		if (original[1] != null) {
+			final EStructuralFeature feature = (EStructuralFeature)original[1];
+			final Object value;
+			if (original[2] instanceof EObject) {
+				value = copier.get(original[2]);
+			} else {
+				value = original[2];
+			}
+			res = (TestEObjectLocation)MappingUtils.getConnectorRegistry().createLocation(container,
+					new Setting() {
+						public void unset() {
+							// nothing to do here
+						}
+
+						public void set(Object newValue) {
+							// nothing to do here
+						}
+
+						public boolean isSet() {
+							return false;
+						}
+
+						public EStructuralFeature getEStructuralFeature() {
+							return feature;
+						}
+
+						public EObject getEObject() {
+							return eObject;
+						}
+
+						public Object get(boolean resolve) {
+							return value;
+						}
+					});
+		} else {
+			res = (TestEObjectLocation)MappingUtils.getConnectorRegistry().createLocation(container, eObject);
+		}
+		res.setObject(eObject);
+
+		return res;
+	}
+
+	public void assertEObjectLocation(IEObjectLocation location, EObject expectedEObject,
+			EStructuralFeature expectedFeature, Object expectedValue) {
+		final Object element = MappingUtils.getConnectorRegistry().getElement(location);
+		if (element instanceof Setting) {
+			final Setting setting = (Setting)element;
+			assertEquals(expectedEObject, setting.getEObject());
+			assertEquals(expectedFeature, setting.getEStructuralFeature());
+			assertEquals(expectedValue, setting.get(true));
+		} else if (element instanceof EObject) {
+			assertEquals(expectedEObject, element);
+		} else {
+			assertNull(location.getContainer());
+		}
+	}
+
+	@Test
+	public void updateEObjects() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(original[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)original[1];
+		final Object expectedValue;
+		if (original[2] instanceof EObject) {
+			expectedValue = copier.get(original[2]);
+		} else {
+			expectedValue = original[2];
+		}
+
+		List<EObject> newEObjects = testEObjects;
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsPlusShift() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(original[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)original[1];
+		final Object expectedValue;
+		if (original[2] instanceof EObject) {
+			expectedValue = copier.get(original[2]);
+		} else {
+			expectedValue = original[2];
+		}
+
+		List<EObject> newEObjects = new ArrayList<EObject>(MappingPackage.eINSTANCE.getEClassifiers());
+		newEObjects.addAll(testEObjects);
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsMinusShift() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(original[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)original[1];
+		final Object expectedValue;
+		if (original[2] instanceof EObject) {
+			expectedValue = copier.get(original[2]);
+		} else {
+			expectedValue = original[2];
+		}
+
+		List<EObject> newEObjects = new ArrayList<EObject>(testEObjects);
+		newEObjects.remove(0);
+		newEObjects.remove(0);
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsAltered() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		if (!copier.containsKey(altered[0])) {
+			copier.copy((EObject)altered[0]);
+		}
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(altered[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)altered[1];
+		final Object expectedValue;
+		if (altered[2] instanceof EObject) {
+			expectedValue = copier.get(altered[2]);
+		} else {
+			expectedValue = altered[2];
+		}
+
+		List<EObject> newEObjects = testEObjects;
+		newEObjects = alterEObjects(copier, newEObjects);
+
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsPlusShiftAltered() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		if (!copier.containsKey(altered[0])) {
+			copier.copy((EObject)altered[0]);
+		}
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(altered[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)original[1];
+		final Object expectedValue;
+		if (altered[2] instanceof EObject) {
+			expectedValue = copier.get(altered[2]);
+		} else {
+			expectedValue = altered[2];
+		}
+
+		List<EObject> newEObjects = new ArrayList<EObject>(MappingPackage.eINSTANCE.getEClassifiers());
+		newEObjects.addAll(testEObjects);
+		newEObjects = alterEObjects(copier, newEObjects);
+
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsMinusShiftAltered() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		if (!copier.containsKey(altered[0])) {
+			copier.copy((EObject)altered[0]);
+		}
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = copier.get(altered[0]);
+		final EStructuralFeature expectedFeature = (EStructuralFeature)original[1];
+		final Object expectedValue;
+		if (altered[2] instanceof EObject) {
+			expectedValue = copier.get(altered[2]);
+		} else {
+			expectedValue = altered[2];
+		}
+
+		List<EObject> newEObjects = new ArrayList<EObject>(testEObjects);
+		newEObjects.remove(0);
+		newEObjects.remove(0);
+		newEObjects = alterEObjects(copier, newEObjects);
+
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsRemoved() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = null;
+		final EStructuralFeature expectedFeature = null;
+		final Object expectedValue = null;
+
+		List<EObject> newEObjects = testEObjects;
+		if (testEObjects.contains(copier.get(original[0]))) {
+			testEObjects.remove(copier.get(original[0]));
+		} else {
+			EcoreUtil.delete(copier.get(original[0]));
+		}
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsPlusShiftRemoved() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = null;
+		final EStructuralFeature expectedFeature = null;
+		final Object expectedValue = null;
+
+		List<EObject> newEObjects = testEObjects;
+		if (testEObjects.contains(copier.get(original[0]))) {
+			testEObjects.remove(copier.get(original[0]));
+		} else {
+			EcoreUtil.delete(copier.get(original[0]));
+		}
+
+		newEObjects.addAll(0, MappingPackage.eINSTANCE.getEClassifiers());
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	@Test
+	public void updateEObjectsMinusShiftRemoved() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		EPackage copy = (EPackage)copier.copy(AnydslPackage.eINSTANCE);
+		copier.copyReferences();
+		final List<EObject> testEObjects = new ArrayList<EObject>(copy.getEClassifiers());
+		final Resource initialResource = createResource("initialResource");
+		container.setResource(initialResource);
+		initialResource.getContents().addAll(testEObjects);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, initialResource);
+		final IEObjectLocation location = createEObjectLocation(copier, container);
+
+		final EObject expectedEObject = null;
+		final EStructuralFeature expectedFeature = null;
+		final Object expectedValue = null;
+
+		List<EObject> newEObjects = testEObjects;
+		if (testEObjects.contains(copier.get(original[0]))) {
+			testEObjects.remove(copier.get(original[0]));
+		} else {
+			EcoreUtil.delete(copier.get(original[0]));
+		}
+
+		newEObjects.remove(0);
+		newEObjects.remove(0);
+		final Resource newResource = createResource("newResource");
+		newResource.getContents().addAll(newEObjects);
+
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, newResource);
+		container.setResource(newResource);
+
+		assertEObjectLocation(location, expectedEObject, expectedFeature, expectedValue);
+	}
+
+	private List<EObject> alterEObjects(Copier copier, List<EObject> eObjects) {
+		final List<EObject> res = eObjects;
+
+		// no feature
+		if (original[1] == null) {
+			final int index = res.indexOf(copier.get(original[0]));
+			if (index != -1) {
+				// replace the object in the list
+				res.remove(index);
+				res.add(index, copier.get(altered[0]));
+			} else {
+				// replace the object in its container
+				EcoreUtil.replace(copier.get(original[0]), copier.get(altered[0]));
+			}
+		} else {
+			// alter the feature
+			final EStructuralFeature feature = (EStructuralFeature)altered[1];
+			if (feature.isMany()) {
+				@SuppressWarnings("unchecked")
+				List<Object> list = (List<Object>)copier.get(original[0]).eGet(feature);
+				final int index = list.indexOf(copier.get(original[2]));
+				list.remove(index);
+				list.add(index, altered[2]);
+			} else {
+				if (altered[2] instanceof EObject) {
+					copier.get(original[0]).eSet(feature, copier.get(altered[2]));
+				} else {
+					copier.get(original[0]).eSet(feature, altered[2]);
+				}
+			}
+		}
+
+		return res;
+	}
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorTests.java
new file mode 100644
index 0000000..f22a5f0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/EObjectConnectorTests.java
@@ -0,0 +1,468 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import anydsl.AnydslPackage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests.TestEObjectContainerConnector;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests.TestEObjectContainerLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests.TestEObjectLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.ITestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestCouple;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestReport;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.eclipse.intent.mapping.tests.text.TextConnectorParametrizedTests.TestTextLocation;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link EObjectConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class EObjectConnectorTests extends EObjectConnector {
+
+	/**
+	 * The {@link EObjectContainerHelper}.
+	 */
+	private final EObjectContainerHelper eObjectContainerHelper = new EObjectContainerHelper();
+
+	@Test
+	public void getLocationTypeNotTypeContainer() {
+		final Class<? extends ILocation> type = getLocationType(ITestLocation.class, "");
+
+		assertNull(type);
+	}
+
+	@Test
+	public void getLocationTypeNotElement() {
+		final Class<? extends ILocation> type = getLocationType(TestEObjectLocation.class, new Object());
+
+		assertNull(type);
+	}
+
+	@Test
+	public void getLocationTypeEObject() {
+		final Class<? extends ILocation> type = getLocationType(TestEObjectContainerLocation.class,
+				AnydslPackage.eINSTANCE);
+
+		assertEquals(IEObjectLocation.class, type);
+	}
+
+	@Test
+	public void getLocationTypeESetting() {
+		final Class<? extends ILocation> type = getLocationType(TestEObjectContainerLocation.class,
+				((InternalEObject)AnydslPackage.eINSTANCE.getProducer()).eSetting(EcorePackage.eINSTANCE
+						.getENamedElement_Name()));
+
+		assertEquals(IEObjectLocation.class, type);
+	}
+
+	/**
+	 * Creates a new {@link Resource}.
+	 * 
+	 * @return the created {@link Resource}
+	 */
+	protected Resource createResource(String name) {
+		return new XMIResourceImpl(URI.createFileURI(name));
+	}
+
+	@Test
+	public void initLocationEObject() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+
+		final TestEObjectContainerConnector testEObjectContainerConnector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(testEObjectContainerConnector);
+		final EObjectConnector eObjectConnector = new EObjectConnector();
+		MappingUtils.getConnectorRegistry().register(eObjectConnector);
+		super.initLocation(container, location, producerEClass);
+
+		final Object element = eObjectConnector.getElement(location);
+		assertTrue(element instanceof EObject);
+		assertEquals(producerEClass, element);
+		assertNull(location.getFeatureName());
+
+		MappingUtils.getConnectorRegistry().unregister(testEObjectContainerConnector);
+		MappingUtils.getConnectorRegistry().unregister(eObjectConnector);
+	}
+
+	@Test
+	public void initLocationSetting() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+
+		final TestEObjectContainerConnector testEObjectContainerConnector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(testEObjectContainerConnector);
+		final EObjectConnector eObjectConnector = new EObjectConnector();
+		MappingUtils.getConnectorRegistry().register(eObjectConnector);
+		super.initLocation(container, location, ((InternalEObject)producerEClass).eSetting(
+				EcorePackage.eINSTANCE.getENamedElement_Name()));
+
+		final Object element = eObjectConnector.getElement(location);
+		assertTrue(element instanceof Setting);
+		assertEquals(producerEClass, ((Setting)element).getEObject());
+		assertEquals(EcorePackage.eINSTANCE.getENamedElement_Name(), ((Setting)element)
+				.getEStructuralFeature());
+		assertEquals("Producer", ((Setting)element).get(true));
+		assertEquals(EcorePackage.eINSTANCE.getENamedElement_Name().getName(), location.getFeatureName());
+
+		MappingUtils.getConnectorRegistry().unregister(testEObjectContainerConnector);
+		MappingUtils.getConnectorRegistry().unregister(eObjectConnector);
+	}
+
+	@Test
+	public void getLocationEObject() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+		super.initLocation(container, location, producerEClass);
+
+		assertEquals(location, super.getLocation(container, producerEClass));
+		assertEquals(null, super.getLocation(container, ((InternalEObject)producerEClass).eSetting(
+				EcorePackage.eINSTANCE.getENamedElement_Name())));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+	@Test
+	public void getLocationSetting() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		copier.copyReferences();
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+		super.initLocation(container, location, ((InternalEObject)producerEClass).eSetting(
+				EcorePackage.eINSTANCE.getENamedElement_Name()));
+
+		assertEquals(null, super.getLocation(container, producerEClass));
+		assertEquals(location, super.getLocation(container, ((InternalEObject)producerEClass).eSetting(
+				EcorePackage.eINSTANCE.getENamedElement_Name())));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+	@Test
+	public void updateEObjectContainerEObjectLocationDeleted() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+
+		super.initLocation(container, location, producerEClass);
+
+		resource.getContents().remove(producerEClass);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+
+		assertTrue(location.isMarkedAsDeleted());
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertTrue(report.getDescription().contains("Producer"));
+		assertTrue(report.getDescription().contains(location.getURIFragment()));
+		assertTrue(report.getDescription().contains("has been deleted."));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+	@Test
+	public void updateEObjectContainerEObjectLocationChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+
+		super.initLocation(container, location, producerEClass);
+
+		producerEClass.setInterface(!producerEClass.isInterface());
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertTrue(report.getDescription().contains("Attribure interface was false changed to true."));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+	@Test
+	public void updateEObjectContainerSettingLocationChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+
+		super.initLocation(container, location, new Setting() {
+			public void unset() {
+				// nothing to do here
+			}
+
+			public void set(Object newValue) {
+				// nothing to do here
+			}
+
+			public boolean isSet() {
+				return false;
+			}
+
+			public EStructuralFeature getEStructuralFeature() {
+				return EcorePackage.eINSTANCE.getEClass_Interface();
+			}
+
+			public EObject getEObject() {
+				return producerEClass;
+			}
+
+			public Object get(boolean resolve) {
+				return producerEClass.getName();
+			}
+		});
+
+		producerEClass.setInterface(!producerEClass.isInterface());
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertTrue(report.getDescription().contains("Producer"));
+		assertTrue(report.getDescription().contains(location.getURIFragment()));
+		assertTrue(report.getDescription().contains(
+				"feature interface value false has been changed to true."));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+	@Test
+	public void updateEObjectContainerSettingLocationManyRemoved() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+		final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
+		container.setContainer(base);
+		final Copier copier = new Copier();
+		final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
+				.eContents()));
+		copier.copyReferences();
+		final EClass foodEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getFood());
+		final Resource resource = createResource("test.xmi");
+		resource.getContents().addAll(eObjects);
+		container.setResource(resource);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+		final IEObjectLocation location = new TestEObjectLocation();
+		location.setContainer(container);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
+		MappingUtils.getConnectorRegistry().register(connector);
+
+		super.initLocation(container, location, new Setting() {
+			public void unset() {
+				// nothing to do here
+			}
+
+			public void set(Object newValue) {
+				// nothing to do here
+			}
+
+			public boolean isSet() {
+				return false;
+			}
+
+			public EStructuralFeature getEStructuralFeature() {
+				return EcorePackage.eINSTANCE.getEClass_EOperations();
+			}
+
+			public EObject getEObject() {
+				return foodEClass;
+			}
+
+			public Object get(boolean resolve) {
+				return foodEClass.getEOperations().get(1);
+			}
+		});
+
+		foodEClass.getEOperations().remove(1);
+		eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
+
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertTrue(report.getDescription().contains("Food"));
+		assertTrue(report.getDescription().contains(location.getURIFragment()));
+		assertTrue(report.getDescription().contains("has been removed from feature eOperations."));
+
+		MappingUtils.getConnectorRegistry().unregister(connector);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/MappingCDOListenerTest.java b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/MappingCDOListenerTest.java
new file mode 100644
index 0000000..8cd4965
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.emf.tests/src/org/eclipse/intent/mapping/emf/tests/connector/MappingCDOListenerTest.java
@@ -0,0 +1,380 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.emf.tests.connector;
+
+import anydsl.AnydslPackage;
+import anydsl.ProductionCompany;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+import org.eclipse.emf.cdo.common.lob.CDOBlob;
+import org.eclipse.emf.cdo.common.lob.CDOClob;
+import org.eclipse.emf.cdo.common.util.CDOException;
+import org.eclipse.emf.cdo.eresource.CDOBinaryResource;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
+import org.eclipse.emf.cdo.eresource.CDOTextResource;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.emf.ICDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOFolderLocation;
+import org.eclipse.intent.mapping.emf.ICDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceLocation;
+import org.eclipse.intent.mapping.emf.ICDOResourceNodeLocation;
+import org.eclipse.intent.mapping.emf.ICDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.emf.IEObjectLocation;
+import org.eclipse.intent.mapping.emf.connector.CDOResourceNodeConnector;
+import org.eclipse.intent.mapping.emf.connector.CDOViewConnector;
+import org.eclipse.intent.mapping.emf.connector.EObjectConnector;
+import org.eclipse.intent.mapping.emf.connector.MappingCDOListener;
+import org.eclipse.intent.mapping.emf.tests.AllTests;
+import org.eclipse.intent.mapping.emf.tests.CDOServer;
+import org.eclipse.intent.mapping.emf.tests.CDOUtils;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests.TestCDOBinaryResourceLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests.TestCDOFolderLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests.TestCDOResourceLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOResourceNodeConnectorTests.TestCDOTextResourceLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.CDOViewConnectorTests.TestCDORepositoryLocation;
+import org.eclipse.intent.mapping.emf.tests.connector.EObjectConnectorParametrizedTests.TestEObjectLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestCouple;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.eclipse.net4j.connector.IConnector;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Test {@link MappingCDOListener}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingCDOListenerTest {
+
+	/**
+	 * The buffer size.
+	 */
+	private static final int BUFFZE_SIZE = 8192;
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction transaction;
+
+	/**
+	 * The {@link CDOTransaction}.
+	 */
+	private static CDOTransaction otherTransaction;
+
+	/**
+	 * The {@link CDOViewConnector}.
+	 */
+	private static CDOViewConnector viewConnector = new CDOViewConnector();
+
+	/**
+	 * The {@link CDOResourceNodeConnector}.
+	 */
+	private static CDOResourceNodeConnector resourceConnector = new CDOResourceNodeConnector();
+
+	/**
+	 * The {@link EObjectConnector}.
+	 */
+	private static EObjectConnector eObjectConnector = new EObjectConnector();
+
+	@BeforeClass
+	public static void beforeClass() {
+		AllTests.startCDOServer();
+		IConnector connector = CDOUtils.getConnector(CDOServer.PROTOCOL + "://" + CDOServer.IP + ":"
+				+ CDOServer.PORT);
+		CDOSession session = CDOUtils.openSession(connector, CDOServer.REPOSITORY_NAME);
+		transaction = CDOUtils.openTransaction(session);
+		otherTransaction = CDOUtils.openTransaction(session);
+
+		viewConnector.addSessionToCache(transaction);
+
+		MappingUtils.getConnectorRegistry().register(viewConnector);
+		MappingUtils.getConnectorRegistry().register(resourceConnector);
+		MappingUtils.getConnectorRegistry().register(eObjectConnector);
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		viewConnector.removeSessionFromCache(transaction);
+
+		MappingUtils.getConnectorRegistry().unregister(viewConnector);
+		MappingUtils.getConnectorRegistry().unregister(resourceConnector);
+		MappingUtils.getConnectorRegistry().unregister(eObjectConnector);
+
+		transaction.close();
+		otherTransaction.close();
+		AllTests.stopCDOServer();
+	}
+
+	@Test
+	public void deleteResourceNode() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test1/";
+		final CDOResourceFolder folder = otherTransaction.createResourceFolder(path);
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ILocation location = MappingUtils.getConnectorRegistry().createLocation(container, folder);
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+
+		viewConnector.addBaseToUpdate(base);
+		folder.delete(null);
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		try {
+			transaction.getResourceNode(path);
+			fail("the resource should be deleted by now.");
+		} catch (CDOException e) {
+			// nothing to do here
+		}
+		assertNull(location.getContainer());
+	}
+
+	@Test
+	public void renameResourceNode() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test2/";
+		final CDOResourceFolder folder = otherTransaction.createResourceFolder(path);
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ICDOResourceNodeLocation location = (ICDOResourceNodeLocation)MappingUtils
+				.getConnectorRegistry().createLocation(container, folder);
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+
+		viewConnector.addBaseToUpdate(base);
+		folder.setName("someNewName");
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		try {
+			transaction.getResourceNode(path);
+			fail("the resource should be deleted by now.");
+		} catch (CDOException e) {
+			// nothing to do here
+		}
+		assertEquals("/org.eclipse.intent.mapping.emf.tests.connector.MappingCDOListenerTest/someNewName",
+				location.getPath());
+	}
+
+	@Test
+	public void renameParentResourceNode() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOFolderLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOFolderLocation>(TestCDOFolderLocation.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test3/";
+		final CDOResourceFolder folder = otherTransaction.createResourceFolder(path);
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ICDOResourceNodeLocation location = (ICDOResourceNodeLocation)MappingUtils
+				.getConnectorRegistry().createLocation(container, folder);
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+
+		viewConnector.addBaseToUpdate(base);
+		folder.getFolder().setName("someNewName");
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		try {
+			transaction.getResourceNode(path);
+			fail("the resource should be deleted by now.");
+		} catch (CDOException e) {
+			// nothing to do here
+		}
+		assertEquals("/someNewName/test3", location.getPath());
+	}
+
+	@Test
+	public void resourceContentChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOResourceLocation>(
+						TestCDOResourceLocation.class));
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test.resource";
+		final CDOResource resource = otherTransaction.createResource(path);
+		final ProductionCompany eObject = AnydslPackage.eINSTANCE.getAnydslFactory()
+				.createProductionCompany();
+		resource.getContents().add(eObject);
+		eObject.setName("MyCompany");
+		resource.save(null);
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ICDOResourceLocation resourceLocation = (ICDOResourceLocation)MappingUtils
+				.getConnectorRegistry().createLocation(container, resource);
+		final IEObjectLocation eObjectLocation = (IEObjectLocation)MappingUtils.getConnectorRegistry()
+				.createLocation(resourceLocation, eObject);
+
+		final String initialXMIContent = resourceLocation.getXMIContent();
+		final String initialURIFragment = eObjectLocation.getURIFragment();
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+		assertFalse(initialXMIContent == null || initialXMIContent.isEmpty());
+		assertFalse(initialURIFragment == null || initialURIFragment.isEmpty());
+
+		viewConnector.addBaseToUpdate(base);
+		eObject.setName("someNewName");
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		assertFalse(resourceLocation.getXMIContent().isEmpty());
+		assertFalse(initialXMIContent.equals(resourceLocation.getXMIContent()));
+		assertTrue(initialURIFragment.equals(eObjectLocation.getURIFragment()));
+	}
+
+	@Test
+	public void textResourceContentChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOTextResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOTextResourceLocation>(
+						TestCDOTextResourceLocation.class));
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test.txt";
+		final CDOTextResource resource = otherTransaction.createTextResource(path);
+		resource.setContents(new CDOClob(new StringReader("some text")));
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ICDOTextResourceLocation resourceLocation = (ICDOTextResourceLocation)MappingUtils
+				.getConnectorRegistry().createLocation(container, resource);
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+		final String initialContent = getContent(resource.getContents().getContents());
+		assertEquals(initialContent, resourceLocation.getText());
+
+		viewConnector.addBaseToUpdate(base);
+		resource.setContents(new CDOClob(new StringReader("some other text blah !")));
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		final String newContent = getContent(resource.getContents().getContents());
+		assertFalse(initialContent.equals(newContent));
+		assertEquals(newContent, resourceLocation.getText());
+	}
+
+	@Test
+	@Ignore
+	public void binaryResourceContentChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(ICDORepositoryLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDORepositoryLocation>(
+						TestCDORepositoryLocation.class));
+		base.getFactory().addDescriptor(ICDOBinaryResourceLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestCDOBinaryResourceLocation>(
+						TestCDOBinaryResourceLocation.class));
+		base.getFactory().addDescriptor(IEObjectLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestEObjectLocation>(TestEObjectLocation.class));
+		base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
+				TestCouple.class));
+
+		final String path = this.getClass().getCanonicalName() + "/test.bin";
+		final CDOBinaryResource resource = otherTransaction.createBinaryResource(path);
+		resource.setContents(new CDOBlob(new ByteArrayInputStream("some binary data".getBytes())));
+		otherTransaction.commit();
+
+		final ILocation container = MappingUtils.getConnectorRegistry().createLocation(base, transaction);
+		final ICDOBinaryResourceLocation resourceLocation = (ICDOBinaryResourceLocation)MappingUtils
+				.getConnectorRegistry().createLocation(container, resource);
+
+		assertNotNull(otherTransaction.getResourceNode(path));
+		assertFalse(container.getContents().isEmpty());
+
+		viewConnector.addBaseToUpdate(base);
+		resource.setContents(new CDOBlob(new ByteArrayInputStream("some other binary data blah !"
+				.getBytes())));
+		otherTransaction.commit();
+		viewConnector.removeBaseToUpdate(base);
+
+		// TODO assert resourceLocation
+	}
+
+	/**
+	 * Gets the content of the given {@link Reader}.
+	 * 
+	 * @param reader
+	 *            the {@link Reader}
+	 * @return the content of the given {@link Reader}
+	 * @throws IOException
+	 *             if the {@link Reader} can't be read
+	 */
+	private String getContent(Reader reader) throws IOException {
+		final StringBuilder builder = new StringBuilder();
+
+		char[] buffer = new char[BUFFZE_SIZE];
+		while (reader.read(buffer) != -1) {
+			builder.append(buffer);
+		}
+
+		return builder.toString();
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/.checkstyle b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.checkstyle
new file mode 100644
index 0000000..5ddb099
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter Tests" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6ConfigurationTests.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter Tests" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/.classpath b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/.project b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.project
new file mode 100644
index 0000000..937effa
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.ide.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.core.prefs b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2c14df6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,311 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.ui.prefs b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/META-INF/MANIFEST.MF b/mapping/tests/org.eclipse.intent.mapping.ide.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b1931b5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests
+Bundle-SymbolicName: org.eclipse.intent.mapping.ide.tests;singleton:=true
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.junit;bundle-version="4.0.0",
+ org.eclipse.intent.mapping;bundle-version="0.10.0",
+ org.eclipse.intent.mapping.ide;bundle-version="0.10.0",
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.intent.mapping.tests
+Export-Package: org.eclipse.intent.mapping.ide.tests,
+ org.eclipse.intent.mapping.ide.tests.adapter,
+ org.eclipse.intent.mapping.ide.tests.connector,
+ org.eclipse.intent.mapping.ide.tests.internal.connector,
+ org.eclipse.intent.mapping.ide.tests.resource
+Bundle-ActivationPolicy: lazy
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/build.properties b/mapping/tests/org.eclipse.intent.mapping.ide.tests/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/org.eclipse.intent.mapping.ide.tests.launch b/mapping/tests/org.eclipse.intent.mapping.ide.tests/org.eclipse.intent.mapping.ide.tests.launch
new file mode 100644
index 0000000..c64aa77
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/org.eclipse.intent.mapping.ide.tests.launch
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<listAttribute key="com.mountainminds.eclemma.core.SCOPE_IDS">
+<listEntry value="=org.eclipse.intent.mapping.ide/src"/>
+</listAttribute>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/mylyn/docs/intent/mapping/ide/tests/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="com.mountainminds.eclemma.ui.launchGroup.coverage"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.intent.mapping.ide.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.intent.mapping.ide.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.equinox.p2.director.app.product"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/plugin.xml b/mapping/tests/org.eclipse.intent.mapping.ide.tests/plugin.xml
new file mode 100644
index 0000000..bd59099
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/plugin.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-extensions="aaa"
+            id="org.eclipse.intent.mapping.ide.tests.content-typeA"
+            name="Test content type A"
+            priority="normal">
+      </content-type>
+      <content-type
+            base-type="org.eclipse.intent.mapping.ide.tests.content-typeA"
+            file-extensions="bbb"
+            id="org.eclipse.intent.mapping.ide.tests.content-typeB"
+            name="Test content type B"
+            priority="normal">
+      </content-type>
+      <content-type
+            base-type="org.eclipse.intent.mapping.ide.tests.content-typeB"
+            file-extensions="ccc"
+            id="org.eclipse.intent.mapping.ide.tests.content-typeC"
+            name="Test content type C"
+            priority="normal">
+      </content-type>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="java.lang.String"
+            class="org.eclipse.intent.mapping.ide.tests.AdapterFactory">
+         <adapter
+               type="java.lang.Integer">
+         </adapter>
+      </factory>
+   </extension>
+
+</plugin>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/pom.xml b/mapping/tests/org.eclipse.intent.mapping.ide.tests/pom.xml
new file mode 100644
index 0000000..18744c4
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.ide.tests</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <name>Mapping IDE Tests</name>
+
+  <packaging>eclipse-test-plugin</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-surefire-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <includes>
+            <include>**/AllTests.class</include>
+          </includes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AdapterFactory.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AdapterFactory.java
new file mode 100644
index 0000000..d257dee
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AdapterFactory.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+
+/**
+ * Test adapter factory.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class AdapterFactory implements IAdapterFactory {
+
+	@SuppressWarnings("unchecked")
+	public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
+		return Integer.parseInt((String)adaptableObject);
+	}
+
+	public Class<?>[] getAdapterList() {
+		return new Class<?>[] {Integer.class };
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AllTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AllTests.java
new file mode 100644
index 0000000..38661fc
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/AllTests.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests;
+
+import org.eclipse.intent.mapping.ide.tests.adapter.MarkerToTextLocationDesciptorTests;
+import org.eclipse.intent.mapping.ide.tests.connector.IdeTextConnectorTests;
+import org.eclipse.intent.mapping.ide.tests.connector.ResourceConnectorTests;
+import org.eclipse.intent.mapping.ide.tests.connector.ResourceLocationListenerTests;
+import org.eclipse.intent.mapping.ide.tests.connector.TextFileConnectorDelegateTests;
+import org.eclipse.intent.mapping.ide.tests.content.ContentTests;
+import org.eclipse.intent.mapping.ide.tests.internal.connector.FileDelegateRegistryTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping.ide plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {FileDelegateRegistryTests.class, ResourceConnectorTests.class,
+		TextFileConnectorDelegateTests.class, IdeTextConnectorTests.class,
+		MarkerToTextLocationDesciptorTests.class, ResourceLocationListenerTests.class,
+		IdeMappingUtilsTests.class, ContentTests.class, })
+public class AllTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/IdeMappingUtilsTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/IdeMappingUtilsTests.java
new file mode 100644
index 0000000..42ec447
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/IdeMappingUtilsTests.java
@@ -0,0 +1,402 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.base.LocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils.ICurrentBaseListener;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils.ISynchronizationPaletteListener;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.intent.mapping.tests.connector.ConnectorRegistryTests.TestLocation1;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link IdeMappingUtils}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeMappingUtilsTests {
+
+	/**
+	 * A test {@link IFileLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestFileLocation extends TestLocation implements IFileLocation {
+
+		/**
+		 * The full path.
+		 */
+		private String fullPath;
+
+		public String getFullPath() {
+			return fullPath;
+		}
+
+		public void setFullPath(String path) {
+			this.fullPath = path;
+		}
+
+	}
+
+	/**
+	 * Test {@link ICurrentBaseListener}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCurrentBaseListener implements ICurrentBaseListener {
+		/**
+		 * Counts calls to {@link TestCurrentBaseListener#currentBaseChanged(IBase, IBase)}.
+		 */
+		private int currentBaseChangedCount;
+
+		public void currentBaseChanged(IBase oldBase, IBase newBase) {
+			currentBaseChangedCount++;
+		}
+
+	}
+
+	/**
+	 * Test {@link ISynchronizationPaletteListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestSynchronizationPaletteListener implements ISynchronizationPaletteListener {
+
+		/**
+		 * Counts calls to {@link ISynchronizationPaletteListener#locationActivated(ILocationDescriptor)}.
+		 */
+		private int locationActivatedCount;
+
+		/**
+		 * Counts calls to {@link ISynchronizationPaletteListener#locationDeactivated(ILocationDescriptor)}.
+		 */
+		private int locationDeactivatedCount;
+
+		/**
+		 * Counts calls to {@link ISynchronizationPaletteListener#contentsAdded(ILocationDescriptor)}.
+		 */
+		private int contentsAddedCount;
+
+		/**
+		 * Counts calls to {@link ISynchronizationPaletteListener#contentsRemoved(ILocationDescriptor)}.
+		 */
+		private int contentsRemovedCount;
+
+		public void locationActivated(ILocationDescriptor locationDescriptor) {
+			locationActivatedCount++;
+		}
+
+		public void locationDeactivated(ILocationDescriptor locationDescriptor) {
+			locationDeactivatedCount++;
+		}
+
+		public void contentsAdded(ILocationDescriptor locationDescriptor) {
+			contentsAddedCount++;
+		}
+
+		public void contentsRemoved(ILocationDescriptor locationDescriptor) {
+			contentsRemovedCount++;
+		}
+
+	}
+
+	@Before
+	public void before() {
+		for (ILocationDescriptor descriptor : IdeMappingUtils.getSynchronizationPalette()) {
+			IdeMappingUtils.removeLocationFromPalette(descriptor);
+		}
+	}
+
+	public static void assertCurrentBaseListener(TestCurrentBaseListener listener,
+			int currentBaseChangedCount) {
+		assertEquals(currentBaseChangedCount, listener.currentBaseChangedCount);
+	}
+
+	public static void assertSynchronizationPaletteListener(TestSynchronizationPaletteListener listener,
+			int locationActivatedCount, int locationDeactivatedCount, int contentsAddedCount,
+			int contentsRemovedCount) {
+		assertEquals(locationActivatedCount, listener.locationActivatedCount);
+		assertEquals(locationDeactivatedCount, listener.locationDeactivatedCount);
+		assertEquals(contentsAddedCount, listener.contentsAddedCount);
+		assertEquals(contentsRemovedCount, listener.contentsRemovedCount);
+	}
+
+	@Test
+	public void activateLocationNull() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.activateLocation(null);
+
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void activateLocationNotInPalette() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+
+		IdeMappingUtils.activateLocation(descriptor);
+
+		assertFalse(IdeMappingUtils.isActive(descriptor));
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void activateLocationInPalette() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		IdeMappingUtils.activateLocation(descriptor);
+
+		assertTrue(IdeMappingUtils.isActive(descriptor));
+		assertSynchronizationPaletteListener(listener, 1, 0, 1, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test(expected = NullPointerException.class)
+	public void adaptNullNull() {
+		IdeMappingUtils.adapt(null, null);
+	}
+
+	@Test
+	public void adaptNullClass() {
+		assertNull(IdeMappingUtils.adapt(null, ILocationDescriptor.class));
+	}
+
+	@Test
+	public void adapt() {
+		final Integer integer = IdeMappingUtils.adapt("17", Integer.class);
+
+		assertNotNull(integer);
+		assertEquals(Integer.valueOf(17), integer);
+	}
+
+	@Test
+	public void addLocationToPaletteNull() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.addLocationToPalette(null);
+		assertSynchronizationPaletteListener(listener, 0, 0, 1, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void addLocationToPaletteNotInPalette() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		assertSynchronizationPaletteListener(listener, 0, 0, 1, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void addLocationToPaletteInPalette() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void asActiveLocationDescriptorFalse() {
+		assertFalse(IdeMappingUtils.asActiveLocationDescriptor());
+	}
+
+	@Test
+	public void asActiveLocationDescriptorTrue() {
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		IdeMappingUtils.activateLocation(descriptor);
+
+		assertTrue(IdeMappingUtils.asActiveLocationDescriptor());
+	}
+
+	@Test
+	public void deactivateLocationNull() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.deactivateLocation(null);
+
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void deactivateLocationNotInPalette() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+
+		IdeMappingUtils.deactivateLocation(descriptor);
+
+		assertFalse(IdeMappingUtils.isActive(descriptor));
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void deactivateLocationInPaletteNotActivated() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.deactivateLocation(descriptor);
+
+		assertFalse(IdeMappingUtils.isActive(descriptor));
+		assertSynchronizationPaletteListener(listener, 0, 0, 0, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test
+	public void deactivateLocationInPaletteActivated() {
+		final TestSynchronizationPaletteListener listener = new TestSynchronizationPaletteListener();
+		final ILocation location = new TestLocation1();
+		ILocationDescriptor descriptor = new LocationDescriptor(location);
+		IdeMappingUtils.addLocationToPalette(descriptor);
+		IdeMappingUtils.activateLocation(descriptor);
+		IdeMappingUtils.addSynchronizationPaletteListener(listener);
+
+		IdeMappingUtils.deactivateLocation(descriptor);
+
+		assertFalse(IdeMappingUtils.isActive(descriptor));
+		assertSynchronizationPaletteListener(listener, 0, 1, 0, 0);
+
+		IdeMappingUtils.removeSynchronizationPaletteListener(listener);
+	}
+
+	@Test(expected = NullPointerException.class)
+	public void getContainingFileLocationNull() {
+		IdeMappingUtils.getContainingFileLocation(null);
+	}
+
+	@Test
+	public void getContainingFileLocationNotContained() {
+		final ILocation location = new TestLocation1();
+
+		assertNull(IdeMappingUtils.getContainingFileLocation(location));
+	}
+
+	@Test
+	public void getContainingFileLocation() {
+		final ILocation container = new TestFileLocation();
+		final ILocation location = new TestLocation1();
+		location.setContainer(container);
+
+		assertEquals(container, IdeMappingUtils.getContainingFileLocation(location));
+	}
+
+	@Test
+	public void getFileConectorDelegateRegistry() {
+		assertNotNull(IdeMappingUtils.getFileConectorDelegateRegistry());
+	}
+
+	@Test
+	public void setCurrentBaseNull() {
+		TestCurrentBaseListener listener = new TestCurrentBaseListener();
+
+		IdeMappingUtils.setCurrentBase(null);
+
+		assertCurrentBaseListener(listener, 0);
+
+		IdeMappingUtils.removeCurrentBaseListener(listener);
+	}
+
+	@Test
+	public void setCurrentBaseNotTheSame() {
+		TestCurrentBaseListener listener = new TestCurrentBaseListener();
+		IdeMappingUtils.addCurrentBaseListener(listener);
+		final IBase base = new TestBase();
+
+		IdeMappingUtils.setCurrentBase(base);
+
+		assertCurrentBaseListener(listener, 1);
+
+		IdeMappingUtils.removeCurrentBaseListener(listener);
+	}
+
+	@Test
+	public void setCurrentBaseTheSame() {
+		TestCurrentBaseListener listener = new TestCurrentBaseListener();
+		final IBase base = new TestBase();
+		IdeMappingUtils.setCurrentBase(base);
+		IdeMappingUtils.addCurrentBaseListener(listener);
+
+		IdeMappingUtils.setCurrentBase(base);
+
+		assertCurrentBaseListener(listener, 0);
+
+		IdeMappingUtils.removeCurrentBaseListener(listener);
+	}
+
+	@Test
+	public void changeCurrentBaseEmptySynchronizationPalette() {
+		final IBase base = new TestBase();
+		IdeMappingUtils.setCurrentBase(base);
+		final ILocation location = new TestLocation1();
+		base.getContents().add(location);
+		location.setContainer(base);
+
+		final ILocationDescriptor desciptor = new LocationDescriptor(location);
+
+		IdeMappingUtils.addLocationToPalette(desciptor);
+
+		assertFalse(IdeMappingUtils.getSynchronizationPalette().isEmpty());
+
+		final IBase newBase = new TestBase();
+		IdeMappingUtils.setCurrentBase(newBase);
+
+		assertTrue(IdeMappingUtils.getSynchronizationPalette().isEmpty());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/adapter/MarkerToTextLocationDesciptorTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/adapter/MarkerToTextLocationDesciptorTests.java
new file mode 100644
index 0000000..4c183ed
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/adapter/MarkerToTextLocationDesciptorTests.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.adapter;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.adapter.MarkerToLocationDescriptorAdapterFactory;
+import org.eclipse.intent.mapping.ide.resource.ITextFileLocation;
+import org.eclipse.intent.mapping.ide.tests.connector.TextFileConnectorDelegateTests.TestTextFileLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.intent.mapping.tests.text.TextConnectorParametrizedTests;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.eclipse.intent.mapping.text.TextRegion;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link org.eclipse.intent.mapping.ide.adapter.MarkerToTextLocationDescriptor
+ * MarkerToTextLocationDescriptor}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MarkerToTextLocationDesciptorTests {
+
+	/**
+	 * Makes sure org.eclipse.intent.mapping.ide is activated.
+	 */
+	private static final MarkerToLocationDescriptorAdapterFactory ADAPTER = new MarkerToLocationDescriptorAdapterFactory();
+
+	@Ignore
+	@Test
+	public void getAdapter() throws CoreException, IOException {
+		final IProject project = createProject();
+
+		project.refreshLocal(1, new NullProgressMonitor());
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/test/test.txt"));
+		file.create(new ByteArrayInputStream("123456".getBytes()), true, new NullProgressMonitor());
+		final IMarker marker = file.createMarker(IMarker.TEXT);
+		marker.setAttribute(IMarker.CHAR_START, 3);
+		marker.setAttribute(IMarker.CHAR_END, 4);
+
+		final IBase base = new TestBase();
+		MappingUtils.getMappingRegistry().register(base);
+		IdeMappingUtils.setCurrentBase(base);
+		base.getFactory().addDescriptor(ITextFileLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestTextFileLocation>(TestTextFileLocation.class));
+		base.getFactory().addDescriptor(ITextLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TextConnectorParametrizedTests.TestTextLocation>(
+						TextConnectorParametrizedTests.TestTextLocation.class));
+
+		ILocationDescriptor locationDescriptor = (ILocationDescriptor)Platform.getAdapterManager().getAdapter(
+				marker, ILocationDescriptor.class);
+
+		assertNotNull(locationDescriptor);
+		assertTrue(locationDescriptor.getElement() instanceof TextRegion);
+		final TextRegion textRegion = (TextRegion)locationDescriptor.getElement();
+		assertEquals(3, textRegion.getStartOffset());
+		assertEquals(4, textRegion.getEndOffset());
+		assertEquals("4", textRegion.getText());
+		assertTrue(locationDescriptor.getContainerDescriptor().getElement() instanceof IFile);
+		assertNull(locationDescriptor.getContainerDescriptor().getContainerDescriptor());
+		final IFile container = (IFile)locationDescriptor.getContainerDescriptor().getElement();
+		assertEquals("/test/test.txt", container.getFullPath().toString());
+
+		project.delete(true, true, new NullProgressMonitor());
+	}
+
+	/**
+	 * Creates an {@link IProject}.
+	 * 
+	 * @return the created {@link IProject}
+	 * @throws CoreException
+	 */
+	private IProject createProject() throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/IdeTextConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/IdeTextConnectorTests.java
new file mode 100644
index 0000000..4c694fe
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/IdeTextConnectorTests.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.connector;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.connector.IdeTextConnector;
+import org.eclipse.intent.mapping.tests.text.TextConnectorTests;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test {@link IdeTextConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeTextConnectorTests extends TextConnectorTests {
+
+	@Test
+	public void isRegistred() {
+		assertTrue(MappingUtils.getConnectorRegistry().getConnector(
+				ITextLocation.class) instanceof IdeTextConnector);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceConnectorTests.java
new file mode 100644
index 0000000..d691313
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceConnectorTests.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.connector;
+
+import java.io.ByteArrayInputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.connector.ResourceConnector;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.eclipse.intent.mapping.ide.resource.IResourceLocation;
+import org.eclipse.intent.mapping.ide.tests.internal.connector.FileDelegateRegistryTests;
+import org.eclipse.intent.mapping.ide.tests.internal.connector.FileDelegateRegistryTests.FileConnectorDelegateA.FileLocationA;
+import org.eclipse.intent.mapping.ide.tests.internal.connector.FileDelegateRegistryTests.FileConnectorDelegateB.FileLocationB;
+import org.eclipse.intent.mapping.ide.tests.internal.connector.FileDelegateRegistryTests.FileConnectorDelegateC.FileLocationC;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestReport;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.eclipse.intent.mapping.tests.text.TextConnectorParametrizedTests.TestTextLocation;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests for {@link ResourceConnector} class.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ResourceConnectorTests {
+
+	/**
+	 * Test {@link ResourceConnector}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class TestResourceConnector extends ResourceConnector {
+		@Override
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			return super.getLocationType(containerType, element);
+		}
+
+		@Override
+		public void initLocation(ILocationContainer container, ILocation location, Object element) {
+			super.initLocation(container, location, element);
+		}
+
+	}
+
+	/**
+	 * Test {@link IFileLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestResourceLocation extends TestLocation implements IFileLocation {
+
+		/**
+		 * The full path.
+		 */
+		private String fullPath;
+
+		public String getFullPath() {
+			return fullPath;
+		}
+
+		public void setFullPath(String path) {
+			fullPath = path;
+		}
+
+	}
+
+	/**
+	 * The {@link ResourceConnector} to test.
+	 */
+	private final TestResourceConnector connector = new TestResourceConnector();
+
+	@BeforeClass
+	public static void beforeClass() throws CoreException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.create(monitor);
+		project.open(monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.create(true, true, monitor);
+
+		final IFile fileA = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.aaa"));
+		fileA.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+
+		final IFile fileB = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.bbb"));
+		fileB.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+
+		final IFile fileC = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.ccc"));
+		fileC.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+	}
+
+	@AfterClass
+	public static void afterClass() throws CoreException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.delete(true, monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.delete(true, monitor);
+
+		final IFile fileA = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.aaa"));
+		fileA.delete(true, monitor);
+
+		final IFile fileB = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.bbb"));
+		fileB.delete(true, monitor);
+
+		final IFile fileC = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.ccc"));
+		fileC.delete(true, monitor);
+	}
+
+	@Before
+	public void before() {
+		IdeMappingUtils.getFileConectorDelegateRegistry().register(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_A);
+		IdeMappingUtils.getFileConectorDelegateRegistry().register(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_B);
+		IdeMappingUtils.getFileConectorDelegateRegistry().register(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_C);
+	}
+
+	@After
+	public void after() {
+		IdeMappingUtils.getFileConectorDelegateRegistry().unregister(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_A);
+		IdeMappingUtils.getFileConectorDelegateRegistry().unregister(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_B);
+		IdeMappingUtils.getFileConectorDelegateRegistry().unregister(
+				FileDelegateRegistryTests.FILE_CONNECTOR_DELEGATE_C);
+	}
+
+	@Test
+	public void getLocationTypeNull() {
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, null);
+
+		assertEquals(null, locationType);
+	}
+
+	@Test
+	public void getLocationTypeIProject() {
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, project);
+
+		assertEquals(IResourceLocation.class, locationType);
+	}
+
+	@Test
+	public void getLocationTypeIFolder() {
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, folder);
+
+		assertEquals(IResourceLocation.class, locationType);
+	}
+
+	@Test
+	public void getLocationTypeIFileA() {
+		final IFile fileA = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.aaa"));
+
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, fileA);
+
+		assertEquals(FileLocationA.class, locationType);
+	}
+
+	@Test
+	public void getLocationTypeIFileB() {
+		final IFile fileB = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.bbb"));
+
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, fileB);
+
+		assertEquals(FileLocationB.class, locationType);
+	}
+
+	@Test
+	public void getLocationTypeIFileC() {
+		final IFile fileC = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.ccc"));
+
+		final Class<? extends ILocation> locationType = connector.getLocationType(null, fileC);
+
+		assertEquals(FileLocationC.class, locationType);
+	}
+
+	@Test
+	public void initLocationIProject() {
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		TestResourceLocation location = new TestResourceLocation();
+
+		connector.initLocation(null, location, project);
+
+		assertEquals("/TestProject", location.getFullPath());
+	}
+
+	@Test
+	public void initLocationIFolder() {
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		TestResourceLocation location = new TestResourceLocation();
+
+		connector.initLocation(null, location, folder);
+
+		assertEquals("/TestProject/TestFolder", location.getFullPath());
+	}
+
+	@Test
+	public void initLocationIFileA() {
+		final IFile fileA = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.aaa"));
+		TestResourceLocation location = new TestResourceLocation();
+
+		connector.initLocation(null, location, fileA);
+
+		assertEquals("/TestProject/TestFolder/TestFile.aaa", location.getFullPath());
+	}
+
+	@Test
+	public void initLocationIFileB() {
+		final IFile fileB = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.bbb"));
+		TestResourceLocation location = new TestResourceLocation();
+
+		connector.initLocation(null, location, fileB);
+
+		assertEquals("/TestProject/TestFolder/TestFile.bbb", location.getFullPath());
+	}
+
+	@Test
+	public void initLocationIFileC() {
+		final IFile fileC = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.ccc"));
+		TestResourceLocation location = new TestResourceLocation();
+
+		connector.initLocation(null, location, fileC);
+
+		assertEquals("/TestProject/TestFolder/TestFile.ccc", location.getFullPath());
+	}
+
+	@Test
+	public void isRegistred() {
+		assertTrue(MappingUtils.getConnectorRegistry().getConnector(
+				IResourceLocation.class) instanceof ResourceConnector);
+	}
+
+	@Test
+	public void getLocationIProject() {
+		final TestLocation container = new TestLocation();
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		TestResourceLocation location = new TestResourceLocation();
+		container.getContents().add(location);
+
+		connector.initLocation(null, location, project);
+
+		assertEquals(location, connector.getLocation(container, project));
+	}
+
+	@Test
+	public void getLocationIFolder() {
+		final TestLocation container = new TestLocation();
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		TestResourceLocation location = new TestResourceLocation();
+		container.getContents().add(location);
+
+		connector.initLocation(null, location, folder);
+
+		assertEquals(location, connector.getLocation(container, folder));
+	}
+
+	@Test
+	public void getLocationIFileB() {
+		final TestLocation container = new TestLocation();
+		final IFile fileB = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.bbb"));
+		TestResourceLocation location = new TestResourceLocation();
+		container.getContents().add(location);
+
+		connector.initLocation(null, location, fileB);
+
+		assertEquals(location, connector.getLocation(container, fileB));
+	}
+
+	@Test
+	public void updateDeleted() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		IdeMappingUtils.setCurrentBase(base);
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		final ILocation target = new TestTextLocation();
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolderToDelete"));
+		folder.create(true, true, new NullProgressMonitor());
+		TestResourceLocation location = new TestResourceLocation();
+		base.getContents().add(location);
+		location.setContainer(base);
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		connector.initLocation(null, location, folder);
+
+		folder.delete(true, new NullProgressMonitor());
+
+		assertTrue(location.isMarkedAsDeleted());
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertEquals("the resource /TestProject/TestFolderToDelete has been deleted.", report
+				.getDescription());
+
+		IdeMappingUtils.setCurrentBase(null);
+	}
+
+	@Test
+	public void updateChanged() throws Exception {
+		final IBase base = new BaseRegistryTests.TestBase();
+		IdeMappingUtils.setCurrentBase(base);
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		final ILocation target = new TestTextLocation();
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolderToMove"));
+		folder.create(true, true, new NullProgressMonitor());
+		TestResourceLocation location = new TestResourceLocation();
+		base.getContents().add(location);
+		location.setContainer(base);
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		connector.initLocation(null, location, folder);
+
+		folder.move(new Path("TestFolderMoved"), true, new NullProgressMonitor());
+
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertEquals("/TestProject/TestFolderToMove moved to /TestProject/TestFolderMoved", report
+				.getDescription());
+
+		IdeMappingUtils.setCurrentBase(null);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceLocationListenerTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceLocationListenerTests.java
new file mode 100644
index 0000000..22f1fcc
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/ResourceLocationListenerTests.java
@@ -0,0 +1,548 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.connector;
+
+import java.io.ByteArrayInputStream;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.IdeMappingUtils;
+import org.eclipse.intent.mapping.ide.resource.IResourceLocation;
+import org.eclipse.intent.mapping.ide.tests.connector.ResourceConnectorTests.TestResourceLocation;
+import org.eclipse.intent.mapping.ide.tests.connector.TextFileConnectorDelegateTests.TestTextFileLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+/**
+ * Tests {@lin org.eclipse.intent.mapping.ide.connector.ResourceLocationListenerk ResourceLocationListener}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ResourceLocationListenerTests {
+
+	/**
+	 * Count calls to {@link TestSetFullPathResourceLocation#setFullPath(String)}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class TestSetFullPathResourceLocation extends TestResourceLocation {
+
+		/**
+		 * Calls to {@link TestSetFullPathResourceLocation#setFullPath(String)} counter.
+		 */
+		private int setFullPathCount;
+
+		@Override
+		public void setFullPath(String path) {
+			super.setFullPath(path);
+			setFullPathCount++;
+		}
+	}
+
+	/**
+	 * Count calls to {@link TestSetFullPathResourceLocation#setFullPath(String)}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private static class TestSetFullPathTextFileLocation extends TestTextFileLocation {
+
+		/**
+		 * Calls to {@link TestSetFullPathResourceLocation#setFullPath(String)} counter.
+		 */
+		private int setFullPathCount;
+
+		@Override
+		public void setFullPath(String path) {
+			super.setFullPath(path);
+			setFullPathCount++;
+		}
+	}
+
+	/**
+	 * Make sure org.eclipse.intent.mapping.ide is activated.
+	 */
+	private static final Activator ACTIVATOR = org.eclipse.intent.mapping.ide.Activator.getDefault();
+
+	/**
+	 * Creates an {@link IFile} that have no {@link IResourceLocation} in the given {@link IContainer}.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 * @return the created {@link IFile} if any, <code>null</code> otherwise
+	 */
+	private IFile createFile(IContainer container) {
+		IFile res = container.getFile(new Path("test.txt"));
+
+		try {
+			res.create(new ByteArrayInputStream("text content".getBytes()), true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Creates an {@link IProject}.
+	 * 
+	 * @return the created {@link IProject}
+	 * @throws CoreException
+	 */
+	private IProject createProject() throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+	/**
+	 * Creates an {@link IProject} and initializes the given {@link IResourceLocation}.
+	 * 
+	 * @param location
+	 *            the {@link IResourceLocation}
+	 * @return the created {@link IProject}
+	 * @throws CoreException
+	 */
+	private IProject createProject(IResourceLocation location) throws CoreException {
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
+		if (project.exists()) {
+			project.delete(true, new NullProgressMonitor());
+		}
+		location.setFullPath(project.getFullPath().toPortableString());
+		project.create(new NullProgressMonitor());
+		project.open(new NullProgressMonitor());
+		return project;
+	}
+
+	/**
+	 * Creates an {@link IFile} and initializes the given {@link IResourceLocation} in the given
+	 * {@link IContainer}.
+	 * 
+	 * @param container
+	 *            the {@link IContainer}
+	 * @param location
+	 *            the {@link IResourceLocation}
+	 * @return the created {@link IFile} if any, <code>null</code> otherwise
+	 */
+	private IFile createFile(IContainer container, IResourceLocation location) {
+		final String fileName = "test.txt";
+		IFile res = container.getFile(new Path(fileName));
+
+		location.setFullPath(res.getFullPath().toPortableString());
+
+		try {
+			res.create(new ByteArrayInputStream("text content".getBytes()), true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			res = null;
+		}
+
+		return res;
+	}
+
+	/**
+	 * Clears the workspace after each test.
+	 */
+	@Before
+	public void beforeTest() {
+		final TestBase base = new TestBase();
+		MappingUtils.getMappingRegistry().register(base);
+		IdeMappingUtils.setCurrentBase(base);
+		try {
+			for (IResource resource : ResourcesPlugin.getWorkspace().getRoot().members()) {
+				((IProject)resource).open(new NullProgressMonitor());
+				resource.delete(true, new NullProgressMonitor());
+			}
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	@Test
+	public void resourceChangedAddProjectNoLocation() {
+		try {
+			final IProject project = createProject();
+
+			assertNotNull(project);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedAddProject() {
+		try {
+			final TestSetFullPathResourceLocation location = new TestSetFullPathResourceLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IProject project = createProject(location);
+
+			assertNotNull(project);
+			assertEquals(3, location.setFullPathCount);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedAddFileNoLocation() {
+		try {
+			final IProject project = createProject();
+			final IFile file = createFile(project);
+
+			assertNotNull(file);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedAddFile() {
+		try {
+			final IProject project = createProject();
+			final TestSetFullPathTextFileLocation location = new TestSetFullPathTextFileLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IFile file = createFile(project, location);
+
+			assertNotNull(file);
+			assertEquals(2, location.setFullPathCount);
+			assertEquals("text content", location.getText());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveProjectNoLocation() {
+		try {
+			final IProject project = createProject();
+
+			assertNotNull(project);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveProject() {
+		try {
+			final TestSetFullPathResourceLocation location = new TestSetFullPathResourceLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IProject project = createProject(location);
+
+			assertNotNull(project);
+			assertEquals(3, location.setFullPathCount);
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(3, location.setFullPathCount);
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveFileNoLocation() {
+		try {
+			final IProject project = createProject();
+			final IFile file = createFile(project);
+
+			assertNotNull(file);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedRemoveFile() {
+		try {
+			final IProject project = createProject();
+			final TestSetFullPathTextFileLocation location = new TestSetFullPathTextFileLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IFile file = createFile(project, location);
+
+			assertNotNull(file);
+			assertEquals(2, location.setFullPathCount);
+			assertEquals("text content", location.getText());
+
+			project.delete(true, new NullProgressMonitor());
+
+			assertEquals(2, location.setFullPathCount);
+			assertEquals("text content", location.getText());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveProjectNoLocation() {
+		try {
+			final IProject project = createProject();
+			project.move(new Path("/project"), true, new NullProgressMonitor());
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveProject() {
+		try {
+			final TestSetFullPathResourceLocation location = new TestSetFullPathResourceLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IProject project = createProject(location);
+
+			assertNotNull(project);
+			assertEquals(3, location.setFullPathCount);
+
+			project.move(new Path("/project"), true, new NullProgressMonitor());
+
+			assertEquals(4, location.setFullPathCount);
+			assertEquals("/project", location.getFullPath());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveFileNoLocation() {
+		try {
+			final IProject project = createProject();
+			final IFile file = createFile(project);
+
+			assertNotNull(file);
+
+			file.move(new Path("/test/file.txt"), true, new NullProgressMonitor());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedMoveFile() {
+		try {
+			final IProject project = createProject();
+			final TestSetFullPathTextFileLocation location = new TestSetFullPathTextFileLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IFile file = createFile(project, location);
+
+			assertNotNull(file);
+			assertEquals(2, location.setFullPathCount);
+
+			file.move(new Path("/test/file.txt"), true, new NullProgressMonitor());
+
+			assertEquals(3, location.setFullPathCount);
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenProjectNoLocation() {
+		try {
+			final IProject project = createProject();
+
+			assertNotNull(project);
+
+			project.close(new NullProgressMonitor());
+
+			project.open(new NullProgressMonitor());
+
+			project.delete(true, new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenProject() {
+		try {
+			final TestSetFullPathResourceLocation location = new TestSetFullPathResourceLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IProject project = createProject(location);
+
+			assertNotNull(project);
+			assertEquals(3, location.setFullPathCount);
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(3, location.setFullPathCount);
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(4, location.setFullPathCount);
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenFileNoLocation() {
+		try {
+			final IProject project = createProject();
+			final IFile file = createFile(project);
+
+			assertNotNull(file);
+
+			project.close(new NullProgressMonitor());
+
+			project.open(new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedOpenFile() {
+		try {
+			final IProject project = createProject();
+			final TestSetFullPathTextFileLocation location = new TestSetFullPathTextFileLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IFile file = createFile(project, location);
+
+			assertNotNull(file);
+			assertEquals(2, location.setFullPathCount);
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(2, location.setFullPathCount);
+
+			project.open(new NullProgressMonitor());
+
+			assertEquals(3, location.setFullPathCount);
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseProjectNoLocation() {
+		try {
+			final IProject project = createProject();
+
+			assertNotNull(project);
+
+			project.close(new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseProject() {
+		try {
+			final TestSetFullPathResourceLocation location = new TestSetFullPathResourceLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IProject project = createProject(location);
+
+			assertNotNull(project);
+			assertEquals(3, location.setFullPathCount);
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(3, location.setFullPathCount);
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseFileNoLocation() {
+		try {
+			final IProject project = createProject();
+			final IFile file = createFile(project);
+
+			assertNotNull(file);
+
+			project.close(new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void resourceChangedCloseFile() {
+		try {
+			final IProject project = createProject();
+			final TestSetFullPathTextFileLocation location = new TestSetFullPathTextFileLocation();
+			IdeMappingUtils.getCurrentBase().getContents().add(location);
+			final IFile file = createFile(project, location);
+
+			assertNotNull(file);
+			assertEquals(2, location.setFullPathCount);
+
+			project.close(new NullProgressMonitor());
+
+			assertEquals(2, location.setFullPathCount);
+		} catch (CoreException e) {
+			e.printStackTrace();
+			fail(e.getMessage());
+		}
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/TextFileConnectorDelegateTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/TextFileConnectorDelegateTests.java
new file mode 100644
index 0000000..5c56ba2
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/connector/TextFileConnectorDelegateTests.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.connector;
+
+import java.io.ByteArrayInputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.connector.TextFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.resource.ITextFileLocation;
+import org.eclipse.intent.mapping.ide.tests.connector.ResourceConnectorTests.TestResourceLocation;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests for {@link TextFileConnectorDelegate}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextFileConnectorDelegateTests {
+
+	/**
+	 * Test {@link ITextFileLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestTextFileLocation extends TestResourceLocation implements ITextFileLocation {
+
+		/**
+		 * The text content.
+		 */
+		private String text;
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.text.ITextContainer#setText(java.lang.String)
+		 */
+		public void setText(String text) {
+			this.text = text;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.text.ITextContainer#getText()
+		 */
+		public String getText() {
+			return text;
+		}
+
+	}
+
+	/**
+	 * The {@link TextFileConnectorDelegate} to test.
+	 */
+	private final TextFileConnectorDelegate delegate = new TextFileConnectorDelegate();
+
+	@BeforeClass
+	public static void beforeClass() throws CoreException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.create(monitor);
+		project.open(monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.create(true, true, monitor);
+
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.txt"));
+		file.create(new ByteArrayInputStream("text content".getBytes()), true, monitor);
+	}
+
+	@AfterClass
+	public static void afterClass() throws CoreException {
+		final NullProgressMonitor monitor = new NullProgressMonitor();
+
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestProject");
+		project.delete(true, monitor);
+
+		final IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(
+				"TestProject/TestFolder"));
+		folder.delete(true, monitor);
+
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.txt"));
+		file.delete(true, monitor);
+	}
+
+	@Test
+	public void getContentType() {
+		final IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+		final IContentType contentType = contentTypeManager.getContentType(IContentTypeManager.CT_TEXT);
+		final IFileType expected = MappingUtils.getFileTypeRegistry().getFileType(contentType.getId());
+
+		assertEquals(expected, delegate.getFileType());
+	}
+
+	@Test
+	public void getFileLocationType() {
+		assertEquals(ITextFileLocation.class, delegate.getFileLocationType());
+	}
+
+	@Test
+	public void initLocation() {
+		final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(
+				"TestProject/TestFolder/TestFile.txt"));
+		TestTextFileLocation location = new TestTextFileLocation();
+
+		delegate.initLocation(null, location, file);
+
+		assertEquals("text content", location.getText());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/ContentTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/ContentTests.java
new file mode 100644
index 0000000..803c13d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/ContentTests.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.content;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {IdeFileTypeRegistryTests.class })
+public class ContentTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/IdeFileTypeRegistryTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/IdeFileTypeRegistryTests.java
new file mode 100644
index 0000000..8507eac
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/content/IdeFileTypeRegistryTests.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.content;
+
+import java.io.IOException;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.Activator;
+import org.eclipse.intent.mapping.ide.internal.content.IdeFileTypeRegistry;
+import org.eclipse.intent.mapping.tests.content.FileTypeRegistryTests;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link IdeFileTypeRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class IdeFileTypeRegistryTests extends FileTypeRegistryTests {
+
+	/**
+	 * Make sure is activated.
+	 */
+	private static final Activator ACTIVATOR = Activator.getDefault();
+
+	@Test
+	public void isRegistered() {
+		assertTrue(MappingUtils.getFileTypeRegistry() instanceof IdeFileTypeRegistry);
+	}
+
+	@Test
+	public void getFileTypeForNullNull() throws IOException {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, null);
+
+		assertEquals("org.eclipse.core.runtime.text", result.getID());
+	}
+
+	@Test
+	public void getFileTypeA() {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType(
+				"org.eclipse.intent.mapping.ide.tests.content-typeA");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeA", result.getID());
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeA"));
+		assertFalse(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeB"));
+		assertFalse(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeC"));
+	}
+
+	@Test
+	public void getFileTypeB() {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType(
+				"org.eclipse.intent.mapping.ide.tests.content-typeB");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeB", result.getID());
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeA"));
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeB"));
+		assertFalse(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeC"));
+	}
+
+	@Test
+	public void getFileTypeC() {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType(
+				"org.eclipse.intent.mapping.ide.tests.content-typeC");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeC", result.getID());
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeA"));
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeB"));
+		assertTrue(result.isKindOf("org.eclipse.intent.mapping.ide.tests.content-typeC"));
+	}
+
+	@Test
+	public void getFileTypeForA() throws IOException {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, "test.aaa");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeA", result.getID());
+	}
+
+	@Test
+	public void getFileTypeForB() throws IOException {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, "test.bbb");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeB", result.getID());
+	}
+
+	@Test
+	public void getFileTypeForC() throws IOException {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, "test.ccc");
+
+		assertEquals("org.eclipse.intent.mapping.ide.tests.content-typeC", result.getID());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/internal/connector/FileDelegateRegistryTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/internal/connector/FileDelegateRegistryTests.java
new file mode 100644
index 0000000..38bc3f8
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/internal/connector/FileDelegateRegistryTests.java
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.internal.connector;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.ide.connector.AbstractFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.connector.IFileConnectorDelegate;
+import org.eclipse.intent.mapping.ide.internal.connector.FileDelegateRegistry;
+import org.eclipse.intent.mapping.ide.resource.IFileLocation;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests {@link FileDelegateRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FileDelegateRegistryTests {
+
+	/**
+	 * Content type A {@link IContentType#getId() ID}.
+	 */
+	public static final String CONTENT_TYPE_A = "org.eclipse.intent.mapping.ide.tests.content-typeA";
+
+	/**
+	 * Content type B {@link IContentType#getId() ID}.
+	 */
+	public static final String CONTENT_TYPE_B = "org.eclipse.intent.mapping.ide.tests.content-typeB";
+
+	/**
+	 * Content type C {@link IContentType#getId() ID}.
+	 */
+	public static final String CONTENT_TYPE_C = "org.eclipse.intent.mapping.ide.tests.content-typeC";
+
+	/**
+	 * Test {@link IFileConnectorDelegate} A.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class FileConnectorDelegateA extends AbstractFileConnectorDelegate {
+
+		/**
+		 * Test {@link IFileLocation}.
+		 *
+		 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+		 */
+		public interface FileLocationA extends IFileLocation {
+
+		}
+
+		public IFileType getFileType() {
+			return MappingUtils.getFileTypeRegistry().getFileType(CONTENT_TYPE_A);
+		}
+
+		public Class<? extends IFileLocation> getFileLocationType() {
+			return FileLocationA.class;
+		}
+
+		public void initLocation(ILocationContainer container, IFileLocation location, IFile element) {
+			// nothing to do here
+		}
+
+		public Object getElement(IFileLocation location) {
+			// nothing to do here
+			return null;
+		}
+
+	}
+
+	/**
+	 * Test {@link IFileConnectorDelegate} B.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class FileConnectorDelegateB extends AbstractFileConnectorDelegate {
+
+		/**
+		 * Test {@link IFileLocation}.
+		 *
+		 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+		 */
+		public interface FileLocationB extends IFileLocation {
+
+		}
+
+		public IFileType getFileType() {
+			return MappingUtils.getFileTypeRegistry().getFileType(CONTENT_TYPE_B);
+		}
+
+		public Class<? extends IFileLocation> getFileLocationType() {
+			return FileLocationB.class;
+		}
+
+		public void initLocation(ILocationContainer container, IFileLocation location, IFile element) {
+			// nothing to do here
+		}
+
+		public Object getElement(IFileLocation location) {
+			// nothing to do here
+			return null;
+		}
+
+	}
+
+	/**
+	 * Test {@link IFileConnectorDelegate} C.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class FileConnectorDelegateC extends AbstractFileConnectorDelegate {
+
+		/**
+		 * Test {@link IFileLocation}.
+		 *
+		 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+		 */
+		public interface FileLocationC extends IFileLocation {
+
+		}
+
+		public IFileType getFileType() {
+			return MappingUtils.getFileTypeRegistry().getFileType(CONTENT_TYPE_C);
+		}
+
+		public Class<? extends IFileLocation> getFileLocationType() {
+			return FileLocationC.class;
+		}
+
+		public void initLocation(ILocationContainer container, IFileLocation location, IFile element) {
+			// nothing to do here
+		}
+
+		public Object getElement(IFileLocation location) {
+			// nothing to do here
+			return null;
+		}
+
+	}
+
+	/**
+	 * The {@link FileConnectorDelegateA}.
+	 */
+	public static final FileConnectorDelegateA FILE_CONNECTOR_DELEGATE_A = new FileConnectorDelegateA();
+
+	/**
+	 * The {@link FileConnectorDelegateB}.
+	 */
+	public static final FileConnectorDelegateB FILE_CONNECTOR_DELEGATE_B = new FileConnectorDelegateB();
+
+	/**
+	 * The {@link FileConnectorDelegateC}.
+	 */
+	public static final FileConnectorDelegateC FILE_CONNECTOR_DELEGATE_C = new FileConnectorDelegateC();
+
+	/**
+	 * The {@link FileDelegateRegistry} to test.
+	 */
+	private FileDelegateRegistry registry;
+
+	@Before
+	public void before() {
+		registry = new FileDelegateRegistry();
+	}
+
+	@Test(expected = java.lang.IllegalArgumentException.class)
+	public void registerNull() {
+		registry.register(null);
+	}
+
+	@Test
+	public void register() {
+		IFileConnectorDelegate delegate = new FileConnectorDelegateA();
+
+		registry.register(delegate);
+
+		assertEquals(1, registry.getConnectorDelegates().size());
+		assertEquals(delegate, registry.getConnectorDelegates().get(0));
+	}
+
+	@Test
+	public void registerOrder() {
+		registry.register(FILE_CONNECTOR_DELEGATE_B);
+		registry.register(FILE_CONNECTOR_DELEGATE_A);
+		registry.register(FILE_CONNECTOR_DELEGATE_C);
+
+		assertEquals(3, registry.getConnectorDelegates().size());
+		assertEquals(FILE_CONNECTOR_DELEGATE_C, registry.getConnectorDelegates().get(0));
+		assertEquals(FILE_CONNECTOR_DELEGATE_B, registry.getConnectorDelegates().get(1));
+		assertEquals(FILE_CONNECTOR_DELEGATE_A, registry.getConnectorDelegates().get(2));
+	}
+
+	@Test
+	public void unregisterNull() {
+		registry.unregister(null);
+
+		assertEquals(0, registry.getConnectorDelegates().size());
+	}
+
+	@Test
+	public void unregister() {
+		IFileConnectorDelegate delegate = new FileConnectorDelegateA();
+		registry.register(delegate);
+
+		registry.unregister(delegate);
+
+		assertEquals(0, registry.getConnectorDelegates().size());
+	}
+
+	@Test
+	public void getConnectorDelegatesDefault() {
+		assertEquals(0, registry.getConnectorDelegates().size());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractResourceLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractResourceLocationTests.java
new file mode 100644
index 0000000..8c5a365
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractResourceLocationTests.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.resource;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.resource.IResourceLocation;
+import org.eclipse.intent.mapping.tests.base.AbstractLocationTests;
+import org.junit.After;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests for {@link IResourceLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractResourceLocationTests extends AbstractLocationTests {
+
+	@Override
+	public void before() {
+		super.before();
+		MappingUtils.getMappingRegistry().register(base);
+	}
+
+	@After
+	public void after() {
+		MappingUtils.getMappingRegistry().unregister(base);
+	}
+
+	protected IResourceLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(IResourceLocation.class);
+	}
+
+	@Test
+	public void setFullPathNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IResourceLocation location = createLocation();
+
+		location.setFullPath(null);
+
+		assertEquals(null, location.getFullPath());
+	}
+
+	@Test
+	public void setFullPath() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		IResourceLocation location = createLocation();
+
+		location.setFullPath("test text");
+
+		assertEquals("test text", location.getFullPath());
+	}
+
+	@Test
+	public void getFullPathDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		IResourceLocation location = createLocation();
+
+		assertEquals(null, location.getFullPath());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractTextFileLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractTextFileLocationTests.java
new file mode 100644
index 0000000..5392875
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.ide.tests/src/org/eclipse/intent/mapping/ide/tests/resource/AbstractTextFileLocationTests.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.ide.tests.resource;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.ide.resource.ITextFileLocation;
+import org.junit.After;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests for {@link ITextFileLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractTextFileLocationTests extends AbstractResourceLocationTests {
+
+	@Override
+	public void before() {
+		super.before();
+		MappingUtils.getMappingRegistry().register(base);
+	}
+
+	@After
+	public void after() {
+		MappingUtils.getMappingRegistry().unregister(base);
+	}
+
+	protected ITextFileLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ITextFileLocation.class);
+	}
+
+	@Test
+	public void setTextNull() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		ITextFileLocation location = createLocation();
+
+		location.setText(null);
+
+		assertEquals(null, location.getText());
+	}
+
+	@Test
+	public void setText() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		ITextFileLocation location = createLocation();
+
+		location.setText("test text");
+
+		assertEquals("test text", location.getText());
+	}
+
+	@Test
+	public void getTextDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		ITextFileLocation location = createLocation();
+
+		assertEquals(null, location.getText());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/.checkstyle b/mapping/tests/org.eclipse.intent.mapping.tests/.checkstyle
new file mode 100644
index 0000000..b9b404a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/.checkstyle
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="ModelWriter" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <local-check-config name="ModelWriter Test" location="/eu.modelwriter.codestyle/codestyle/ModelWriterCheckstyle6ConfigurationTests.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="ModelWriter Test" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="google-diff-match-patch"/>
+  </filter>
+</fileset-config>
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/.classpath b/mapping/tests/org.eclipse.intent.mapping.tests/.classpath
new file mode 100644
index 0000000..1ac0f88
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="resources"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/.project b/mapping/tests/org.eclipse.intent.mapping.tests/.project
new file mode 100644
index 0000000..ee30377
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.mapping.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.core.prefs b/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3433b02
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,315 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.ui.prefs b/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..99aaf4f
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Intent
+formatter_settings_version=13
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;eu;fr;java;javax;org;\#org.junit;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\nname\="typecomment"&gt;/**\n * @author &lt;a href\="mailto\:laurent.goubet@obeo.fr"&gt;Laurent Goubet&lt;/a&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n *\n * @author ${user}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**{@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\n * Copyright (c) ${year} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *    {INITIAL AUTHOR} - initial API and implementation and/or initial documentation\n *    ...\n *******************************************************************************/\n${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/META-INF/MANIFEST.MF b/mapping/tests/org.eclipse.intent.mapping.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2d9996d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests
+Bundle-SymbolicName: org.eclipse.intent.mapping.tests
+Bundle-Version: 0.10.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.intent.mapping.tests,
+ org.eclipse.intent.mapping.tests.base,
+ org.eclipse.intent.mapping.tests.connector,
+ org.eclipse.intent.mapping.tests.content,
+ org.eclipse.intent.mapping.tests.text
+Require-Bundle: org.junit;bundle-version="4.0.0",
+ org.eclipse.intent.mapping,
+ org.eclipse.intent.mapping.emf
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/build.properties b/mapping/tests/org.eclipse.intent.mapping.tests/build.properties
new file mode 100644
index 0000000..fdd898d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/,\
+           resources/
+bin.includes = META-INF/,\
+               .
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/org.eclipse.intent.mapping.tests.launch b/mapping/tests/org.eclipse.intent.mapping.tests/org.eclipse.intent.mapping.tests.launch
new file mode 100644
index 0000000..34a9f86
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/org.eclipse.intent.mapping.tests.launch
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="com.mountainminds.eclemma.core.SCOPE_IDS">
+<listEntry value="=org.eclipse.intent.mapping/src"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.intent.mapping.tests/src/org/eclipse/mylyn/docs/intent/mapping/tests/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="com.mountainminds.eclemma.ui.launchGroup.coverage"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.intent.mapping.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.intent.mapping.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+</launchConfiguration>
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/pom.xml b/mapping/tests/org.eclipse.intent.mapping.tests/pom.xml
new file mode 100644
index 0000000..146e33a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.mapping.tests</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <name>Mapping Tests</name>
+
+  <packaging>eclipse-test-plugin</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-surefire-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <includes>
+            <include>**/AllTests.class</include>
+          </includes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/resources/text.txt b/mapping/tests/org.eclipse.intent.mapping.tests/resources/text.txt
new file mode 100644
index 0000000..2ab99f6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/resources/text.txt
@@ -0,0 +1,50 @@
+Eclipse Foundation Software User Agreement
+
+April 14, 2010
+
+Usage Of Content
+
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.
+
+Applicable Licenses
+
+Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.
+
+Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").
+
+Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
+Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
+A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
+Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.
+The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:
+
+The top-level (root) directory
+Plug-in and Fragment directories
+Inside Plug-ins and Fragments packaged as JARs
+Sub-directories of the directory named "src" of certain Plug-ins
+Feature directories
+Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.
+
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
+
+Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
+Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
+Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)
+Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.
+
+Use of Provisioning Technology
+
+The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
+
+You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:
+
+A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based product.
+During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.
+Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.
+Cryptography
+
+Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
\ No newline at end of file
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/AllTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/AllTests.java
new file mode 100644
index 0000000..a7cf9dc
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/AllTests.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests;
+
+import org.eclipse.intent.mapping.tests.base.LocationDescriptorTests;
+import org.eclipse.intent.mapping.tests.base.ObjectLocationDescriptorTests;
+import org.eclipse.intent.mapping.tests.connector.ConnectorTests;
+import org.eclipse.intent.mapping.tests.content.ContentTests;
+import org.eclipse.intent.mapping.tests.internal.base.BaseTests;
+import org.eclipse.intent.mapping.tests.text.TextTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {BaseTests.class, ConnectorTests.class, TextTests.class, MappingUtilsTests.class,
+		ObjectLocationDescriptorTests.class, LocationDescriptorTests.class, ContentTests.class })
+public class AllTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/MappingUtilsTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/MappingUtilsTests.java
new file mode 100644
index 0000000..b4cf0b0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/MappingUtilsTests.java
@@ -0,0 +1,668 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.BaseElementFactory.FactoryDescriptor;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLink;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestReport;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link MappingUtils}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class MappingUtilsTests {
+
+	@Test(expected = NullPointerException.class)
+	public void getBaseNull() {
+		MappingUtils.getBase(null);
+	}
+
+	@Test
+	public void getBaseNoBase() {
+		final TestLocation location = new TestLocation();
+		final IBase base = MappingUtils.getBase(location);
+
+		assertNull(base);
+	}
+
+	@Test
+	public void getBase() {
+		final TestLocation location = new TestLocation();
+		final TestBase container = new TestBase();
+		location.setContainer(container);
+
+		final IBase base = MappingUtils.getBase(location);
+
+		assertEquals(container, base);
+	}
+
+	@Test
+	public void getConnectorRegistry() {
+		assertNotNull(MappingUtils.getConnectorRegistry());
+	}
+
+	@Test
+	public void getMappingRegistry() {
+		assertNotNull(MappingUtils.getMappingRegistry());
+	}
+
+	@Test(expected = IllegalArgumentException.class)
+	public void getDiffMatchNullNull() {
+		MappingUtils.getDiffMatch(null, null);
+	}
+
+	@Test(expected = IllegalArgumentException.class)
+	public void getDiffMatchStringNull() {
+		MappingUtils.getDiffMatch("", null);
+	}
+
+	@Test(expected = IllegalArgumentException.class)
+	public void getDiffMatchNullString() {
+		MappingUtils.getDiffMatch(null, "");
+	}
+
+	@Test
+	public void getDiffMatch() {
+		assertNotNull(MappingUtils.getDiffMatch("", ""));
+	}
+
+	@Test
+	public void registerLocationImplementationBeforeBase() throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		MappingUtils.registerLocationImplementation(TestBase.class, ILocation.class,
+				new FactoryDescriptor<TestLocation>(TestLocation.class));
+
+		final IBase base = new TestBase();
+		MappingUtils.getMappingRegistry().register(base);
+
+		final ILocation location = base.getFactory().createElement(ILocation.class);
+
+		assertEquals(TestLocation.class, location.getClass());
+	}
+
+	@Test
+	public void registerLocationImplementationAfterBase() throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final IBase base = new TestBase();
+		MappingUtils.getMappingRegistry().register(base);
+
+		MappingUtils.registerLocationImplementation(TestBase.class, ILocation.class,
+				new FactoryDescriptor<TestLocation>(TestLocation.class));
+
+		final ILocation location = base.getFactory().createElement(ILocation.class);
+
+		assertEquals(TestLocation.class, location.getClass());
+	}
+
+	@Test
+	public void unregisterLocationImplementation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		MappingUtils.registerLocationImplementation(TestBase.class, ILocation.class,
+				new FactoryDescriptor<TestLocation>(TestLocation.class));
+
+		final IBase base = new TestBase();
+		MappingUtils.getMappingRegistry().register(base);
+
+		final ILocation location = base.getFactory().createElement(ILocation.class);
+
+		assertEquals(TestLocation.class, location.getClass());
+
+		MappingUtils.unregisterLocationImplementation(TestBase.class, ILocation.class);
+
+		assertNull(base.getFactory().createElement(ILocation.class));
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void getLinkNullNull() {
+		MappingUtils.getLink(null, null);
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void getLinkSourceNull() {
+		final ILocation source = new TestLocation();
+
+		MappingUtils.getLink(source, null);
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void getLinkNullTarget() {
+		final ILocation target = new TestLocation();
+
+		MappingUtils.getLink(null, target);
+	}
+
+	@Test
+	public void getLinkNoLink() {
+		final ILocation source = new TestLocation();
+		final ILocation target = new TestLocation();
+
+		final ILink res = MappingUtils.getLink(source, target);
+
+		assertNull(res);
+	}
+
+	@Test
+	public void getLink() {
+		final ILocation source = new TestLocation();
+		final ILocation target = new TestLocation();
+		final ILink link = new TestLink();
+		link.setSource(source);
+		link.setTarget(target);
+		source.getTargetLinks().add(link);
+		target.getSourceLinks().add(link);
+
+		final ILink res = MappingUtils.getLink(source, target);
+
+		assertEquals(link, res);
+	}
+
+	@Test
+	public void getLinkNotOposite() {
+		final ILocation source = new TestLocation();
+		final ILocation target = new TestLocation();
+		final ILink link = new TestLink();
+		link.setSource(source);
+		link.setTarget(target);
+		source.getTargetLinks().add(link);
+		target.getSourceLinks().add(link);
+
+		final ILink res = MappingUtils.getLink(target, source);
+
+		assertNull(res);
+	}
+
+	@Test
+	public void getLinkSourceMoreLinks() {
+		final ILocation source = new TestLocation();
+		final ILocation target = new TestLocation();
+		final ILink link = new TestLink();
+		final ILink link1 = new TestLink();
+		link.setSource(source);
+		link.setTarget(target);
+		source.getTargetLinks().add(link);
+		source.getTargetLinks().add(link1);
+		target.getSourceLinks().add(link);
+
+		final ILink res = MappingUtils.getLink(source, target);
+
+		assertEquals(link, res);
+	}
+
+	@Test
+	public void getLinkNotOpositeSourceMoreLinks() {
+		final ILocation source = new TestLocation();
+		final ILocation target = new TestLocation();
+		final ILink link = new TestLink();
+		final ILink link1 = new TestLink();
+		link.setSource(source);
+		link.setTarget(target);
+		source.getTargetLinks().add(link);
+		source.getTargetLinks().add(link1);
+		target.getSourceLinks().add(link);
+
+		final ILink res = MappingUtils.getLink(target, source);
+
+		assertNull(res);
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void canDeleteLinkNull() {
+		MappingUtils.canDeleteLink(null);
+	}
+
+	@Test
+	public void canDeleteLinkWithReports() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		link.setSource(source);
+		link.setTarget(target);
+		final IReport report = new BaseElementFactoryTests.TestReport();
+		link.getReports().add(report);
+
+		assertFalse(MappingUtils.canDeleteLink(link));
+	}
+
+	@Test
+	public void canDeleteLink() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		link.setSource(source);
+		link.setTarget(target);
+
+		assertTrue(MappingUtils.canDeleteLink(link));
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void deleteLinkNull() {
+		MappingUtils.canDeleteLink(null);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void deleteLinkWithReports() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		link.setSource(source);
+		link.setTarget(target);
+		final IReport report = new BaseElementFactoryTests.TestReport();
+		link.getReports().add(report);
+
+		MappingUtils.deleteLink(link);
+	}
+
+	@Test
+	public void deleteLink() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation parent = new BaseElementFactoryTests.TestLocation();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		source.setContainer(parent);
+		target.setContainer(parent);
+		link.setSource(source);
+		link.setTarget(target);
+
+		MappingUtils.deleteLink(link);
+
+		assertNull(link.getSource());
+		assertNull(link.getTarget());
+		assertEquals(parent, source.getContainer());
+		assertEquals(parent, target.getContainer());
+	}
+
+	@Test
+	public void deleteLinkWithSourceMarkedAsDeleted() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation parent = new BaseElementFactoryTests.TestLocation();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		source.setContainer(parent);
+		source.setMarkedAsDeleted(true);
+		target.setContainer(parent);
+		link.setSource(source);
+		link.setTarget(target);
+
+		MappingUtils.deleteLink(link);
+
+		assertNull(link.getSource());
+		assertNull(link.getTarget());
+		assertNull(source.getContainer());
+		assertEquals(parent, target.getContainer());
+	}
+
+	@Test
+	public void deleteLinkWithTargetMarkedAsDeleted() {
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		final ILocation parent = new BaseElementFactoryTests.TestLocation();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		source.setContainer(parent);
+		target.setContainer(parent);
+		target.setMarkedAsDeleted(true);
+		link.setSource(source);
+		link.setTarget(target);
+
+		MappingUtils.deleteLink(link);
+
+		assertNull(link.getSource());
+		assertNull(link.getTarget());
+		assertEquals(parent, source.getContainer());
+		assertNull(target.getContainer());
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void canDeleteLocationNull() {
+		MappingUtils.canDeleteLocation(null);
+	}
+
+	@Test
+	public void canDeleteLocationWithSourceLinks() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getSourceLinks().add(link);
+
+		assertFalse(MappingUtils.canDeleteLocation(location));
+	}
+
+	@Test
+	public void canDeleteLocationWithTargetLinks() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+
+		assertFalse(MappingUtils.canDeleteLocation(location));
+	}
+
+	@Test
+	public void canDeleteLocationWithContents() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILocation child = new BaseElementFactoryTests.TestLocation();
+		location.getContents().add(child);
+
+		assertFalse(MappingUtils.canDeleteLocation(location));
+	}
+
+	@Test
+	public void canDeleteLocation() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+
+		assertTrue(MappingUtils.canDeleteLocation(location));
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void deleteLocationNull() {
+		MappingUtils.deleteLocation(null);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void deleteLocationWithSourceLinks() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getSourceLinks().add(link);
+
+		MappingUtils.deleteLocation(location);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void deleteLocationWithTargetLinks() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+
+		MappingUtils.deleteLocation(location);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void deleteLocationWithContents() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILocation child = new BaseElementFactoryTests.TestLocation();
+		location.getContents().add(child);
+
+		MappingUtils.deleteLocation(location);
+	}
+
+	@Test
+	public void deleteLocation() {
+		final ILocation root = new BaseElementFactoryTests.TestLocation();
+		final ILocation parent = new BaseElementFactoryTests.TestLocation();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		parent.setContainer(root);
+		location.setContainer(parent);
+
+		MappingUtils.deleteLocation(location);
+
+		assertNull(location.getContainer());
+		assertEquals(root, parent.getContainer());
+	}
+
+	@Test
+	public void deleteLocationWithContainerMarkedAsDeleted() {
+		final ILocation root = new BaseElementFactoryTests.TestLocation();
+		final ILocation parent = new BaseElementFactoryTests.TestLocation();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		parent.setContainer(root);
+		parent.setMarkedAsDeleted(true);
+		location.setContainer(parent);
+
+		MappingUtils.deleteLocation(location);
+
+		assertNull(location.getContainer());
+		assertNull(parent.getContainer());
+	}
+
+	@Test(expected = java.lang.NullPointerException.class)
+	public void deleteReportNull() {
+		MappingUtils.deleteReport(null);
+	}
+
+	@Test
+	public void deleteReport() {
+		final IReport report = new BaseElementFactoryTests.TestReport();
+		final IBase base = new TestBase();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.setContainer(base);
+		link.setSource(location);
+		report.setLink(link);
+		base.getReports().add(report);
+
+		MappingUtils.deleteReport(report);
+
+		assertFalse(base.getReports().contains(report));
+		assertNull(report.getLink());
+	}
+
+	@Test
+	public void canCreateLinkSourceMarkedAsDeleted() {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+
+		source.setMarkedAsDeleted(true);
+
+		assertFalse(MappingUtils.canCreateLink(source, target));
+	}
+
+	@Test
+	public void canCreateLinkTargetMarkedAsDeleted() {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+
+		target.setMarkedAsDeleted(true);
+
+		assertFalse(MappingUtils.canCreateLink(source, target));
+	}
+
+	@Test
+	public void canCreateLinkSameSourceAndTarget() {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+
+		assertFalse(MappingUtils.canCreateLink(location, location));
+	}
+
+	@Test
+	public void canCreateLinkExistingLink() {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+
+		source.getTargetLinks().add(link);
+		link.setSource(source);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		assertFalse(MappingUtils.canCreateLink(source, target));
+	}
+
+	@Test
+	public void canCreateLink() {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+
+		assertTrue(MappingUtils.canCreateLink(source, target));
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void createLinkSourceMarkedAsDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+
+		source.setMarkedAsDeleted(true);
+
+		MappingUtils.createLink(source, target);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void createLinkTargetMarkedAsDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+
+		target.setMarkedAsDeleted(true);
+
+		MappingUtils.createLink(source, target);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void createLinkSameSourceAndTarget() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+
+		MappingUtils.createLink(location, location);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void createLinkExistingLink() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+
+		source.getTargetLinks().add(link);
+		link.setSource(source);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		MappingUtils.createLink(source, target);
+	}
+
+	@Test
+	public void createLink() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		final IBase base = new TestBase();
+		base.getContents().add(source);
+		source.setContainer(base);
+		base.getContents().add(target);
+		target.setContainer(base);
+		base.getFactory().addDescriptor(ILink.class, new BaseElementFactory.FactoryDescriptor<TestLink>(
+				TestLink.class));
+
+		final ILink link = MappingUtils.createLink(source, target);
+
+		assertEquals(source, link.getSource());
+		assertEquals(target, link.getTarget());
+	}
+
+	@Test
+	public void markAsDeletedOrDeleteCanDelete() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final IBase base = new TestBase();
+		location.setContainer(base);
+
+		MappingUtils.markAsDeletedOrDelete(location, "Test report.");
+
+		assertNull(location.getContainer());
+		assertEquals(0, base.getReports().size());
+	}
+
+	@Test
+	public void markAsDeletedOrDeleteCanTDelete() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation child = new BaseElementFactoryTests.TestLocation();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final IBase base = new TestBase();
+		location.setContainer(base);
+		location.getContents().add(child);
+
+		MappingUtils.markAsDeletedOrDelete(location, "Test report.");
+
+		assertEquals(base, location.getContainer());
+		assertEquals(0, base.getReports().size());
+	}
+
+	@Test
+	public void markAsDeletedOrDeleteCanTDeleteWithLinks() throws InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		final ILocation child = new BaseElementFactoryTests.TestLocation();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		final IBase base = new TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		source.setContainer(base);
+		location.setContainer(base);
+		target.setContainer(base);
+		location.getContents().add(child);
+		final ILink incomingLink = new BaseElementFactoryTests.TestLink();
+		incomingLink.setSource(source);
+		incomingLink.setTarget(location);
+		location.getSourceLinks().add(incomingLink);
+		final ILink outgoingLink = new BaseElementFactoryTests.TestLink();
+		outgoingLink.setSource(location);
+		outgoingLink.setTarget(target);
+		location.getTargetLinks().add(outgoingLink);
+
+		MappingUtils.markAsDeletedOrDelete(location, "Test report.");
+
+		assertEquals(base, location.getContainer());
+		assertEquals(2, base.getReports().size());
+		assertEquals("Test report.", base.getReports().get(0).getDescription());
+		assertEquals(incomingLink, base.getReports().get(0).getLink());
+		assertEquals("Test report.", base.getReports().get(1).getDescription());
+		assertEquals(outgoingLink, base.getReports().get(1).getLink());
+	}
+
+	@Test
+	public void markAsChanged() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation child = new BaseElementFactoryTests.TestLocation();
+		final ILocation source = new BaseElementFactoryTests.TestLocation();
+		final ILocation location = new BaseElementFactoryTests.TestLocation();
+		final ILocation target = new BaseElementFactoryTests.TestLocation();
+		final IBase base = new TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		source.setContainer(base);
+		location.setContainer(base);
+		target.setContainer(base);
+		location.getContents().add(child);
+		final ILink incomingLink = new BaseElementFactoryTests.TestLink();
+		incomingLink.setSource(source);
+		incomingLink.setTarget(location);
+		location.getSourceLinks().add(incomingLink);
+		final ILink outgoingLink = new BaseElementFactoryTests.TestLink();
+		outgoingLink.setSource(location);
+		outgoingLink.setTarget(target);
+		location.getTargetLinks().add(outgoingLink);
+
+		MappingUtils.markAsChanged(location, "Test report.");
+
+		assertEquals(base, location.getContainer());
+		assertEquals(2, base.getReports().size());
+		assertEquals("Test report.", base.getReports().get(0).getDescription());
+		assertEquals(incomingLink, base.getReports().get(0).getLink());
+		assertEquals("Test report.", base.getReports().get(1).getDescription());
+		assertEquals(outgoingLink, base.getReports().get(1).getLink());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractBaseTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractBaseTests.java
new file mode 100644
index 0000000..e4e028e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractBaseTests.java
@@ -0,0 +1,537 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.base.ContainerProviderFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test {@link IBase}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractBaseTests extends AbstractMappingTests {
+
+	/**
+	 * A test {@link IContainerProvider}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestContainerProvider1 implements IContainerProvider {
+
+		/**
+		 * The container.
+		 */
+		public static final Object CONTAINER = new Object();
+
+		/**
+		 * The child.
+		 */
+		public static final Object CHILD = new Object();
+
+		public Object getContainer(Object element) {
+			final Object res;
+
+			if (element == CHILD) {
+				res = CONTAINER;
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		public Class<? extends ILocation> getType() {
+			return TestLocation.class;
+		}
+
+	}
+
+	/**
+	 * A test {@link IContainerProvider}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestContainerProvider2 implements IContainerProvider {
+
+		/**
+		 * The container.
+		 */
+		public static final Object CONTAINER = new Object();
+
+		/**
+		 * The child.
+		 */
+		public static final Object CHILD = new Object();
+
+		public Object getContainer(Object element) {
+			final Object res;
+
+			if (element == CHILD) {
+				res = CONTAINER;
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		public Class<? extends ILocation> getType() {
+			return TestLocation.class;
+		}
+
+	}
+
+	@Test
+	public void setNameNull() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		base.setName(null);
+
+		assertNull(base.getName());
+
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void setName() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+
+		base.setName("base");
+
+		assertEquals("base", base.getName());
+
+		assertTestBaseListener(listener, 1, 0, 0, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getNameDefault() {
+		final IBase base = getBase();
+
+		assertNull(base.getName());
+	}
+
+	@Test
+	public void addRootLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final ILocation location = base.getFactory().createElement(ITextLocation.class);
+
+		base.getContents().add(location);
+
+		assertEquals(1, base.getContents().size());
+		assertEquals(location, base.getContents().get(0));
+
+		assertTestBaseListener(listener, 0, 1, 0, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManyRootLocations() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final ILocation location1 = base.getFactory().createElement(ITextLocation.class);
+		final ILocation location2 = base.getFactory().createElement(ITextLocation.class);
+		final List<ILocation> locations = new ArrayList<ILocation>();
+		locations.add(location1);
+		locations.add(location2);
+
+		base.getContents().addAll(locations);
+
+		assertEquals(2, base.getContents().size());
+		assertEquals(location1, base.getContents().get(0));
+		assertEquals(location2, base.getContents().get(1));
+
+		assertTestBaseListener(listener, 0, 2, 0, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeRootLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final ILocation location = base.getFactory().createElement(ITextLocation.class);
+
+		base.getContents().add(location);
+
+		assertEquals(1, base.getContents().size());
+		assertEquals(location, base.getContents().get(0));
+
+		base.getContents().remove(location);
+
+		assertEquals(0, base.getContents().size());
+
+		assertTestBaseListener(listener, 0, 1, 1, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyRootLocations() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final ILocation location1 = base.getFactory().createElement(ITextLocation.class);
+		final ILocation location2 = base.getFactory().createElement(ITextLocation.class);
+		final List<ILocation> locations = new ArrayList<ILocation>();
+		locations.add(location1);
+		locations.add(location2);
+
+		base.getContents().addAll(locations);
+
+		assertEquals(2, base.getContents().size());
+		assertEquals(location1, base.getContents().get(0));
+		assertEquals(location2, base.getContents().get(1));
+
+		base.getContents().removeAll(locations);
+
+		assertEquals(0, base.getContents().size());
+
+		assertTestBaseListener(listener, 0, 2, 2, 0, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final IReport report = base.getFactory().createElement(IReport.class);
+
+		base.getReports().add(report);
+
+		assertEquals(1, base.getReports().size());
+		assertEquals(report, base.getReports().get(0));
+
+		assertTestBaseListener(listener, 0, 0, 0, 1, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManyReports() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final IReport report1 = base.getFactory().createElement(IReport.class);
+		final IReport report2 = base.getFactory().createElement(IReport.class);
+		final List<IReport> reports = new ArrayList<IReport>();
+		reports.add(report1);
+		reports.add(report2);
+
+		base.getReports().addAll(reports);
+
+		assertEquals(2, base.getReports().size());
+		assertEquals(report1, base.getReports().get(0));
+		assertEquals(report2, base.getReports().get(1));
+
+		assertTestBaseListener(listener, 0, 0, 0, 2, 0, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final IReport report = base.getFactory().createElement(IReport.class);
+
+		base.getReports().add(report);
+
+		assertEquals(1, base.getReports().size());
+		assertEquals(report, base.getReports().get(0));
+
+		base.getReports().remove(report);
+
+		assertEquals(0, base.getReports().size());
+
+		assertTestBaseListener(listener, 0, 0, 0, 1, 1, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyReports() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+		final IReport report1 = base.getFactory().createElement(IReport.class);
+		final IReport report2 = base.getFactory().createElement(IReport.class);
+		final List<IReport> reports = new ArrayList<IReport>();
+		reports.add(report1);
+		reports.add(report2);
+
+		base.getReports().addAll(reports);
+
+		assertEquals(2, base.getReports().size());
+		assertEquals(report1, base.getReports().get(0));
+		assertEquals(report2, base.getReports().get(1));
+
+		base.getReports().removeAll(reports);
+
+		assertEquals(0, base.getReports().size());
+
+		assertTestBaseListener(listener, 0, 0, 0, 2, 2, 0, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addContainerProvider() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider1.class));
+
+		final String containerProvider = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider1";
+
+		base.getContainerProviders().add(containerProvider);
+
+		assertEquals(1, base.getContainerProviders().size());
+		assertEquals(containerProvider, base.getContainerProviders().get(0));
+		assertEquals(TestContainerProvider1.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider1.CHILD));
+
+		assertTestBaseListener(listener, 0, 0, 0, 0, 0, 1, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider1.class
+				.getCanonicalName());
+	}
+
+	@Test
+	public void addManyContainerProviders() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider1.class));
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider2.class));
+
+		final String containerProvider1 = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider1";
+		final String containerProvider2 = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider2";
+		final List<String> containerProviders = new ArrayList<String>();
+		containerProviders.add(containerProvider1);
+		containerProviders.add(containerProvider2);
+
+		base.getContainerProviders().addAll(containerProviders);
+
+		assertEquals(2, base.getContainerProviders().size());
+		assertEquals(containerProvider1, base.getContainerProviders().get(0));
+		assertEquals(containerProvider2, base.getContainerProviders().get(1));
+		assertEquals(TestContainerProvider1.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider1.CHILD));
+		assertEquals(TestContainerProvider2.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider2.CHILD));
+
+		assertTestBaseListener(listener, 0, 0, 0, 0, 0, 2, 0);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider1.class
+				.getCanonicalName());
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider2.class
+				.getCanonicalName());
+	}
+
+	@Test
+	public void removeContainerProvider() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider1.class));
+
+		final String containerProvider = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider1";
+
+		base.getContainerProviders().add(containerProvider);
+
+		assertEquals(1, base.getContainerProviders().size());
+		assertEquals(containerProvider, base.getContainerProviders().get(0));
+		assertEquals(TestContainerProvider1.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider1.CHILD));
+
+		base.getContainerProviders().remove(containerProvider);
+
+		assertEquals(0, base.getContainerProviders().size());
+
+		assertEquals(null, base.getContainerProviderRegistry().getContainer(TestContainerProvider1.CHILD));
+
+		assertTestBaseListener(listener, 0, 0, 0, 0, 0, 1, 1);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider1.class
+				.getCanonicalName());
+	}
+
+	@Test
+	public void removeManyContainerProviders() {
+		final TestBaseListener listener = new TestBaseListener();
+		final TestBaseListener removedListener = new TestBaseListener();
+
+		final IBase base = getBase();
+		base.addListener(listener);
+		base.addListener(removedListener);
+		base.removeListener(removedListener);
+
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider1.class));
+		MappingUtils.getContainerProviderFactory().addDescriptor(
+				new ContainerProviderFactory.FactoryDescriptor(TestContainerProvider2.class));
+
+		final String containerProvider1 = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider1";
+		final String containerProvider2 = "org.eclipse.intent.mapping.tests.base.AbstractBaseTests.TestContainerProvider2";
+		final List<String> containerProviders = new ArrayList<String>();
+		containerProviders.add(containerProvider1);
+		containerProviders.add(containerProvider2);
+
+		base.getContainerProviders().addAll(containerProviders);
+
+		assertEquals(2, base.getContainerProviders().size());
+		assertEquals(containerProvider1, base.getContainerProviders().get(0));
+		assertEquals(containerProvider2, base.getContainerProviders().get(1));
+		assertEquals(TestContainerProvider1.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider1.CHILD));
+		assertEquals(TestContainerProvider2.CONTAINER, base.getContainerProviderRegistry().getContainer(
+				TestContainerProvider2.CHILD));
+
+		base.getContainerProviders().removeAll(containerProviders);
+
+		assertEquals(0, base.getContainerProviders().size());
+
+		assertEquals(null, base.getContainerProviderRegistry().getContainer(TestContainerProvider1.CHILD));
+		assertEquals(null, base.getContainerProviderRegistry().getContainer(TestContainerProvider2.CHILD));
+
+		assertTestBaseListener(listener, 0, 0, 0, 0, 0, 2, 2);
+		assertTestBaseListener(removedListener, 0, 0, 0, 0, 0, 0, 0);
+
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider1.class
+				.getCanonicalName());
+		MappingUtils.getContainerProviderFactory().removeDescriptor(TestContainerProvider2.class
+				.getCanonicalName());
+	}
+
+	@Test
+	public void testCreateCouple() throws Exception {
+		final IBase base = getBase();
+		final ICouple element = base.getFactory().createElement(ICouple.class);
+
+		assertTrue(element instanceof ICouple);
+	}
+
+	@Test
+	public void testCreateLink() throws Exception {
+		final IBase base = getBase();
+		final ILink element = base.getFactory().createElement(ILink.class);
+
+		assertTrue(element instanceof ILink);
+	}
+
+	@Test
+	public void testCreateReport() throws Exception {
+		final IBase base = getBase();
+		final IReport element = base.getFactory().createElement(IReport.class);
+
+		assertTrue(element instanceof IReport);
+	}
+
+	@Test
+	public void testCreateTextLocation() throws Exception {
+		final IBase base = getBase();
+		final ITextLocation element = base.getFactory().createElement(ITextLocation.class);
+
+		assertTrue(element instanceof ITextLocation);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLinkTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLinkTests.java
new file mode 100644
index 0000000..86d08eb
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLinkTests.java
@@ -0,0 +1,293 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Test {@link ILink}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractLinkTests extends AbstractMappingTests {
+
+	@Test
+	public void setDescriptionNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		link.setDescription(null);
+
+		assertNull(link.getDescription());
+
+		assertTestLinkListener(listener, 1, 0, 0, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void setDescription() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		link.setDescription("description");
+
+		assertEquals("description", link.getDescription());
+
+		assertTestLinkListener(listener, 1, 0, 0, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getDescriptionDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILink link = createLink();
+
+		assertNull(link.getDescription());
+	}
+
+	@Test
+	public void setSourceNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		link.setSource(null);
+
+		assertNull(link.getSource());
+
+		assertTestLinkListener(listener, 0, 1, 0, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void setSource() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final ILocation source = createLocation();
+
+		link.setSource(source);
+
+		assertEquals(source, link.getSource());
+
+		assertTestLinkListener(listener, 0, 1, 0, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getSourceDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILink link = createLink();
+
+		assertNull(link.getSource());
+	}
+
+	@Test
+	public void setTargetNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		link.setTarget(null);
+
+		assertNull(link.getTarget());
+
+		assertTestLinkListener(listener, 0, 0, 1, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void setTarget() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final ILocation target = createLocation();
+
+		link.setTarget(target);
+
+		assertEquals(target, link.getTarget());
+
+		assertTestLinkListener(listener, 0, 0, 1, 0, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getTargetDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILink link = createLink();
+
+		assertNull(link.getTarget());
+	}
+
+	@Test
+	public void getTypeDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILink link = createLink();
+
+		assertEquals(null, link.getType());
+	}
+
+	@Test
+	public void setType() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILink link = createLink();
+		final String type = "Type";
+
+		link.setType(type);
+
+		assertEquals(type, link.getType());
+	}
+
+	@Test
+	public void setTypeNull() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILink link = createLink();
+
+		link.setType(null);
+
+		assertEquals(null, link.getType());
+	}
+
+	@Test
+	public void addReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final IReport report = createReport();
+
+		link.getReports().add(report);
+
+		assertEquals(1, link.getReports().size());
+		assertEquals(report, link.getReports().get(0));
+
+		assertTestLinkListener(listener, 0, 0, 0, 1, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManyReports() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final IReport report1 = createReport();
+		final IReport report2 = createReport();
+		final List<IReport> reports = new ArrayList<IReport>();
+		reports.add(report1);
+		reports.add(report2);
+
+		link.getReports().addAll(reports);
+
+		assertEquals(2, link.getReports().size());
+		assertEquals(report1, link.getReports().get(0));
+		assertEquals(report2, link.getReports().get(1));
+
+		assertTestLinkListener(listener, 0, 0, 0, 2, 0);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final IReport report = createReport();
+
+		link.getReports().add(report);
+
+		assertEquals(1, link.getReports().size());
+		assertEquals(report, link.getReports().get(0));
+
+		link.getReports().remove(report);
+
+		assertEquals(0, link.getReports().size());
+
+		assertTestLinkListener(listener, 0, 0, 0, 1, 1);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyReports() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLinkListener listener = new TestLinkListener();
+		final TestLinkListener removedListener = new TestLinkListener();
+
+		final ILink link = createLink();
+		link.addListener(listener);
+		link.addListener(removedListener);
+		link.removeListener(removedListener);
+		final IReport report1 = createReport();
+		final IReport report2 = createReport();
+		final List<IReport> reports = new ArrayList<IReport>();
+		reports.add(report1);
+		reports.add(report2);
+
+		link.getReports().addAll(reports);
+
+		assertEquals(2, link.getReports().size());
+		assertEquals(report1, link.getReports().get(0));
+		assertEquals(report2, link.getReports().get(1));
+
+		link.getReports().removeAll(reports);
+
+		assertEquals(0, link.getReports().size());
+
+		assertTestLinkListener(listener, 0, 0, 0, 2, 2);
+		assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLocationTests.java
new file mode 100644
index 0000000..f4f4535
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractLocationTests.java
@@ -0,0 +1,569 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test {@link ILocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractLocationTests extends AbstractMappingTests {
+
+	@Test
+	public void addSourceLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getSourceLinks().add(link);
+
+		assertEquals(1, location.getSourceLinks().size());
+		assertEquals(link, location.getSourceLinks().get(0));
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 1, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManySourceLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getSourceLinks().addAll(links);
+
+		assertEquals(2, location.getSourceLinks().size());
+		assertEquals(link1, location.getSourceLinks().get(0));
+		assertEquals(link2, location.getSourceLinks().get(1));
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 2, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeSourceLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getSourceLinks().add(link);
+
+		assertEquals(1, location.getSourceLinks().size());
+		assertEquals(link, location.getSourceLinks().get(0));
+
+		location.getSourceLinks().remove(link);
+
+		assertEquals(0, location.getSourceLinks().size());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 1, 1, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManySourceLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getSourceLinks().addAll(links);
+
+		assertEquals(2, location.getSourceLinks().size());
+		assertEquals(link1, location.getSourceLinks().get(0));
+		assertEquals(link2, location.getSourceLinks().get(1));
+
+		location.getSourceLinks().removeAll(links);
+
+		assertEquals(0, location.getSourceLinks().size());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 2, 2, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeSourceLinksDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getSourceLinks().add(link);
+
+		assertEquals(1, location.getSourceLinks().size());
+		assertEquals(link, location.getSourceLinks().get(0));
+
+		getBase().getContents().add(location);
+		location.getSourceLinks().remove(link);
+
+		assertEquals(0, location.getSourceLinks().size());
+		assertEquals(0, getBase().getContents().size());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 1, 1, 2, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManySourceLinksDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getSourceLinks().addAll(links);
+
+		assertEquals(2, location.getSourceLinks().size());
+		assertEquals(link1, location.getSourceLinks().get(0));
+		assertEquals(link2, location.getSourceLinks().get(1));
+
+		getBase().getContents().add(location);
+		location.getSourceLinks().removeAll(links);
+
+		assertEquals(0, location.getSourceLinks().size());
+		assertEquals(0, getBase().getContents().size());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 2, 2, 2, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addTargetLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getTargetLinks().add(link);
+
+		assertEquals(1, location.getTargetLinks().size());
+		assertEquals(link, location.getTargetLinks().get(0));
+
+		assertTestLocationListener(listener, 0, 0, 0, 1, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManyTargetLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getTargetLinks().addAll(links);
+
+		assertEquals(2, location.getTargetLinks().size());
+		assertEquals(link1, location.getTargetLinks().get(0));
+		assertEquals(link2, location.getTargetLinks().get(1));
+
+		assertTestLocationListener(listener, 0, 0, 0, 2, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeTargetLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getTargetLinks().add(link);
+
+		assertEquals(1, location.getTargetLinks().size());
+		assertEquals(link, location.getTargetLinks().get(0));
+
+		location.getTargetLinks().remove(link);
+
+		assertEquals(0, location.getTargetLinks().size());
+
+		assertTestLocationListener(listener, 0, 0, 1, 1, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyTargetLinks() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getTargetLinks().addAll(links);
+
+		assertEquals(2, location.getTargetLinks().size());
+		assertEquals(link1, location.getTargetLinks().get(0));
+		assertEquals(link2, location.getTargetLinks().get(1));
+
+		location.getTargetLinks().removeAll(links);
+
+		assertEquals(0, location.getTargetLinks().size());
+
+		assertTestLocationListener(listener, 0, 0, 2, 2, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeTargetLinksDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link = createLink();
+
+		location.getTargetLinks().add(link);
+
+		assertEquals(1, location.getTargetLinks().size());
+		assertEquals(link, location.getTargetLinks().get(0));
+
+		getBase().getContents().add(location);
+		location.getTargetLinks().remove(link);
+
+		assertEquals(0, location.getTargetLinks().size());
+		assertEquals(0, getBase().getContents().size());
+
+		assertTestLocationListener(listener, 0, 0, 1, 1, 0, 0, 2, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyTargetLinksDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILink link1 = createLink();
+		final ILink link2 = createLink();
+		final List<ILink> links = new ArrayList<ILink>();
+		links.add(link1);
+		links.add(link2);
+
+		location.getTargetLinks().addAll(links);
+
+		assertEquals(2, location.getTargetLinks().size());
+		assertEquals(link1, location.getTargetLinks().get(0));
+		assertEquals(link2, location.getTargetLinks().get(1));
+
+		getBase().getContents().add(location);
+		location.getTargetLinks().removeAll(links);
+
+		assertEquals(0, location.getTargetLinks().size());
+		assertEquals(0, getBase().getContents().size());
+
+		assertTestLocationListener(listener, 0, 0, 2, 2, 0, 0, 2, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addContents() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILocation location1 = createLocation();
+
+		location.getContents().add(location1);
+
+		assertEquals(1, location.getContents().size());
+		assertEquals(location1, location.getContents().get(0));
+
+		assertTestLocationListener(listener, 0, 1, 0, 0, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void addManyContents() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILocation location1 = createLocation();
+		final ILocation location2 = createLocation();
+		final List<ILocation> locations = new ArrayList<ILocation>();
+		locations.add(location1);
+		locations.add(location2);
+
+		location.getContents().addAll(locations);
+
+		assertEquals(2, location.getContents().size());
+		assertEquals(location1, location.getContents().get(0));
+		assertEquals(location2, location.getContents().get(1));
+
+		assertTestLocationListener(listener, 0, 2, 0, 0, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeContents() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILocation location1 = createLocation();
+
+		location.getContents().add(location1);
+
+		assertEquals(1, location.getContents().size());
+		assertEquals(location1, location.getContents().get(0));
+
+		location.getContents().remove(location1);
+
+		assertEquals(0, location.getContents().size());
+
+		assertTestLocationListener(listener, 1, 1, 0, 0, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void removeManyContents() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		final ILocation location1 = createLocation();
+		final ILocation location2 = createLocation();
+		final List<ILocation> locations = new ArrayList<ILocation>();
+		locations.add(location1);
+		locations.add(location2);
+
+		location.getContents().addAll(locations);
+
+		assertEquals(2, location.getContents().size());
+		assertEquals(location1, location.getContents().get(0));
+		assertEquals(location2, location.getContents().get(1));
+
+		location.getContents().removeAll(locations);
+
+		assertEquals(0, location.getContents().size());
+
+		assertTestLocationListener(listener, 2, 2, 0, 0, 0, 0, 0, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getContainerDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation location = createLocation();
+
+		assertEquals(null, location.getContainer());
+	}
+
+	@Test
+	public void setContainerNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		location.setContainer(null);
+
+		assertNull(location.getContainer());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 0, 1, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void setContainer() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation container = createLocation();
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+		location.setContainer(container);
+
+		assertEquals(container, location.getContainer());
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 0, 1, 0, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void getTypeDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation location = createLocation();
+
+		assertEquals(null, location.getType());
+	}
+
+	@Test
+	public void setType() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILocation location = createLocation();
+		final String type = "Type";
+
+		location.setType(type);
+
+		assertEquals(type, location.getType());
+	}
+
+	@Test
+	public void setTypeNull() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final ILocation location = createLocation();
+
+		location.setType(null);
+
+		assertEquals(null, location.getType());
+	}
+
+	@Test
+	public void isMarkedAsDeletedDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation location = createLocation();
+
+		assertFalse(location.isMarkedAsDeleted());
+	}
+
+	@Test
+	public void setMarkedAsDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+
+		location.setMarkedAsDeleted(true);
+
+		assertTrue(location.isMarkedAsDeleted());
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 0, 0, 1, 0);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+	@Test
+	public void changed() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestLocationListener listener = new TestLocationListener();
+		final TestLocationListener removedListener = new TestLocationListener();
+
+		final ILocation location = createLocation();
+		location.addListener(listener);
+		location.addListener(removedListener);
+		location.removeListener(removedListener);
+
+		location.change("test change");
+
+		assertTestLocationListener(listener, 0, 0, 0, 0, 0, 0, 0, 0, 1);
+		assertTestLocationListener(removedListener, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractMappingTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractMappingTests.java
new file mode 100644
index 0000000..3e7d5c0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractMappingTests.java
@@ -0,0 +1,388 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseListener;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILinkListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationListener;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.base.IReportListener;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.junit.Before;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Abstract mapping tests.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractMappingTests {
+
+	/**
+	 * Test {@link IBaseListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	protected final class TestBaseListener implements IBaseListener {
+
+		/**
+		 * Number of time {@link TestBaseListener#nameChanged(String)} has been called.
+		 */
+		private int nameChanged;
+
+		/**
+		 * Number of time {@link TestBaseListener#contentsAdded(ILocation)} has been called.
+		 */
+		private int rootLocationAdded;
+
+		/**
+		 * Number of time {@link TestBaseListener#contentsRemoved(ILocation)} has been called.
+		 */
+		private int rootLocationRemoved;
+
+		/**
+		 * Number of time {@link TestBaseListener#reportAdded(IReport)} has been called.
+		 */
+		private int reportAdded;
+
+		/**
+		 * Number of time {@link TestBaseListener#reportRemoved(IReport)} has been called.
+		 */
+		private int reportRemoved;
+
+		/**
+		 * Number of time {@link TestBaseListener#containerProviderAdded(String)} has been called.
+		 */
+		private int containerProviderAdded;
+
+		/**
+		 * Number of time {@link TestBaseListener#containerProviderRemoved(String)} has been called.
+		 */
+		private int containerProviderRemoved;
+
+		public void nameChanged(String oldName, String newName) {
+			nameChanged++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#contentsAdded(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsAdded(ILocation location) {
+			rootLocationAdded++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#contentsRemoved(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public void contentsRemoved(ILocation location) {
+			rootLocationRemoved++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportAdded(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportAdded(IReport report) {
+			reportAdded++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#reportRemoved(org.eclipse.intent.mapping.base.IReport)
+		 */
+		public void reportRemoved(IReport report) {
+			reportRemoved++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderAdded(java.lang.String)
+		 */
+		public void containerProviderAdded(String provider) {
+			containerProviderAdded++;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.base.IBaseListener#containerProviderRemoved(java.lang.String)
+		 */
+		public void containerProviderRemoved(String provider) {
+			containerProviderRemoved++;
+		}
+
+	}
+
+	/**
+	 * Test {@link ILinkListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	protected final class TestLinkListener implements ILinkListener {
+
+		/**
+		 * Number of time {@link TestLinkListener#targetChanged(ILocation)} has been called.
+		 */
+		private int targetChanged;
+
+		/**
+		 * Number of time {@link TestLinkListener#sourceChanged(ILocation)} has been called.
+		 */
+		private int sourceChanged;
+
+		/**
+		 * Number of time {@link TestLinkListener#descriptionChanged(String)} has been called.
+		 */
+		private int descriptionChanged;
+
+		/**
+		 * Number of time {@link TestLinkListener#reportAdded(IReport)} has been called.
+		 */
+		private int reportAdded;
+
+		/**
+		 * Number of time {@link TestLinkListener#reportRemoved(IReport)} has been called.
+		 */
+		private int reportRemoved;
+
+		public void descriptionChanged(String oldDescription, String newDescription) {
+			descriptionChanged++;
+		}
+
+		public void sourceChanged(ILocation oldSource, ILocation newSource) {
+			sourceChanged++;
+		}
+
+		public void targetChanged(ILocation oldTarget, ILocation newTarget) {
+			targetChanged++;
+		}
+
+		public void reportAdded(IReport report) {
+			reportAdded++;
+		}
+
+		public void reportRemoved(IReport report) {
+			reportRemoved++;
+		}
+	}
+
+	/**
+	 * Test {@link IReportListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	protected final class TestReportListener implements IReportListener {
+
+		/**
+		 * Number of time {@link TestReportListener#descriptionChanged(String)} has been called.
+		 */
+		private int descriptionChanged;
+
+		/**
+		 * Number of time {@link TestReportListener#linkChanged(ILink, ILink)} has been called.
+		 */
+		private int linkChanged;
+
+		public void descriptionChanged(String oldDescription, String newDescription) {
+			descriptionChanged++;
+		}
+
+		public void linkChanged(ILink oldLink, ILink newLink) {
+			linkChanged++;
+		}
+	}
+
+	/**
+	 * Test {@link ILocationListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	protected final class TestLocationListener implements ILocationListener {
+
+		/**
+		 * Number of time {@link TestLocationListener#contentRemoved(ILocation)} has been called.
+		 */
+		private int contentsLocationRemoved;
+
+		/**
+		 * Number of time {@link TestLocationListener#contentAdded(ILocation)} has been called.
+		 */
+		private int contentsLocationAdded;
+
+		/**
+		 * Number of time {@link TestLocationListener#targetLinkRemoved(ILink)} has been called.
+		 */
+		private int targetLinkRemoved;
+
+		/**
+		 * Number of time {@link TestLocationListener#targetLinkAdded(ILink)} has been called.
+		 */
+		private int targetLinkAdded;
+
+		/**
+		 * Number of time {@link TestLocationListener#sourceLinkRemoved(ILink)} has been called.
+		 */
+		private int sourceLinkRemoved;
+
+		/**
+		 * Number of time {@link TestLocationListener#sourceLinkAdded(ILink)} has been called.
+		 */
+		private int sourceLinkAdded;
+
+		/**
+		 * Number of time
+		 * {@link TestLocationListener#containerChanged(ILocationContainer, ILocationContainer)} has been
+		 * called.
+		 */
+		private int containerChanged;
+
+		/**
+		 * Number of time {@link TestLocationListener#changed(String)} has been called.
+		 */
+		private int changed;
+
+		/**
+		 * Number of time {@link TestLocationListener#markedAsDeletedChanged(boolean)} has been called.
+		 */
+		private int markedAsDeletedChanged;
+
+		public void sourceLinkAdded(ILink link) {
+			sourceLinkAdded++;
+		}
+
+		public void sourceLinkRemoved(ILink link) {
+			sourceLinkRemoved++;
+		}
+
+		public void targetLinkAdded(ILink link) {
+			targetLinkAdded++;
+		}
+
+		public void targetLinkRemoved(ILink link) {
+			targetLinkRemoved++;
+		}
+
+		public void contentsAdded(ILocation location) {
+			contentsLocationAdded++;
+		}
+
+		public void contentsRemoved(ILocation location) {
+			contentsLocationRemoved++;
+		}
+
+		public void containerChanged(ILocationContainer oldContainer, ILocationContainer newContainer) {
+			containerChanged++;
+		}
+
+		public void markedAsDeletedChanged(boolean newValue) {
+			markedAsDeletedChanged++;
+		}
+
+		public void changed(String reportDescription) {
+			changed++;
+		}
+
+	}
+
+	/**
+	 * The {@link IBase} to test.
+	 */
+	protected IBase base;
+
+	@Before
+	public void before() {
+		base = getFactory().createBase();
+	}
+
+	/**
+	 * Gets the {@link IBaseFactory}.
+	 * 
+	 * @return the {@link IBaseFactory}
+	 */
+	protected abstract IBaseFactory getFactory();
+
+	protected void assertTestBaseListener(TestBaseListener listener, int nameChanged, int rootLocationAdded,
+			int rootLocationRemoved, int reportAdded, int reportRemoved, int containerProviderAdded,
+			int containerProvidersRemoved) {
+		assertEquals(nameChanged, listener.nameChanged);
+		assertEquals(rootLocationAdded, listener.rootLocationAdded);
+		assertEquals(rootLocationRemoved, listener.rootLocationRemoved);
+		assertEquals(reportAdded, listener.reportAdded);
+		assertEquals(reportRemoved, listener.reportRemoved);
+		assertEquals(containerProviderAdded, listener.containerProviderAdded);
+		assertEquals(containerProvidersRemoved, listener.containerProviderRemoved);
+	}
+
+	protected void assertTestLinkListener(TestLinkListener listener, int descriptionChanged,
+			int sourceChanged, int targetChanged, int reportAdded, int reportRemoved) {
+		assertEquals(descriptionChanged, listener.descriptionChanged);
+		assertEquals(sourceChanged, listener.sourceChanged);
+		assertEquals(targetChanged, listener.targetChanged);
+		assertEquals(reportAdded, listener.reportAdded);
+		assertEquals(reportRemoved, listener.reportRemoved);
+	}
+
+	protected void assertTestReportListener(TestReportListener listener, int descriptionChanged,
+			int linkChanged) {
+		assertEquals(descriptionChanged, listener.descriptionChanged);
+		assertEquals(linkChanged, listener.linkChanged);
+	}
+
+	// CHECKSTYLE:OFF
+	protected void assertTestLocationListener(TestLocationListener listener, int contentLocationRemoved,
+			int contentLocationAdded, int targetLinkRemoved, int targetLinkAdded, int sourceLinkRemoved,
+			int sourceLinkAdded, int containerChanged, int markedAsDeletedChanged, int changed) {
+		assertEquals(contentLocationRemoved, listener.contentsLocationRemoved);
+		assertEquals(contentLocationAdded, listener.contentsLocationAdded);
+		assertEquals(targetLinkRemoved, listener.targetLinkRemoved);
+		assertEquals(targetLinkAdded, listener.targetLinkAdded);
+		assertEquals(sourceLinkRemoved, listener.sourceLinkRemoved);
+		assertEquals(sourceLinkAdded, listener.sourceLinkAdded);
+		assertEquals(containerChanged, listener.containerChanged);
+		assertEquals(markedAsDeletedChanged, listener.markedAsDeletedChanged);
+		assertEquals(changed, listener.changed);
+	}
+
+	// CHECKSTYLE:ON
+
+	protected IBase getBase() {
+		return base;
+	}
+
+	protected ILink createLink() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ILink.class);
+	}
+
+	protected ILocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ITextLocation.class);
+	}
+
+	protected IReport createReport() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(IReport.class);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractReportTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractReportTests.java
new file mode 100644
index 0000000..5c7603a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractReportTests.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.IReport;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Test {@link IReport}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractReportTests extends AbstractMappingTests {
+
+	@Test
+	public void setDescriptionNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestReportListener listener = new TestReportListener();
+		final TestReportListener removedListener = new TestReportListener();
+
+		final IReport report = createReport();
+		report.addListener(listener);
+		report.addListener(removedListener);
+		report.removeListener(removedListener);
+		report.setDescription(null);
+
+		assertNull(report.getDescription());
+
+		assertTestReportListener(listener, 1, 0);
+		assertTestReportListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void setDescription() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestReportListener listener = new TestReportListener();
+		final TestReportListener removedListener = new TestReportListener();
+
+		final IReport report = createReport();
+		report.addListener(listener);
+		report.addListener(removedListener);
+		report.removeListener(removedListener);
+		report.setDescription("description");
+
+		assertEquals("description", report.getDescription());
+
+		assertTestReportListener(listener, 1, 0);
+		assertTestReportListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void getDescriptionDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IReport link = createReport();
+
+		assertNull(link.getDescription());
+	}
+
+	@Test
+	public void setLinkNull() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestReportListener listener = new TestReportListener();
+		final TestReportListener removedListener = new TestReportListener();
+
+		final IReport report = createReport();
+		report.addListener(listener);
+		report.addListener(removedListener);
+		report.removeListener(removedListener);
+		report.setLink(null);
+
+		assertNull(report.getLink());
+
+		assertTestReportListener(listener, 0, 1);
+		assertTestReportListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void setLink() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		final TestReportListener listener = new TestReportListener();
+		final TestReportListener removedListener = new TestReportListener();
+
+		final IReport report = createReport();
+		report.addListener(listener);
+		report.addListener(removedListener);
+		report.removeListener(removedListener);
+		final ILink link = createLink();
+		report.setLink(link);
+
+		assertEquals(link, report.getLink());
+
+		assertTestReportListener(listener, 0, 1);
+		assertTestReportListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void getLinkDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IReport link = createReport();
+
+		assertNull(link.getLink());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractTextLocationTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractTextLocationTests.java
new file mode 100644
index 0000000..77d5c83
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/AbstractTextLocationTests.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test {@link ITextLocation}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public abstract class AbstractTextLocationTests extends AbstractLocationTests {
+
+	@Override
+	protected ITextLocation createLocation() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		return getBase().getFactory().createElement(ITextLocation.class);
+	}
+
+	@Test
+	public void setStartOffset() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		ITextLocation location = createLocation();
+
+		location.setStartOffset(50);
+
+		assertEquals(50, location.getStartOffset());
+	}
+
+	@Test
+	public void getStartOffsetDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		ITextLocation location = createLocation();
+
+		assertEquals(-1, location.getStartOffset());
+	}
+
+	@Test
+	public void setEndOffset() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		ITextLocation location = createLocation();
+
+		location.setEndOffset(50);
+
+		assertEquals(50, location.getEndOffset());
+	}
+
+	@Test
+	public void getEndOffsetDefault() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		ITextLocation location = createLocation();
+
+		assertEquals(-1, location.getEndOffset());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseElementFactoryTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseElementFactoryTests.java
new file mode 100644
index 0000000..ef34183
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseElementFactoryTests.java
@@ -0,0 +1,338 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.BaseElementFactory.FactoryDescriptor;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILinkListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationListener;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.base.IReportListener;
+import org.eclipse.intent.mapping.emf.ICouple;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link BaseElementFactory}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class BaseElementFactoryTests {
+
+	/**
+	 * A test location interface.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface ITestLocation extends ILocation {
+
+		void setObject(Object object);
+
+		Object getObject();
+
+	}
+
+	/**
+	 * A test location interface.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestLocation implements ITestLocation {
+
+		/**
+		 * The {@link ILocationContainer}.
+		 */
+		private ILocationContainer container;
+
+		/**
+		 * The {@link List} of source {@link ILink}.
+		 */
+		private List<ILink> sourceLinks = new ArrayList<ILink>();
+
+		/**
+		 * The {@link List} of target {@link ILink}.
+		 */
+		private List<ILink> targetLinks = new ArrayList<ILink>();
+
+		/**
+		 * The contents.
+		 */
+		private final List<ILocation> contents = new ArrayList<ILocation>();
+
+		/**
+		 * Tells if the location is marked as deleted.
+		 */
+		private boolean markedAsDeleted;
+
+		/**
+		 * The {@link Object}.
+		 */
+		private Object object;
+
+		public void setObject(Object o) {
+			object = o;
+		}
+
+		public Object getObject() {
+			return object;
+		}
+
+		public void markAsChanged() {
+			// nothing to do here
+		}
+
+		public void markAsDeleted() {
+			// nothing to do here
+		}
+
+		public void change(String reportDescription) {
+			// nothing to do here
+		}
+
+		public List<ILink> getSourceLinks() {
+			return sourceLinks;
+		}
+
+		public List<ILink> getTargetLinks() {
+			return targetLinks;
+		}
+
+		public void setContainer(ILocationContainer container) {
+			if (container != null) {
+				container.getContents().add(this);
+			}
+			if (this.container != null) {
+				this.container.getContents().remove(this);
+			}
+			this.container = container;
+		}
+
+		public ILocationContainer getContainer() {
+			return container;
+		}
+
+		public List<ILocation> getContents() {
+			return contents;
+		}
+
+		public void addListener(ILocationListener listener) {
+			// nothing to do here
+		}
+
+		public void removeListener(ILocationListener listener) {
+			// nothing to do here
+		}
+
+		public Serializable getType() {
+			// nothing to do here
+			return null;
+		}
+
+		public void setType(Serializable type) {
+			// nothing to do here
+		}
+
+		public void setMarkedAsDeleted(boolean markedAsDeleted) {
+			this.markedAsDeleted = markedAsDeleted;
+		}
+
+		public boolean isMarkedAsDeleted() {
+			return markedAsDeleted;
+		}
+
+	}
+
+	/**
+	 * Test implementation of {@link ILink}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestLink implements ILink {
+
+		/**
+		 * The source {@link ILocation}.
+		 */
+		private ILocation target;
+
+		/**
+		 * The target {@link ILocation}.
+		 */
+		private ILocation source;
+
+		/**
+		 * The {@link List} of {@link IReport}.
+		 */
+		private final List<IReport> reports = new ArrayList<IReport>();
+
+		public void setType(Serializable type) {
+			// nothing to do here
+		}
+
+		public void setTarget(ILocation location) {
+			target = location;
+		}
+
+		public void setSource(ILocation location) {
+			source = location;
+		}
+
+		public void setDescription(String description) {
+			// nothing to do here
+		}
+
+		public void removeListener(ILinkListener listener) {
+			// nothing to do here
+		}
+
+		public Serializable getType() {
+			// nothing to do here
+			return null;
+		}
+
+		public ILocation getTarget() {
+			return target;
+		}
+
+		public ILocation getSource() {
+			return source;
+		}
+
+		public List<IReport> getReports() {
+			return reports;
+		}
+
+		public String getDescription() {
+			// nothing to do here
+			return null;
+		}
+
+		public void addListener(ILinkListener listener) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Test implementation of {@link IReport}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestReport implements IReport {
+
+		/**
+		 * The {@link ILink}.
+		 */
+		private ILink link;
+
+		/**
+		 * The description.
+		 */
+		private String description;
+
+		public void setLink(ILink link) {
+			this.link = link;
+		}
+
+		public ILink getLink() {
+			return link;
+		}
+
+		public void setDescription(String description) {
+			this.description = description;
+		}
+
+		public String getDescription() {
+			return description;
+		}
+
+		public void addListener(IReportListener listener) {
+			// nothing to do here
+		}
+
+		public void removeListener(IReportListener listener) {
+			// nothing to do here
+		}
+
+	}
+
+	/**
+	 * Test implementation of {@link ICouple}.
+	 * 
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestCouple implements ICouple {
+
+		/**
+		 * The key.
+		 */
+		private String key;
+
+		/**
+		 * The value.
+		 */
+		private String value;
+
+		public String getKey() {
+			// TODO Auto-generated method stub
+			return key;
+		}
+
+		public void setKey(String key) {
+			this.key = key;
+
+		}
+
+		public String getValue() {
+			return value;
+		}
+
+		public void setValue(String value) {
+			this.value = value;
+		}
+
+	}
+
+	@Test
+	public void addClassInstance() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final BaseElementFactory factory = new BaseElementFactory();
+
+		factory.addDescriptor(ITestLocation.class, new FactoryDescriptor<TestLocation>(TestLocation.class));
+
+		final ITestLocation location = factory.createElement(ITestLocation.class);
+
+		assertTrue(location instanceof TestLocation);
+	}
+
+	@Test
+	public void removeClassInstance() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final BaseElementFactory factory = new BaseElementFactory();
+
+		factory.addDescriptor(ITestLocation.class, new FactoryDescriptor<TestLocation>(TestLocation.class));
+		factory.removeDescriptor(ITestLocation.class);
+
+		final ITestLocation location = factory.createElement(ITestLocation.class);
+
+		assertNull(location);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseRegistryTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseRegistryTests.java
new file mode 100644
index 0000000..514c22c
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/BaseRegistryTests.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.ContainerProviderRegistry;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.IBaseListener;
+import org.eclipse.intent.mapping.base.IBaseRegistryListener;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.connector.IContainerProvider;
+import org.eclipse.intent.mapping.internal.base.BaseRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link BaseRegistry}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class BaseRegistryTests {
+
+	/**
+	 * A test implementation of {@link IBaseRegistryListener}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	private final class TestBaseRegitryListener implements IBaseRegistryListener {
+
+		/**
+		 * Number of time {@link TestBaseRegitryListener#baseRegistred(IBase)} has been called.
+		 */
+		private int baseUnregistred;
+
+		/**
+		 * Number of time {@link TestBaseRegitryListener#baseUnregistred(IBase)} has been called.
+		 */
+		private int baseRegistred;
+
+		public void baseRegistred(IBase base) {
+			baseRegistred++;
+		}
+
+		public void baseUnregistred(IBase base) {
+			baseUnregistred++;
+		}
+
+	}
+
+	/**
+	 * A test {@link IBase} implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestBase implements IBase {
+
+		/**
+		 * The {@link List} of contained {@link ILocation}.
+		 */
+		private final List<ILocation> contents = new ArrayList<ILocation>();
+
+		/**
+		 * The {@link List} of {@link IReport}.
+		 */
+		private final List<IReport> reports = new ArrayList<IReport>();
+
+		/**
+		 * The {@link BaseElementFactory}.
+		 */
+		private final BaseElementFactory factory = new BaseElementFactory();
+
+		/**
+		 * The {@link ContainerProviderRegistry}.
+		 */
+		private final ContainerProviderRegistry registry;
+
+		/**
+		 * The {@link List} of {@link IContainerProvider} {@link Class#getCanonicalName() class name}.
+		 */
+		private List<String> containerProviders = new ArrayList<String>();
+
+		public TestBase() {
+			registry = new ContainerProviderRegistry(this);
+		}
+
+		public void setName(String name) {
+			// nothing to do here
+		}
+
+		public String getName() {
+			// nothing to do here
+			return null;
+		}
+
+		public List<ILocation> getContents() {
+			return contents;
+		}
+
+		public void addListener(IBaseListener l) {
+			// nothing to do here
+		}
+
+		public void removeListener(IBaseListener l) {
+			// nothing to do here
+		}
+
+		public BaseElementFactory getFactory() {
+			return factory;
+		}
+
+		public List<IReport> getReports() {
+			return reports;
+		}
+
+		public void save() throws IOException {
+			// nothing to do here
+		}
+
+		public ContainerProviderRegistry getContainerProviderRegistry() {
+			return registry;
+		}
+
+		public List<String> getContainerProviders() {
+			return containerProviders;
+		}
+
+	}
+
+	/**
+	 * The {@link BaseRegistry} to test.
+	 */
+	private BaseRegistry baseRegistery;
+
+	/**
+	 * The {@link TestBaseRegitryListener} that will be
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#register(IBase) registered}.
+	 */
+	private TestBaseRegitryListener listener;
+
+	/**
+	 * The {@link TestBaseRegitryListener} that will be
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#register(IBase) registered} then
+	 * {@link org.eclipse.intent.mapping.base.IBaseRegistry#unregister(IBase) unregistered}.
+	 */
+	private TestBaseRegitryListener removedListener;
+
+	protected void assertTestBaseRegitryListener(TestBaseRegitryListener l, int baseRegistred,
+			int baseUnregistred) {
+		assertEquals(baseRegistred, l.baseRegistred);
+		assertEquals(baseUnregistred, l.baseUnregistred);
+	}
+
+	@Before
+	public void before() {
+		baseRegistery = new BaseRegistry();
+		listener = new TestBaseRegitryListener();
+		removedListener = new TestBaseRegitryListener();
+		baseRegistery.addListener(listener);
+		baseRegistery.addListener(removedListener);
+		baseRegistery.removeListener(removedListener);
+
+	}
+
+	@After
+	public void after() {
+		baseRegistery.removeListener(listener);
+	}
+
+	@Test
+	public void register() {
+		final IBase base = new TestBase();
+		baseRegistery.register(base);
+
+		assertEquals(1, baseRegistery.getBases().size());
+
+		assertTestBaseRegitryListener(listener, 1, 0);
+		assertTestBaseRegitryListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void unregister() {
+		final IBase base = new TestBase();
+		baseRegistery.register(base);
+
+		assertEquals(1, baseRegistery.getBases().size());
+
+		baseRegistery.unregister(base);
+
+		assertEquals(0, baseRegistery.getBases().size());
+
+		assertTestBaseRegitryListener(listener, 1, 1);
+		assertTestBaseRegitryListener(removedListener, 0, 0);
+	}
+
+	@Test
+	public void getBases() {
+		final IBase base0 = new TestBase();
+		final IBase base1 = new TestBase();
+		final IBase base2 = new TestBase();
+		baseRegistery.register(base0);
+		baseRegistery.register(base1);
+		baseRegistery.register(base2);
+
+		final Set<IBase> bases = baseRegistery.getBases();
+		assertEquals(3, bases.size());
+
+		assertTrue(bases.contains(base0));
+		assertTrue(bases.contains(base1));
+		assertTrue(bases.contains(base2));
+
+		assertTestBaseRegitryListener(listener, 3, 0);
+		assertTestBaseRegitryListener(removedListener, 0, 0);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/IBaseFactory.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/IBaseFactory.java
new file mode 100644
index 0000000..49f0bac
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/IBaseFactory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.base.IBase;
+
+/**
+ * A factory creating {@link IBase} to test.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public interface IBaseFactory {
+
+	/**
+	 * Creates an {@link IBase}.
+	 * 
+	 * @return a new {@link IBase}
+	 */
+	IBase createBase();
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/LocationDescriptorTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/LocationDescriptorTests.java
new file mode 100644
index 0000000..2e068c7
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/LocationDescriptorTests.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.LocationDescriptor;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.intent.mapping.tests.connector.ConnectorRegistryTests.TestLocation1;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link LocationDescriptor}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class LocationDescriptorTests {
+
+	@Test
+	public void equalsNull() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor1 = new LocationDescriptor(location);
+
+		// CHECKSTYLE:OFF
+		assertFalse(descriptor1.equals(null));
+		// CHECKSTYLE:ON
+	}
+
+	@Test
+	public void equalsFalse() {
+		final TestLocation1 location1 = new TestLocation1();
+		final TestLocation1 location2 = new TestLocation1();
+		final LocationDescriptor descriptor1 = new LocationDescriptor(location1);
+		final LocationDescriptor descriptor2 = new LocationDescriptor(location2);
+
+		assertFalse(descriptor1.equals(descriptor2));
+		assertFalse(descriptor2.equals(descriptor1));
+	}
+
+	@Test
+	public void equalsTrue() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor1 = new LocationDescriptor(location);
+		final LocationDescriptor descriptor2 = new LocationDescriptor(location);
+
+		assertTrue(descriptor1.equals(descriptor2));
+		assertTrue(descriptor2.equals(descriptor1));
+	}
+
+	@Test
+	public void getLocationNull() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+
+		assertTrue(location == descriptor.getLocation());
+	}
+
+	@Test
+	public void getLocationExisting() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+		final IBase base = new TestBase();
+		base.getContents().add(location);
+
+		final ILocation found = descriptor.getLocation();
+
+		assertTrue(location == found);
+	}
+
+	@Test
+	public void getName() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+
+		assertEquals(null, descriptor.getName());
+	}
+
+	@Test
+	public void getOrCreateNull() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+
+		assertTrue(location == descriptor.getOrCreate());
+	}
+
+	@Test
+	public void getOrCreateExcisting() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+		final IBase base = new TestBase();
+		base.getContents().add(location);
+
+		final ILocation res = descriptor.getOrCreate();
+
+		assertTrue(location == res);
+	}
+
+	@Test
+	public void hashCodeTest() {
+		final TestLocation1 location = new TestLocation1();
+		final LocationDescriptor descriptor = new LocationDescriptor(location);
+		final IBase base = new TestBase();
+		base.getContents().add(location);
+
+		assertEquals(location.hashCode(), descriptor.hashCode());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/ObjectLocationDescriptorTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/ObjectLocationDescriptorTests.java
new file mode 100644
index 0000000..79d26ce
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/base/ObjectLocationDescriptorTests.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.base;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.ITestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.intent.mapping.tests.connector.ConnectorRegistryTests.TestLocation1;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link ObjectLocationDescriptor}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ObjectLocationDescriptorTests extends AbstractConnector {
+
+	/**
+	 * The element.
+	 */
+	private Object element;
+
+	/**
+	 * Counts the number of calls to {@link ObjectLocationDescriptorTests#dispose(ILocationDescriptor)}.
+	 */
+	private int disposeCount;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param element
+	 *            the element
+	 */
+	public ObjectLocationDescriptorTests() {
+		this.element = new Object();
+	}
+
+	public ILocationDescriptor getLocationDescriptor(IBase base, Object elem) {
+		// nothing to do here
+		return null;
+	}
+
+	public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+			Object elem) {
+		return ITestLocation.class;
+	}
+
+	public Object getElement(ILocation location) {
+		return element;
+	}
+
+	public String getName(ILocation location) {
+		// nothing to do here
+		return null;
+	}
+
+	public Class<? extends ILocation> getType() {
+		return ITestLocation.class;
+	}
+
+	@Override
+	protected boolean canUpdate(Object elem) {
+		return true;
+	}
+
+	@Override
+	protected boolean match(ILocation location, Object elem) {
+		return elem == element;
+	}
+
+	@Override
+	protected void initLocation(ILocationContainer container, ILocation location, Object elem) {
+		((ITestLocation)location).setObject(elem);
+	}
+
+	@Override
+	public void dispose(ILocationDescriptor locationDescriptor) {
+		super.dispose(locationDescriptor);
+		disposeCount++;
+	}
+
+	@Test
+	public void dispose() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		descriptor.dispose();
+
+		assertEquals(1, disposeCount);
+	}
+
+	@Test
+	public void equalsNull() {
+		final Object element1 = new Object();
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor1 = new ObjectLocationDescriptor(base, element1,
+				"test descriptor1");
+
+		// CHECKSTYLE:OFF
+		assertFalse(descriptor1.equals(null));
+		// CHECKSTYLE:ON
+	}
+
+	@Test
+	public void equalsFalse() {
+		final Object element1 = new Object();
+		final Object element2 = new Object();
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor1 = new ObjectLocationDescriptor(base, element1,
+				"test descriptor1");
+		final ObjectLocationDescriptor descriptor2 = new ObjectLocationDescriptor(base, element2,
+				"test descriptor2");
+
+		assertFalse(descriptor1.equals(descriptor2));
+		assertFalse(descriptor2.equals(descriptor1));
+	}
+
+	@Test
+	public void equalsTrue() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor1 = new ObjectLocationDescriptor(base, element,
+				"test descriptor1");
+		final ObjectLocationDescriptor descriptor2 = new ObjectLocationDescriptor(base, element,
+				"test descriptor2");
+
+		assertTrue(descriptor1.equals(descriptor2));
+		assertTrue(descriptor2.equals(descriptor1));
+	}
+
+	@Test
+	public void getLocationNotExisting() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		final ILocation found = descriptor.getLocation();
+
+		assertNull(found);
+	}
+
+	@Test
+	public void getLocationExisting() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+		final TestLocation1 location = new TestLocation1();
+		location.setObject(element);
+		base.getContents().add(location);
+
+		final ILocation found = descriptor.getLocation();
+
+		assertEquals(location, found);
+	}
+
+	@Test
+	public void getName() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		assertEquals("test descriptor", descriptor.getName());
+	}
+
+	@Test
+	public void getOrCreateNotExcisting() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+		base.getFactory().addDescriptor(ITestLocation.class,
+				new BaseElementFactory.FactoryDescriptor<TestLocation1>(TestLocation1.class));
+
+		final ILocation location = descriptor.getOrCreate();
+
+		assertTrue(location instanceof ITestLocation);
+		assertEquals(element, ((ITestLocation)location).getObject());
+	}
+
+	@Test
+	public void getOrCreateExcisting() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+		final TestLocation1 location = new TestLocation1();
+		location.setObject(element);
+		base.getContents().add(location);
+
+		final ILocation res = descriptor.getOrCreate();
+
+		assertTrue(location == res);
+	}
+
+	@Test
+	public void hashCodeTest() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+		final TestLocation1 location = new TestLocation1();
+		location.setObject(element);
+		base.getContents().add(location);
+
+		assertEquals(element.hashCode(), descriptor.hashCode());
+	}
+
+	@Test
+	public void setElementNull() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		descriptor.setElement(null);
+
+		assertNull(descriptor.getElement());
+	}
+
+	@Test
+	public void setElement() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		final Object otherElement = new Object();
+		descriptor.setElement(otherElement);
+
+		assertEquals(otherElement, descriptor.getElement());
+	}
+
+	@Test
+	public void updateNull() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		descriptor.update(null);
+
+		assertNull(descriptor.getElement());
+	}
+
+	@Test
+	public void updateElement() {
+		final IBase base = new TestBase();
+		final ObjectLocationDescriptor descriptor = new ObjectLocationDescriptor(base, element,
+				"test descriptor");
+
+		final Object otherElement = new Object();
+		descriptor.update(otherElement);
+
+		assertEquals(otherElement, descriptor.getElement());
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorRegistryTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorRegistryTests.java
new file mode 100644
index 0000000..4fbe026
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorRegistryTests.java
@@ -0,0 +1,516 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.connector;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory.FactoryDescriptor;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.base.ILocationDescriptor;
+import org.eclipse.intent.mapping.connector.AbstractConnector;
+import org.eclipse.intent.mapping.connector.IConnector;
+import org.eclipse.intent.mapping.internal.connector.ConnectorRegistry;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link ConnectorRegistry}.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class ConnectorRegistryTests {
+
+	/**
+	 * A test {@link IConnector} implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestConnector1 extends AbstractConnector {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class,
+		 *      java.lang.Object)
+		 */
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			final Class<? extends ILocation> res;
+
+			if (containerType == TestLocation1.class) {
+				res = getType();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		@Override
+		protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+			((ITestLocation1)location).setObject(element);
+		}
+
+		@Override
+		protected boolean match(ILocation location, Object element) {
+			return location.getContainer() instanceof TestLocation1 && ((ITestLocation1)location)
+					.getObject() == element;
+		}
+
+		@Override
+		protected boolean canUpdate(Object element) {
+			return true;
+		}
+
+		public String getName(ILocation location) {
+			final String res;
+
+			if (location.getContainer() instanceof TestLocation1) {
+				res = "TestLocation1 " + ((TestLocation1)location).getObject().toString();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+			final ILocationDescriptor res;
+
+			res = new ObjectLocationDescriptor(base, element, "TestLocation1 " + element.toString());
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public Object getElement(ILocation location) {
+			final Object res;
+
+			if (location instanceof TestLocation1) {
+				res = ((TestLocation1)location).getObject();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+		 */
+		public Class<? extends ILocation> getType() {
+			return ITestLocation1.class;
+		}
+
+	}
+
+	/**
+	 * A test location interface.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface ITestLocation1 extends ILocation {
+
+		void setObject(Object o);
+
+		Object getObject();
+
+	}
+
+	/**
+	 * A test location.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestLocation1 extends TestLocation implements ITestLocation1 {
+
+	}
+
+	/**
+	 * A test {@link IConnector} implementation.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestConnector2 extends AbstractConnector {
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getLocationType(java.lang.Class,
+		 *      java.lang.Object)
+		 */
+		public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
+				Object element) {
+			final Class<? extends ILocation> res;
+
+			if (containerType == TestLocation2.class) {
+				res = getType();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		@Override
+		protected void initLocation(ILocationContainer container, ILocation location, Object element) {
+			((ITestLocation2)location).setObject(element);
+		}
+
+		@Override
+		protected boolean match(ILocation location, Object element) {
+			return location.getContainer() instanceof TestLocation2 && ((ITestLocation2)location)
+					.getObject() == element;
+		}
+
+		@Override
+		protected boolean canUpdate(Object element) {
+			return true;
+		}
+
+		public String getName(ILocation location) {
+			final String res;
+
+			if (location.getContainer() instanceof TestLocation2) {
+				res = "TestLocation2 " + ((TestLocation2)location).getObject().toString();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		public ILocationDescriptor getLocationDescriptor(IBase base, Object element) {
+			final ILocationDescriptor res;
+
+			res = new ObjectLocationDescriptor(base, element, "TestLocation2 " + element.toString());
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getElement(org.eclipse.intent.mapping.base.ILocation)
+		 */
+		public Object getElement(ILocation location) {
+			final Object res;
+
+			if (location instanceof TestLocation2) {
+				res = ((TestLocation2)location).getObject();
+			} else {
+				res = null;
+			}
+
+			return res;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.intent.mapping.connector.IConnector#getType()
+		 */
+		public Class<? extends ILocation> getType() {
+			return ITestLocation2.class;
+		}
+
+	}
+
+	/**
+	 * A test location interface.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public interface ITestLocation2 extends ITestLocation1 {
+
+		void setObject(Object o);
+
+		Object getObject();
+
+	}
+
+	/**
+	 * A test location.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestLocation2 extends TestLocation implements ITestLocation2 {
+
+	}
+
+	/**
+	 * The {@link ConnectorRegistry} to test.
+	 */
+	private ConnectorRegistry connectorRegistery;
+
+	@Before
+	public void before() {
+		connectorRegistery = new ConnectorRegistry();
+	}
+
+	@Test
+	public void register() {
+		final IConnector connector = new TestConnector1();
+		connectorRegistery.register(connector);
+
+		assertTrue(connectorRegistery.getConnector(connector.getType()) instanceof TestConnector1);
+	}
+
+	@Test
+	public void unregister() {
+		final IConnector connector = new TestConnector1();
+		connectorRegistery.register(connector);
+
+		assertTrue(connectorRegistery.getConnector(connector.getType()) instanceof TestConnector1);
+
+		connectorRegistery.unregister(connector);
+
+		assertNull(connectorRegistery.getConnector(connector.getType()));
+	}
+
+	@Test
+	public void getConnector() {
+		final IConnector connector1 = new TestConnector1();
+		final IConnector connector2 = new TestConnector2();
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		assertTrue(connectorRegistery.getConnector(connector1.getType()) instanceof TestConnector1);
+		assertTrue(connectorRegistery.getConnector(connector2.getType()) instanceof TestConnector2);
+	}
+
+	@Test
+	public void createLocationNoConnectors() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final Object element = new Object();
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertEquals(null, location);
+	}
+
+	@Test(expected = java.lang.IllegalArgumentException.class)
+	public void createLocationNotRegisteredInBase() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertTrue(location instanceof ITestLocation1);
+		assertEquals(element, ((ITestLocation1)location).getObject());
+	}
+
+	@Test
+	public void createLocationFirstConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertTrue(location instanceof ITestLocation1);
+		assertEquals(element, ((ITestLocation1)location).getObject());
+	}
+
+	@Test
+	public void createLocationSecondConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation2();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertTrue(location instanceof ITestLocation2);
+		assertEquals(element, ((ITestLocation2)location).getObject());
+	}
+
+	@Test
+	public void getLocationNoConnectors() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final ILocation container = new TestLocation1();
+		final Object element = new Object();
+
+		final ILocation location = connectorRegistery.getLocation(container, element);
+
+		assertEquals(null, location);
+	}
+
+	@Test
+	public void getLocationFirstConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+		final ILocation found = connectorRegistery.getLocation(container, element);
+
+		assertTrue(location instanceof ITestLocation1);
+		assertEquals(element, ((ITestLocation1)location).getObject());
+		assertEquals(location, found);
+	}
+
+	@Test
+	public void getLocationSecondConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation2();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+		final ILocation found = connectorRegistery.getLocation(container, element);
+
+		assertTrue(location instanceof ITestLocation2);
+		assertEquals(element, ((ITestLocation2)location).getObject());
+		assertEquals(location, found);
+	}
+
+	@Test
+	public void getNameMarkedAsDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+		location.setMarkedAsDeleted(true);
+
+		assertEquals("(deleted)", connectorRegistery.getName(location));
+	}
+
+	@Test
+	public void getNameFirstConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation1();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertTrue(connectorRegistery.getName(location).startsWith("TestLocation1 "));
+	}
+
+	@Test
+	public void getNameSecondConnector() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new TestBase();
+		final ILocation container = new TestLocation2();
+		container.setContainer(base);
+		final TestConnector1 connector1 = new TestConnector1();
+		final TestConnector2 connector2 = new TestConnector2();
+		final Object element = new Object();
+
+		base.getFactory().addDescriptor(ITestLocation1.class, new FactoryDescriptor<TestLocation1>(
+				TestLocation1.class));
+		base.getFactory().addDescriptor(ITestLocation2.class, new FactoryDescriptor<TestLocation2>(
+				TestLocation2.class));
+
+		connectorRegistery.register(connector1);
+		connectorRegistery.register(connector2);
+
+		final ILocation location = connectorRegistery.createLocation(container, element);
+
+		assertTrue(connectorRegistery.getName(location).startsWith("TestLocation2 "));
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorTests.java
new file mode 100644
index 0000000..39e9c33
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/connector/ConnectorTests.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.connector;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {ConnectorRegistryTests.class })
+public class ConnectorTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/ContentTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/ContentTests.java
new file mode 100644
index 0000000..42cb552
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/ContentTests.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.content;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {FileTypeRegistryTests.class })
+public class ContentTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/FileTypeRegistryTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/FileTypeRegistryTests.java
new file mode 100644
index 0000000..cf1fcc0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/content/FileTypeRegistryTests.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.content;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.intent.mapping.MappingUtils;
+import org.eclipse.intent.mapping.content.IFileType;
+import org.eclipse.intent.mapping.content.IFileTypeProvider;
+import org.eclipse.intent.mapping.internal.content.FileType;
+import org.eclipse.intent.mapping.internal.content.FileTypeRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link FileTypeRegistry}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class FileTypeRegistryTests {
+
+	@Test
+	public void getFileTypeNull() {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType(null);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getFileTypeNotRegistered() {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType("someID");
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getFileType() {
+		MappingUtils.getFileTypeRegistry().registerFileType("someID", Collections.<String> emptySet());
+
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileType("someID");
+
+		assertEquals("someID", result.getID());
+
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someID");
+	}
+
+	@Test
+	public void getFileTypeForNullNull() throws IOException {
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, null);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getFileTypeFor() throws IOException {
+		final IFileTypeProvider provider = new IFileTypeProvider() {
+
+			public IFileType getFileTypeFor(InputStream contents, String name) throws IOException {
+				final IFileType res;
+
+				if (name != null && name.endsWith(".some")) {
+					res = new FileType("someID");
+				} else {
+					res = null;
+				}
+
+				return res;
+			}
+		};
+		MappingUtils.getFileTypeRegistry().getFileTypeProviders().add(provider);
+		MappingUtils.getFileTypeRegistry().registerFileType("someID", Collections.<String> emptySet());
+
+		final IFileType result = MappingUtils.getFileTypeRegistry().getFileTypeFor(null, "test.some");
+
+		assertEquals("someID", result.getID());
+
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someID");
+	}
+
+	@Test
+	public void isKindOfNullNull() {
+		final boolean result = MappingUtils.getFileTypeRegistry().isKindOf(null, null);
+
+		assertFalse(result);
+	}
+
+	@Test
+	public void isKindOfNotRegistered() {
+		final boolean result = MappingUtils.getFileTypeRegistry().isKindOf("someID", "someSuperID");
+
+		assertFalse(result);
+	}
+
+	@Test
+	public void isKindOfFalse() {
+		MappingUtils.getFileTypeRegistry().registerFileType("someID", Collections.<String> emptySet());
+
+		final boolean result = MappingUtils.getFileTypeRegistry().isKindOf("someID", "someSuperID");
+
+		assertFalse(result);
+
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someID");
+	}
+
+	@Test
+	public void isKindOfDirect() {
+		Set<String> superTypes = new LinkedHashSet<String>();
+		superTypes.add("someSuperID");
+		MappingUtils.getFileTypeRegistry().registerFileType("someID", superTypes);
+
+		final boolean result = MappingUtils.getFileTypeRegistry().isKindOf("someID", "someSuperID");
+
+		assertTrue(result);
+
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someID");
+	}
+
+	@Test
+	public void isKindOfIndirect() {
+		Set<String> someSuperTypes = new LinkedHashSet<String>();
+		someSuperTypes.add("someIntermediateSuperID");
+		MappingUtils.getFileTypeRegistry().registerFileType("someID", someSuperTypes);
+		Set<String> superTypes = new LinkedHashSet<String>();
+		superTypes.add("someSuperID");
+		MappingUtils.getFileTypeRegistry().registerFileType("someIntermediateSuperID", superTypes);
+
+		final boolean result = MappingUtils.getFileTypeRegistry().isKindOf("someID", "someSuperID");
+
+		assertTrue(result);
+
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someID");
+		MappingUtils.getFileTypeRegistry().unregisterFileType("someIntermediateSuperID");
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/internal/base/BaseTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/internal/base/BaseTests.java
new file mode 100644
index 0000000..edcc331
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/internal/base/BaseTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.internal.base;
+
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping plug-in.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {BaseRegistryTests.class, BaseElementFactoryTests.class })
+public class BaseTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorParametrizedTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorParametrizedTests.java
new file mode 100644
index 0000000..1574ddf
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorParametrizedTests.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.text;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.ILocationContainer;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestLocation;
+import org.eclipse.intent.mapping.text.ITextContainer;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.eclipse.intent.mapping.text.TextConnector;
+import org.eclipse.intent.mapping.text.TextConnector.TextContainerHelper;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Tests {@link TextConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Parameterized.class)
+public class TextConnectorParametrizedTests {
+
+	/**
+	 * Test {@link ITextContainer}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestTextContainerLocation extends TestLocation implements ITextContainer {
+
+		/**
+		 * The {@link List} of children.
+		 */
+		private final List<ILocation> children = new ArrayList<ILocation>();
+
+		/**
+		 * The containing text.
+		 */
+		private String text;
+
+		public void setText(String text) {
+			this.text = text;
+		}
+
+		public String getText() {
+			return text;
+		}
+
+		@Override
+		public List<ILocation> getContents() {
+			return children;
+		}
+
+	}
+
+	/**
+	 * Test {@link ITextLocation}.
+	 *
+	 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+	 */
+	public static class TestTextLocation extends TestLocation implements ITextLocation {
+
+		/**
+		 * the container.
+		 */
+		private ILocationContainer container;
+
+		/**
+		 * The start offset.
+		 */
+		private int startOffset;
+
+		/**
+		 * The end offset.
+		 */
+		private int endOffset;
+
+		@Override
+		public void setContainer(ILocationContainer container) {
+			this.container = container;
+		}
+
+		@Override
+		public ILocationContainer getContainer() {
+			return container;
+		}
+
+		public void setStartOffset(int offset) {
+			startOffset = offset;
+		}
+
+		public int getStartOffset() {
+			return startOffset;
+		}
+
+		public void setEndOffset(int offset) {
+			endOffset = offset;
+		}
+
+		public int getEndOffset() {
+			return endOffset;
+		}
+
+	}
+
+	/**
+	 * The original {@link ITextLocation#getText() text}.
+	 */
+	private final String original;
+
+	/**
+	 * The altered {@link ITextLocation#getText() text}.
+	 */
+	private final String altered;
+
+	/**
+	 * The text to test.
+	 */
+	private String testText;
+
+	/**
+	 * The {@link TextContainerHelper}.
+	 */
+	private final TextContainerHelper textContainerHelper = new TextContainerHelper();
+
+	public TextConnectorParametrizedTests(String original, String altered) {
+		this.original = original;
+		this.altered = altered;
+		try {
+			testText = getContent(TextConnectorParametrizedTests.class.getResourceAsStream("/text.txt"),
+					"UTF-8");
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Parameters
+	public static Iterable<String[]> data() {
+		return Arrays.asList(new String[][] {{"or Fragment may be", "or Fragment may not be", }, {
+				"FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR",
+				"FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE LICENSES MAY REFER TO THE EPL OR", },
+				{"Eclipse Public License Version 1.0 (\"EPL\"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.",
+						"Eclipse Public License Version 1.0 (\"EPL\"). A copy of the EPL is provided with this  Some new text at the Content and is also available at http://www.eclipse.org/legal/epl-v10.html.", },
+				{"Each Feature may be packaged as a sub-directory",
+						"Each Some new text at the Feature may be packaged as a sub-directory", },
+
+				{"is a bundle of one or more Plug-ins and/or Fragments",
+						"is a bundle of one or more Plug-ins and", },
+
+				{"(available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)",
+						"www.opengroup.org/openmotif/supporters/metrolink/license.html)", }, });
+	}
+
+	/**
+	 * Gets the {@link ITextLocation} to test.
+	 * 
+	 * @param container
+	 *            the {@link TestTextContainerLocation}that will contain created {@link ITextLocation}
+	 * @param useAltered
+	 *            if <code>true</code> {@link AbstractTextConnectorTests#altered} is used,
+	 *            {@link AbstractTextConnectorTests#original} is used otherwise
+	 * @param shift
+	 *            the value to add to {@link ITextLocation#getStartOffset() text offset}.
+	 * @return the {@link ITextLocation} to test
+	 */
+	protected ITextLocation createTextLocations(TestTextContainerLocation container) {
+		final ITextLocation res = new TestTextLocation();
+
+		res.setStartOffset(container.getText().indexOf(original));
+		res.setEndOffset(container.getText().indexOf(original) + original.length());
+		res.setContainer(container);
+		container.getContents().add(res);
+
+		return res;
+	}
+
+	protected String createString(int length) {
+		final StringBuilder builder = new StringBuilder(length);
+
+		for (int i = 0; i < length; ++i) {
+			builder.append(' ');
+		}
+
+		return builder.toString();
+	}
+
+	/**
+	 * Gets the content of the given {@link InputStream}.
+	 * 
+	 * @param stream
+	 *            the {@link InputStream}
+	 * @param charsetName
+	 *            The name of a supported {@link java.nio.charset.Charset </code>charset<code>}
+	 * @return a {@link CharSequence} of the content of the given {@link InputStream}
+	 * @throws IOException
+	 *             if the {@link InputStream} can't be read
+	 */
+	public static String getContent(InputStream stream, String charsetName) throws IOException {
+		final int len = 8192;
+		StringBuilder res = new StringBuilder(len);
+		if (len != 0) {
+			InputStreamReader input = new InputStreamReader(new BufferedInputStream(stream), charsetName);
+			char[] buffer = new char[len];
+			int length = input.read(buffer);
+			while (length != -1) {
+				res.append(buffer, 0, length);
+				length = input.read(buffer);
+			}
+			input.close();
+		}
+		return res.toString();
+	}
+
+	@Test
+	public void updateTextContainer() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset();
+		final int expectedEndOffset = location.getEndOffset();
+
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+
+		assertEquals(testText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerPlusShift() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() + 20;
+		final int expectedEndOffset = location.getEndOffset() + 20;
+
+		final String newText = createString(20) + container.getText();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerMinusShift() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() - 20;
+		final int expectedEndOffset = location.getEndOffset() - 20;
+
+		final String newText = container.getText().substring(20);
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerAltered() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset();
+		final int expectedEndOffset = location.getStartOffset() + altered.length();
+
+		final String newText = container.getText().replace(original, altered);
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerPlusShiftAltered() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() + 20;
+		final int expectedEndOffset = location.getStartOffset() + altered.length() + 20;
+
+		final String newText = createString(20) + container.getText().replace(original, altered);
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerMinusShiftAltered() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() - 20;
+		final int expectedEndOffset = location.getStartOffset() + altered.length() - 20;
+
+		final String newText = container.getText().replace(original, altered).substring(20);
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	private void assertTextLocation(ITextLocation location, int expectedStartOffset, int expectedEndOffset) {
+		assertEquals(expectedStartOffset, location.getStartOffset());
+		assertEquals(expectedEndOffset, location.getEndOffset());
+	}
+
+	@Test
+	public void updateTextContaineremoved() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset();
+		final int expectedEndOffset = expectedStartOffset;
+
+		final String newText = container.getText().replace(original, "");
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertNull(location.getContainer());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerPlusShiftRemoved() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() + 20;
+		final int expectedEndOffset = expectedStartOffset;
+
+		final String newText = createString(20) + container.getText().replace(original, "");
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertNull(location.getContainer());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+	@Test
+	public void updateTextContainerMinusShiftRemoved() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final TestTextContainerLocation container = new TestTextContainerLocation();
+		textContainerHelper.updateTextContainer(container.getContainer(), container, testText);
+		final ITextLocation location = createTextLocations(container);
+
+		final int expectedStartOffset = location.getStartOffset() - 20;
+		final int expectedEndOffset = expectedStartOffset;
+
+		final String newText = container.getText().replace(original, "").substring(20);
+		textContainerHelper.updateTextContainer(container.getContainer(), container, newText);
+
+		assertEquals(newText, container.getText());
+		assertNull(location.getContainer());
+		assertTextLocation(location, expectedStartOffset, expectedEndOffset);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorTests.java
new file mode 100644
index 0000000..fcb4d71
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextConnectorTests.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.text;
+
+import org.eclipse.intent.mapping.base.BaseElementFactory;
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.base.ILink;
+import org.eclipse.intent.mapping.base.ILocation;
+import org.eclipse.intent.mapping.base.IReport;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.ITestLocation;
+import org.eclipse.intent.mapping.tests.base.BaseElementFactoryTests.TestReport;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests;
+import org.eclipse.intent.mapping.tests.text.TextConnectorParametrizedTests.TestTextContainerLocation;
+import org.eclipse.intent.mapping.tests.text.TextConnectorParametrizedTests.TestTextLocation;
+import org.eclipse.intent.mapping.text.ITextContainer;
+import org.eclipse.intent.mapping.text.ITextLocation;
+import org.eclipse.intent.mapping.text.TextConnector;
+import org.eclipse.intent.mapping.text.TextRegion;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link TextConnector}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextConnectorTests extends TextConnector {
+
+	/**
+	 * The {@link TextContainerHelper}.
+	 */
+	private final TextContainerHelper textContainerHelper = new TextContainerHelper();
+
+	@Test
+	public void getLocationTypeNotTypeContainer() {
+		final Class<? extends ILocation> type = getLocationType(ITestLocation.class, "");
+
+		assertNull(type);
+	}
+
+	@Test
+	public void getLocationTypeNotElement() {
+		final Class<? extends ILocation> type = getLocationType(TestTextLocation.class, new Object());
+
+		assertNull(type);
+	}
+
+	@Test
+	public void getLocationTypeTest() {
+		final Class<? extends ILocation> type = getLocationType(TestTextContainerLocation.class,
+				new TextRegion(null, "", 0, 0));
+
+		assertEquals(ITextLocation.class, type);
+	}
+
+	@Test
+	public void initLocation() {
+		final ITextContainer container = new TestTextContainerLocation();
+		container.setText("abcdefgh");
+		final ITextLocation location = new TestTextLocation();
+		location.setContainer(container);
+
+		super.initLocation(container, location, new TextRegion(null, "cd", 2, 4));
+
+		assertEquals(2, location.getStartOffset());
+		assertEquals(4, location.getEndOffset());
+	}
+
+	@Test
+	public void getLocation() {
+		final ITextContainer container = new TestTextContainerLocation();
+		container.setText("abcdefgh");
+		final ITextLocation location = new TestTextLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+
+		super.initLocation(container, location, new TextRegion(null, "cd", 2, 4));
+
+		assertEquals(location, super.getLocation(container, new TextRegion(null, "cd", 2, 4)));
+	}
+
+	@Test
+	public void getName() {
+		final ITextContainer container = new TestTextContainerLocation();
+		container.setText("abcdefgh");
+		final ITextLocation location = new TestTextLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+
+		super.initLocation(container, location, new TextRegion(null, "cd", 2, 4));
+
+		assertEquals("\"cd\"", super.getName(location));
+	}
+
+	@Test
+	public void updateTextContainerDeleted() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		final ITextContainer container = new TestTextContainerLocation();
+		container.setContainer(base);
+		container.setText("abcdefgh");
+		final ITextLocation location = new TestTextLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		super.initLocation(container, location, new TextRegion(null, "cd", 2, 4));
+
+		textContainerHelper.updateTextContainer(container.getContainer(), container, "abefgh");
+
+		assertTrue(location.isMarkedAsDeleted());
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertEquals("\"cd\" at (2, 4) has been deleted.", report.getDescription());
+	}
+
+	@Test
+	public void updateTextContainerChanged() throws InstantiationException, IllegalAccessException,
+			ClassNotFoundException {
+		final IBase base = new BaseRegistryTests.TestBase();
+		base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
+				TestReport.class));
+		final ITextContainer container = new TestTextContainerLocation();
+		container.setContainer(base);
+		container.setText("abcdefgh");
+		final ITextLocation location = new TestTextLocation();
+		location.setContainer(container);
+		container.getContents().add(location);
+		final ILocation target = new TestTextLocation();
+		final ILink link = new BaseElementFactoryTests.TestLink();
+		location.getTargetLinks().add(link);
+		link.setSource(location);
+		target.getSourceLinks().add(link);
+		link.setTarget(target);
+
+		super.initLocation(container, location, new TextRegion(null, "cd", 2, 4));
+
+		textContainerHelper.updateTextContainer(container.getContainer(), container, "abc1defgh");
+
+		assertEquals(1, base.getReports().size());
+		final IReport report = base.getReports().get(0);
+		assertEquals(link, report.getLink());
+		assertEquals("\"cd\" at (2, 4) has been changed to \"c1d\" at (2, 5).", report.getDescription());
+	}
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextRegionContainerProviderTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextRegionContainerProviderTests.java
new file mode 100644
index 0000000..d3f273a
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextRegionContainerProviderTests.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.text;
+
+import org.eclipse.intent.mapping.base.IBase;
+import org.eclipse.intent.mapping.tests.base.BaseRegistryTests.TestBase;
+import org.eclipse.intent.mapping.text.TextRegion;
+import org.eclipse.intent.mapping.text.TextRegionContainerProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * Tests {@link TextRegionContainerProvider}.
+ *
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+public class TextRegionContainerProviderTests {
+
+	@Test
+	public void getContainerNull() {
+		final TextRegionContainerProvider provider = new TextRegionContainerProvider();
+
+		final Object result = provider.getContainer(null);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainerNotTextRegion() {
+		final TextRegionContainerProvider provider = new TextRegionContainerProvider();
+
+		final Object element = new Object();
+		final Object result = provider.getContainer(element);
+
+		assertNull(result);
+	}
+
+	@Test
+	public void getContainer() {
+		final TextRegionContainerProvider provider = new TextRegionContainerProvider();
+
+		final Object container = new Object();
+		final TextRegion region = new TextRegion(container, "text", 10, 14);
+		final Object result = provider.getContainer(region);
+
+		assertEquals(container, result);
+	}
+
+	@Test
+	public void isRegistered() {
+		final IBase base = new TestBase();
+
+		final Object container = new Object();
+		final TextRegion region = new TextRegion(container, "text", 10, 14);
+		final Object result = base.getContainerProviderRegistry().getContainer(region);
+
+		assertEquals(container, result);
+	}
+
+}
diff --git a/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextTests.java b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextTests.java
new file mode 100644
index 0000000..8b9ef49
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.mapping.tests/src/org/eclipse/intent/mapping/tests/text/TextTests.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation and/or initial documentation
+ *    ...
+ *******************************************************************************/
+package org.eclipse.intent.mapping.tests.text;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Aggregates tests for the org.eclipse.intent.mapping.text package.
+ * 
+ * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
+ */
+@RunWith(Suite.class)
+@SuiteClasses(value = {TextConnectorTests.class, TextConnectorParametrizedTests.class,
+		TextRegionContainerProviderTests.class })
+public class TextTests {
+
+}
diff --git a/mapping/tests/org.eclipse.intent.product.tests/.project b/mapping/tests/org.eclipse.intent.product.tests/.project
new file mode 100644
index 0000000..bab20d0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.intent.product.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.rcptt.core.builder.q7Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.rcptt.core.rcpttnature</nature>
+	</natures>
+</projectDescription>
diff --git a/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workbench.ctx b/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workbench.ctx
new file mode 100644
index 0000000..9f8f856
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workbench.ctx
@@ -0,0 +1,24 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workbench
+Element-Name: Initial Sirius Workbench
+Element-Type: context
+Element-Version: 2.0
+Id: _l8MccPLOEeadt4DOVTJnHw
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 8/25/17 2:22 PM
+
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVkktPwzAQhO/9FZbv
+bABxQFVSDoBEEQVEEXBDxlnKCr9kb5qWX4/b0hIQz1u0mflmvHZ5MLNGTDEm8q6SO7AtBTrta3KTSjb8
+uLUvDwa90scJoDYUEkLUgRmSRqci+f6tj88P2fN06B3jjMXMUn9D3F0Qc4ZL/Tyv5BNz6BdF27bg7QQy
+t7gbDdeS72M2zvXvhXMpKayv0RRrYfb7iFI4ZbGSQ0dMyogxRWqS2HSVgupK3pv9kdaXZxfHqGreO7q4
+uT51J60UIdcPqJmmOMy6bq20JEFDwN6bBB0pLJvkzclBT4hyStimQddr52buoPY6AeVdOQarQsgGoBoX
+yIUFRqvZTf4uixXkHYfNKqWNxBghoVWOSX8AjN+GXxO6hUJ2xSZrLcKZ/yaya3iLSHCFyTdR47ma0kSx
+jz/7Pm9tBVmeBHAWTL6yXwh/2914ni83ekcvivP7u1QGmfHDucriH4950HsFUEsHCB5KokhmAQAAIgMA
+AFBLAQIUABQACAgIAAAAIQAeSqJIZgEAACIDAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQAB
+AAAAAFBLBQYAAAAAAQABAD8AAAClAQAAAAA=
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workspace.ctx b/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workspace.ctx
new file mode 100644
index 0000000..b0bdd76
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/Initial Sirius Workspace.ctx
@@ -0,0 +1,222 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workspace
+Element-Name: Initial Sirius Workspace
+Element-Type: context
+Element-Version: 2.0
+Id: _4A3_UPLNEeadt4DOVTJnHw
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 2/14/17 4:58 PM
+
+------=_contents/sirius.test/representations.aird-41c7f951-33be-3182-ad7e-5b8904f71569
+Content-Type: q7/binary
+Entry-Name: contents/sirius.test/representations.aird
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtXXtzo7iy//98CpfP
+vbX33lq/EydOTfZsHs6MZ5OZbF6TZGsrhbFss8HgBRwn8+lvCzDm0QIMCJxZqk6dzRhQt1rdv+6WWtKH
+/7zO5MoL0XRJVQ6rrXqzWiGKqI4kZXJYvb05q+1X//PLvz68SGQ5VyXFODg9UgT5TZf0yutMOnC+bNMv
+oS1FP4DfD6tTw5gfNBrL5bKuziZ1VZs07i8Gziu695Vlx3yj3Wy24LXza3FKZkJNUnRDUESy+mpEdFGT
+5oZJ0PU1EWVprhOzCV3SpIXecL3aaNVba+ZcD55aka1IwkQTZiGtWS/EbcfzLRFVjTC/JLMxFUe70aev
+rb6ZCfO5OTKur2bqiMhLTTKIVieLhv3K6gtFNYRQgU2AkLZQDGlGgL9mvd1YfbJqQjfeZDajIaIyP/R2
+2tGjqPZWX+nSgW5qw7kqhneENfKVGIT+3XB/F/EFUytifpcNRZdwk9O1WqmapiyNDqtP34QdeXD527c+
+Ec6OL44XX5XPJ99+r1Z0IhPRIKM7GD8d3hP3jq9uA+9V4PczaYn8Pjq/vcfadfBjH5hrVX/5V6XywVRo
+C16MtzlonmkpB/1LQXwWJsDtVCPjw6qt6HXz6b8b1cYmH8eyOnajNu2DY0F3mhzC33X7gfOlulRsobm+
+doHpFZlrRCeKZXEnKvwhKURzjQgu6WpFUiRDEmTpO4G3DG1BTOEBSad1F0XXkB/crZ6vGJ/LgjFWtdlB
+Yy4vJpLSAEk4UgGJWBI2VFXW69CQNFE8KmQ+ravWE1CvX50+m1T0PxRhRg5/uiKUsZ/+tAXTWEsmM0Fh
+qhciKJOkt103cdtsDk6vAX0AH8VT6wcXyVF/8NpHSJo9XilJRZQFXa/YzdnEV+SPlBXa9hVDk4jOGDTv
+e28eHhazfcxi1YUmQisfL86eTgdHH6+OLq4d4kB+JBiCi9iq+QOsl0BhHKRgfXhtggxEDTKZEYrrTKnM
+iKAvNPOtWxiTw+ql9EpkF0/AlTiV5JFGFIyzL6BjLrbIa2t+hJCxvgIr7riZIi/dbw/Bt93ENyXf7mCI
+Zn2122zuWZqetPWds9+Zre81mzs+1jds/u3oGBsi66tOs9X0yG7ZeVCjZGeyIAtv6sIA69QNTfBCkMPK
+ypH72QlqWCPQxcaqj4EnpiPTMXrXqmaAGV77PJ0p4Tg02S2fSTIEXay2X6LaZvUmrC9TYU6C1MAQEPsc
+A0h+MZHodggB3sL65RORJlMY1X1ARgNgUbRB0c9cnKE8VhfKSPezEux45fWwutMGnXqD/+43vbRwMWxm
+LLs3iG2zkGB5hfmJNLa62xU5IgG0zkTfbJAAGTEWEnSHiLPJGAmeUiHBZp1X2Rge7PzT3oRz59VB7jAI
+6hUJVUlhENqOHMzsYBBQIAEMZgR8QBwHvt2eBXydNg/g6442AL6b+0jj3Yx8d4oYRGbAB61zBT51EB/4
+Xo+kZ+62nw74Etg+SJib7UPbedp+d1Sg7XdHjKCnxdH2u9PpBrZ/17zI1vb3BohBZGb70PqGtp9A/YEI
+N/WHtnNUf9CFbckAgBXcGLo7u9kbwd5A3sAI7k+QqbRUavqCJMbZGcGLytMBHl8ikMB0gMdLna8DBHbS
+Bb+bdn4D739Sa3HvfO7eH9SLH/y9qDnCH6BAcd4fiId7/+4OB++//w0xRybwPXQiM9eNyQfHNzPg2+9h
+M/kZAt+XDYCvf8F5ygPYyT3rBwlzm/yEtnOc/ARNLM72gXi47e83Odh+77m5ge0LeqTj3pg8R9vvPSOu
+NkPbb7PXVYK2/6kTGTCmtP12rEWITG0fJMzN9qHtHG0fNLE42wfiEV3NwtZr5zsb2PqwiyBDGmsE8hxt
+vXa+u6GtJ1B3IMJN3aHtHNUdBmNbsnxgBXd87Y7l+FpdDo6v9oaVOrCMYTTIeLobyPM0hrceZ8e3QcJ7
+NkTqAzJ2fLknvCBhfkjw1ssTCd6wipycHB8QZyx1tTezfXa37Sokf8fNUqQop0tGE7zR/mjiNYnfHtmr
+vzvNZstrEl96YXVW7MU4QZsQgw1fKSDj7eIrVhpofdWlHQjodrIhp4QQfYOhrrWasbV8s6612CUd0LV2
+dl1rYavGVIs59eyLyK4W6VInllXPgFDqnrFNFNhRiGioWgCdqF0hhDXog1m8fgWfSbKkEEGrVv5azObn
+kvJ8Dc0u9MPq0VB9CUYpIZAMCIdygEAURcMTVVY1cKg7veZur7c5Zg6JMrIKWzFurogMf7yQY+ctP1tI
+AGG9eFj9o/lzBf5Xa7W6P1e6zT//6w/zr1rX+r35Z1AsJvgcKeJU1TB2BiMAL8l4s97wsPIwxJbv6MP/
+adZ3f27Wm/8bIGdBWVJyiEo45FoBch8aJo4nRPbHE/a6TBDZb0ZYGYML2RmVpmtkR9di04DE45w9vZsp
+sgOhnJEdKDID0UyRHQgh1sYR2YXf2dPWmSI7ECoG2cGuwpD9RiPpsRtoMLA7N5wGFmLgdLu9+3Ols0+B
+ut3bp0Dd+rmy14HfWj3ntxZFb/pju22+uAvf1Dpt+LHTtFHebKcGDXGAeaGDTRVzg3kglyfMAzkmlARh
+/lbDnMImMI9OxqVBjCFhz+5lCvNAKGeYB4r5wDwQyhfmh4Q9a5kpzAOhYmAe7AoRabYwL3SwdZ5cYR5Y
+QOTrg/nW/t4KvGvtXtuGeTAbAO3Wbm/9s4n01u8mrNfML8FL8MB18QybjOCG60AuT1wXDfbOriCu3+1i
+YZd7YgbfHsIxfBeN43xwHQjljOujW/bOsUxxHQjlOzEDBMM8Vna4DoRSe6xEuA52xT18BxpFh+/AQozw
+fae1wvWdpoPqK0ynDzlB92gPm3XmBt1ALk/oBnIbhOT3n7D4d5M59cyhm0jsqthMoRsI5QzdQDGfkBwI
+5RuSE4ld0ZcpdAOhYkJysCvuIflo73PRITmwEB2S19odB7tbTuTdXk+odPih9/gzVj/GDb2BXJ7oDeQ2
+QO+Hb1iYvtGKaNYTKuNlTiuiQChn9AaK+aA3EMoXvcfLu3zQGwgVg95gV9zRe/z5qmj0BhbiTKi01jMk
+LV7rm5N7LOfnhtNALk+cBnKb4HTvDHnbhdOMXXRrnEZnxtOY/KQWWgSRHU4DoZxxGijmg9NAKF+cntTY
+pw1kitNAqBicBrvijtOT+8eicRpYiMbpVTTd5AXRUxkru7Axc6fX3dnt9JrNvWav3ertZw/ZQD5PyJYu
+2Pvlg5AtnGOzEC7IZuz/W0M2iulprF+6YG+1zhSygVDOkA0U84FsIJQvZEvf2YVQmUI2ECoGssGuuM9p
+A42i57SBheg5be6QDaOMCIJbVA3kkE4zPUTWkP2XwC7CC0L28BGbenBBNmP3Cse57L8EIx/IBkI5QzZQ
+zAeygVC+kP18nFMVIRAqBrLBrrhDNtAoGrKBhVjV3rtOtfcuL9yGoc4Tt4EcG7ezx+lnlb0fPojTo69p
+q73RepJUJq+y97xnitNAKGecBor54DQQyhen5cvQ2s3scBoIFYPTYFcF7+MBDopGcWAhDorv76xQnP7F
+B8VBEfJEcSCXJ4rLl+yy2iCKE3EePqcdWfSX+W5Muc3eHp4pisttbKc4TxQHisyT6DJFcSCEDCtPFG/3
+wgYtQxRv1/BB443ioJYI4TxRHDjIYLd6KhQHFhC98qH43grDa3vcMHxGsOCSG4YDuTwnuYHcBuuS478j
+Crfz35CjnIVWN2eH4UAo50gcKOYTiQOhfCNx5ewsn0gcCBUTiYNdha1L5oDhM4LtaMgVw4GFzbbrtPa7
+dmG3U9fNdVOOouda2Q3k8sR2ILcBtk92Iiq7859lUfTPYQCYIbbrn3EA5Ibt6k1o0Xp22A6E8t2UAwTz
+2ZQDhIrZlAN2VTC2g74Wje3AQoy671xmWdRurhXeQC4lin9o0Mv8Vv+2r1YM3CzoPM/o4kGy3Psbi5VX
+EH969OXL15ujm8HXL08nt9c3Xy8Gj9a/fus/hNxEuLp38USdzRcGGZnqerpm6YpMJN3Pyv4V4nk9QhMZ
+zbk7btrNwTFAg0xGg5kwcb/ooVczsHJPWRgS+UzVZgIYyFCVR/ZP/Vd6yaR10alOtBdJJAcAHiN6f6X5
+wpEsTRTLdZ73z24A31RVNqQ5+8Mb6wUQt/SdWKKyRsn1hd+hfRiqGnxqnoDEGO7rN90gM/ON1fWgRHmR
+NNXk7qDh3MhJL/rU1y/rjV+JpUf2dZ9DWRCffwrapdndQjkQCyMOboOlhPxU9fX4M1ayUapqqapbp6on
+99gqdamqpapunaqeythSXKmqpapunap+PMHmbUpVLVU1V1Wl84n+tzx6evkdmwexE3lNU5eH1TNJlk8l
+YaYqowhtWs2fmBQPqzNBmQqGISh+NYNMUn0mxQ4yvEa0c6psfvkEhHjCftcnS2xGR5+qy4FIBTQWZJ1E
+Wzwyt1a0STRCxOV7FfoQT6p9xot+kbJS/mvQxMNqdxMBk9/Im24SLVLII0F7fhrKC4IJmiW+gmFicoXV
+Y3lgYqAAMfPv1YLCj4wfQzKRlHiKfsx81SdirBx1U/Tof53PVV0yyFbCCFtqXFEERIugyA8BzFuKF9Mx
+Vvnz44cV2cMCSBJD3hIW0sPCdIxVdJaw4IcFQZwSZK3Ivi6mb9UfXAjzOdho+0IdgbSs3zyrN70xssLn
+4/uZvOEie2qZi9Q2kZXQ5rJgjCGbPmjM5QWoUEPVJnUiytJcJ3UyG8PfqkZoqqzXoTFIoRuuNhvm07pq
+PaGiNhfp7lbCXwn51Hz+05/28ytCNQF6ZyLV6qU+XWmEgaGvjchYWMjGufBGtMavoEqGIClEs5l3vjj5
+73azfyILuvmRvhi6euh96ciAQR/CSCFD/SJAJImMjnsc2rRPd4ImCUPvIvSy9jHGVYu+YTHFdrBmajUa
+M4t1S+ggTrpk7pa3n/UQ5t38tk9WAsR7YGAV58Cx+bQ7jHeNLIuRAO12GKJQZhC3ZzbOXsEMssMSuaks
+YeIOipiauUk/IHvsZ/zHVCpGl8K4qdixoJMGtRQuukVZR+JGW7dejyTkbAluukWZQQIBR7fwJceMdIvK
+eRt16+QeqWXOSLduyKuxukSvoUNGa3wdj3Vi8FE16EmIqh0vI28TzlLVgJlQVUOXDDNSNbfYt1HlTuXI
+4vdsVA5COJ4KB/0IUbiTGjIZwU/hgJlQhUMX/v4hCvfxJKLKKoXCQSyragb3II32IUTZ4l57mpGyATOh
+yoYu3WWkbJbAOagZJHM0TeOQuNElolSJG50seo+JG1nzvU7HnvpXZEwg8xczT8aooKOzA1zpHKZCI2XN
+1D6dj40D90jus7Jx9B5XfjZ++R3bdbC2cXTZM76NXwriszBhCft9mffkKvr2+n+IeR9LtZGk0dJ/VRFk
+c3rGZe/w78xNHoTPzeSdSNKZgeJj+NCHEMNHt5vyM/zJFXbyydrw0YXMLTb81Bo2HccA3rQaZq330hko
+Ts4FehESQKLb3vjp2HSMncuw1jF08WuLdSzgXJLsbfF6HR3zS3R++1zSPe7npfsNm7818bjqpGWrcjea
+qx1WqxV1YUzAFUyo79FNmWO3CVcY109WGOdRVRhwVWHurJQUUZ15+MBP/V5KI2N6WG21YVDtrVytpns7
+jmVAm874IlnrB53MBPB5IjIQids0B9g0CWRYz8DZOwYU2Oa2vDSwE3g9hZCSIciSCNIER3UpUEHFCBjo
+y3pjvJDlhjr8q9VtWP16EoZ0B6Jo1CfSuFoZgi1NNLrv0F48Ppf+Xkgj7y4ldL3OWYM7uPp4fEdNRvf3
+KwgC3mq+UcgCZVBqHrR5R3FUzPUteG0k0RYhsjL7q9dbjV9NYfjEhhehxhgPxPA0MqJmt1utTDRCFPvv
+oYnU9E8fZUdbElDHtpNS6u3dNXXzb4s6/dNLHUaaJKWOHRJtUW/vr6nTv23qbc9WUhvizXFx/QpmtBBk
+e1yZCcCJTwF+PO0NgmEcN4ctgncesJOhLW9Hm6kcVG7gP36H59ETlq+IXpB1wjVKwqt80W4jVfOhHsRd
+T++R1u4X7IhJtCA+ThV5lBkBuQhIjwB15saAH80gYpcroAifGONhgIIYH1W+H6PRIHT7yvIxdIyNj2Xh
+ir9wxRboCmt8iYYvk8gkzVheSdipV3aaQSsnolMM7MbjCvNQxGBqwEo58NSCU8rgKxJJnS7420uTKlwv
+MUHwC+GBXhnCb2LpmQXrIPkIIE8Ri0PjBcbi10vsQFWEetuh3uqWsXgBsThaG2i7BLfdH1T61+DGqDC5
+ROWhZZKZBObhFJLF5k+32F1yrA2ugf2rLnbiVkYmA3ngMzqoT4Zi0HT24Sg0WoajWxGOpsWXpz3syoO8
+cn1q85zyfEbTCXFkD7sQjluOD+SibbbM8YvL8WGAIvAvCajuIXc8laD6g+X4N/fsgM6sYI/O8bEyJZqj
+338KpqYV5mXsfHJ3fxF+2tw90F6a3P12hh1LyC93B3pl7l5I7g6S55e7Q+MF5u63M+xI8zJ337rcHd97
+ZUM9/X/eSTtj41kW4TWr6UTh9evx53mGaXqcTWaJ8JzyySlNp01nnqbTRss0/YePKO+a2AnvFswM+hdn
+1FYdePIFl8EFIFaNGmthiRV04nfe8gk6/b3MMP4MazpNKPptiB0lzq/iTKJHY40FkfAuOYOOlTFvupKz
+ZpaRMIxHgSVnQL3AUPnb8KosOcslVObp3+5PME9i+TfPvtjomRO88DnoBIVzzKXycV6srb1pPRez3TRu
+6+F3bEGNnzcBeqU3KWQGBSTPbwYFGi/QLTz8PipnUN7FDAp6pIgN/a7TTuhEykAxKoeVWovPVEq8c1ay
+mFmJSSnZRMtJjVmrnGSiJcYRK8kmWoBPXhMt0HT2Ey3QaDnRshUTLWkRBz1TxkYc57CbnPGGcchO5mjD
+opMMa05lrMYwMdbEOF0nGdYAn7ywBprOHmug0RJrtgJreCa9Dx12XVb/6/AvIm6S9+aZz/q5yzClDWta
+0DRBmZD15Z76L7/1+5dP519PzLsFPzSQN6I/vx489hN+ekXpRnybJhd/JNjyIr9cHOiVuXghuThInl8u
+Do0XmIs/Evau4DIX36ZcvH/BLlwbE8FYaORLDkUNPh/QcJHOPjyOTyxZjNxvYpV5vOqKKbly7/AW1xXT
+Aco+YYBGy4Thh08YgFn2Khmyg8OJ/nfW0f9unOD/VDAEq0HGlIJv00UMHN64yTRhMwgK2cvBL2wGelHB
+Wxk2Nx0dyDZypqUvxVU/CLoRL7jlEloDdUTREepNp++9Vhlab6Kq2UXXnzrsIoe/hBehLqn1a6JJgix9
+tw4eTBBcb4qzXMDbxDt4Zg0Fqs+nznOPjAYEOYUvVvTq+vXg2u4RreobuSm9I/1cC9DlDPRrYrAerVp8
+NYimCLL/iNgPDdeQZJDXgDaz9kv6qxv9N1llkecA+XL/5AbulhHgPq1eehoouiEoIjFjYpr9Zp34wIhl
+vqESGr0rN1QWoBoFZ0LDLlbk4D2s1YlOYlTEs05nxbZVsk5n5X266ro/HI5ZxRtPk4OJU+wQpR+g+h06
+Vq6RbFH1O4xHgdXvQL3ApRVxyj7kqax+fy/V76MBe9nFvqgnev0f34wVdHWskwXw0wP5uLTg7UNp/RjS
+YhrnNVpiizb8fArQK31KIevuIHl+6+7QeIHOYbQ8Ltfd38W6O3rxXP4nAEbdwpfFcnskjWSzUR/nWPVb
+4krUGFfvJZu2Aj55VaJC09kvLEOj5cLyj7SwTANBzwijF+LZ2PNHs17/vz8rq+v6Krq60ERCOxRyzpUF
+P85LaHAbI4BMfJNgDJRK3nYoOlHZBmLJ1+tL7GIhP+KgFwHaAj/SNHV5WD2TZBlGeAb5NLhxyACAYzsQ
+hQ5PBcMQFK8n0A1NfSabAgkwHBWMioTOtpxTBGQJ48T3ip8EkmxErBOIC91QZ2dWfZb+i4m/19J38qHh
+e5IBTgODkbjnF4LnKVFGoeLpu5/7SD8i+rJVsnlkLTp3ek5Yudd1pltaO37ReaSTUcD5A93/yLzelZcT
+wE6E8cM944Y0H9yjJ9VkNQW+Icx/JOCfJTFs5dop+/yV2G9fL+ZEo5/o9WbO9FppXc1tH73jDMIU20+M
+BH26GjLbqwyU+cI4kVWdjMxf/K7FAHP2epWwmQiHr/c6AYFaI43WzHGiXd1wUjuZD4aRZGFsq9NdT2p3
+1ijb6frnLQgIOdQJHXvf8HOAuOjc1veBfKQD9nUw0wjlto9tWuDTUzkq3AoJNUqXyTJS/l4TWzVO5jXR
+9ezSa+bjNe+usbLq0mu+P68JI1mw1wQOivSaQL5Qr3l3jVVD8+kpUvlces134DWxU0YDU4v4NXm55Jqb
+30wXx4PRu0qivWUC7/Vtgp73U3qvd+e9YCQL9l7AQZHeC8gX6r2+TbCDgfj0tFV6r3fpvbCzsJMtjHHx
+XgnuZonhvczlsJxyPSat1Hne/QIbldJTvj9PCSNZsKcEDor0lEC+UE95v+jl5CmBUukp36WnxK8kS+Ip
+ucyOlp6S7Skfelg9Yukp35+nhJEs2FMCB0V6SiBfqKd86GFXufHp6VnpKd+np0SvrPB5SvyKDK+nxBcb
+03rKFLdXxPBinuOJucyQPj4PmJIrnVcK55Wdm4IhKthNAQdFuikgX6ibenz+nJObAkqlm3qXbgo/Ydrn
+pvBDrX0JHerL0rqpdIdSx/BU/pNCuTgr4Q27NLB0VlvkrGCICnZWwEGRzgrIF+qshDfszj8+Pb0qndW7
+dFb4cQg+Z4UfvJDHOl2iExBi+Ch7ey0X1yQeYZWs5azg+5sVhJEs2IMBB0V6MCBfqAcTjxLs8UvYU2Sz
+XunB3oEHG33Nak8eXky51u/D6h+ter31p/1dtbLanunsALeo0iJGPZO92+vbD10NZ7yHOxcatKzTllpK
+7wpNMofb7UxRN8rY//1P86XHUm0kaZCjQwOCbB7E4NpIC//ONhGEfkZhazovCQQ23yafyE0ApVQOMfl2
+dyLOc3KFQCnSFZYb09MaGH/HiJ9Ul2QDAZ7/IY5RppsCgm5xdUJIJi6RuhJOx5nYWaG8+daG5GwncIHj
+U2wjXukCt9gFwpDxdYFAICcXCJQKcoHj07x2zQGl0gX+AC4QP388s53nXhdo+Tp64Bnlz+8GW9Yj6/Dw
+THNDMeGB51tEwTkEs+GIL6WPnFy1kHPC/KeJTa6QnVRsT+qZss3rmLHJVTvq6oZ0rgMIILOcPGAVKEUd
+IsvJdQBlbKC59LETedNG6Tq233VMdqI3sGU8rWg1juRPVoMcphXdDfNIeOwe8fJLLPYT+IvpuIfEz35/
+MR1j25kKOX0SGI4Kw9O5BekTui+FA2QCpchom49bAMo5ZU1AKTJrKt1Cbm4Bn+7wis7+9r1Merj6PpZk
+g2h3gibR+xE/Sbqham+IYZxh77nUdtT//IDUu64JgQ5KL4JBRuao6UxRmo+3Wnpe/UvQxaORVYogyO+h
+s4KX29Url4L4LEy8R6n+owQAyC2NzI/enwyONHFKKFcMMdAbLxUdkQdA5zfJmMJ/nCZMGcluybgfuSTD
+ikFtTWKEcKsGbJT2DZf9DHuEhe6rW0xtvHbj1/ngMxbFW6e2m7xURFp+VrEbq3rzhiNFUW3ZKYYGksIH
+/sD73puXgyW2dmKFjIfVjxdnT6eDo49XRxfX7tAedFBwEVs1f4D2cYnt8rc+vJY0aUHnoiwHGCKTGRH0
+hWa+datI8Oal9Epkb6QqTiV5BN4W44ymO362kJTb+qrdbLYCTAU74Qu8NiL/+QELX62vdpvNtq9xM657
+g3D9BLTM0ASwK4yMUzXvI4UMwBu9RN5/r0Rj1Yc0Xftthm7UMr/qNJu7AclG3dFhJiG0fA4jfz0V5oGE
+yWQC6fRYVYwvpnXdDheKsfALIKaYj+k9PrqfXvS1HSzxbty7wRI7uCHQO/OXT/aFX/sBdhJ2FYgjorWv
+GOvuue4Y6+4FatQQAYR038YTTABIpuu5fYNClC/aDuDlxtMwQRTBcGEli1prLQr4O8bUiM8tTQ1jftBo
+LJdLxx2Da26AS24ARLUbfa+7soQZOYGRAZHQGYxvqvaszwWR+O/3YRh7IKG1CkgvVV2yZjYUU+rLVbNJ
+7hill39Bl+bGW11/maS+6s3sSVTCHLZm7ZXRe8nh/FmwgtyJQ2UMoZptTFne8kaFjtyTmdVNZ+/1CqM4
+g1BOPJi9y2zigWpiyJxgOfGwJTlnOfFQTjxs9cTDhsFX6ISE4z0Z0wCOYIpRQasPdg/oWybfH9b/RAOB
+U29f1xfcu9H49h7LOCUFRhH09jvdEGVoi9VKybYKyqWnmKw+NFxSOQJTetMl+Pn/AVBLBwjfe06rPh4A
+AP6BAQBQSwECFAAUAAgICAAAACEA33tOqz4eAAD+gQEACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRV
+VAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAfR4AAAAA
+------=_contents/sirius.test/representations.aird-41c7f951-33be-3182-ad7e-5b8904f71569--
+------=_contents/sirius.test/.project-107446e2-aecf-3fdc-a67e-f2a3ec00adad
+Content-Type: q7/binary
+Entry-Name: contents/sirius.test/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABVT8sOgjAQPMtXkN4t
+evNQysXwA+oHYNmQNX2lW4yfb1uByG12ZnZmV3Qfo+s3BEJnW3bmJ1aDVW5EO7Xsce+PF9bJSvjgXqDi
+FUgF9DGZZXUQdjAgCQPOxCNQFE1hkqKcMWCjFM2KErmEUMbN//CcUY83D6oou8kOcQ6QXSuWLkwclEZP
+wJfyn8KNG0Gny5fsfE7ZyKlb0Fa9e+YLUEsHCO1teoKdAAAACQEAAFBLAQIUABQACAgIAAAAIQDtbXqC
+nQAAAAkBAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAADc
+AAAAAAA=
+------=_contents/sirius.test/.project-107446e2-aecf-3fdc-a67e-f2a3ec00adad--
+------=_contents/sirius.test/base.mapping-89129379-3cad-3a56-8a7b-34e8e8583743
+Content-Type: q7/binary
+Entry-Name: contents/sirius.test/base.mapping
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtWt1T2zgQf+9foXFn
+uLuZIwb6chMInRTCNb0EGJKGu0fFXscqsuRKMknur7/1d5wPSklC6JUXsLWr3dVvP23n5P0k4OQelGZS
+NKzD2oFFQDjSZWLUsD73L/b/sN6fvjkJaBjiUv0D1UAmAasXW47iLShE6DquNyzfmLBu2+PxuCaDUU2q
+kf13t12w6CrL+F3CcXRwcIhsnZ7jQ0D3mdCGCgfyXcyFyq5AusDHihlQNYjszDgb2fId2dIjdllE0ADF
+95hikSYGtLFO3xBy4khhQBhN0Oa6mYbIgwrqravhF3DMBePQkQ41CIJFvIjza2r8hmXrRE4tlpOrqIEj
+FZqGOJylQhvWHjfHyXK9dU2dOzqqwrr3NZLmGLFNL2YATheWo1xl1kuYH8a7sj+xblECOJyFGhIxEHix
+qCO7FfNmuxM40+vs/DlBf75pLwpc7pZiz7UCj02WCTzdeztpHhOSQHnGqdbMY4hf6bCUL4M54Vi0MXdi
+RqFDbRR1TEY1KoKqtkxfLwpB9VGJJj5amLGHnBpPqqBuK9AyUg6sjoe3tt1udS/ijGpxCDAqUhn2NjTl
+p4zjjzIBaoUuPK9jIkX5BVD8D6vAvAEPFJQhMwNoak2Hibsc7SjEE3yQkXAzlv3DeUwz/fExH+G+NXBA
+sxaOnim/CkOpMQzXFG8bqkaw3Jn2EoS34ILUgke5gDhpRMTx90DM/5/8k/Lt0j9ONQt3APM3y8EGMZ/X
+ZeeddesuaBqj2DAyy1IEmb8f/XNqaL/YuQYopZDvOH5Kn+l0G+qARc7trsdtwKMuaEexcKaXczmuFr0n
+tJ3VHn/UTIQAtPBwxcyym3ozW/E2gspmq9AzFB97oSXusjP/1J5YmA9fG8AOAlFBKJV5gRP6TWLYFgMx
+VWDzZZPmjjpw3B933YFf4lPmA+kbX762+Sfl9At75FuR8DtKxaXJsvqtEGH4KKM86sACyd6MQX2YmGp7
+3mbmbi9hNY4+5srz9DfHH+KCRyNuBpRHOCcgvpSv0ZY2kNrtFVXzmUYVEO5PBNyWEjt7b7/9VFpM2G2k
+k5fuvCza4I/R7dZ17pzls3WyXM0/ZyTiLkuWL/Se1pis9UAxytm/dMg3W6tXzD9Pah9beu1Yvnf7YQaE
+53w4dR6cXHdQtmano9fXcy+okm0wL8tH0Zf0SugZvsRUHljWz7V0ufJRPSVY9kNf9OOGvfJzfmK89ukd
+6BCogpqZGIsY3NKweuUyFQQr/AjcaWriPmkKI8WUUOGSMw4ypEjPaWdSMcmpiHS+8pEGHOe77O5TxOPf
+IpxR0FSRXxHa6W857S9EkXRQZ77Qpc4QjJ/fXhkfOJf57Y0MQCZWxEJLFX0WSEGkR5rIL3S5bFBxU7hK
+CuaU9vWVZBwpyXHQE5q56WmSP1UgHFQ5gwPnv2hyizaRvk8NaQk3vS0YNPlHRqTD7oC0S/t8QJhiQbGR
+LaWkKow5mwZDwKSBfKEj7wGVdOgQAy++kLoQ1AWqMXYIxmZ+PaujC8rxqTCxlgHgmeepakpu2T2mNTLc
+MjReFsg3SZe5OgoCUOSSjXyDqs8RgqDQHTk+abqSNNEwQy6l8eNSk1GvcQxxOOjfyTVWIAdiDf1p1bw+
+DWJ/IwXdRHqYb+MKGQIs/yVoY+Ce8VNjKnxjSf7E0E+KfHpUdDCdZ7mUOBHFEaaRbZZ4m8wpeLw+5bDK
+7z7TRqrp7L4O8yCJmXPMYD9WnITvJ+kX4lvumCqXtNvtuUC/YeiYhDJH+AgCndIeIG74SEkOV6wfVdcH
+S6UM2sulFOvzUvL1d4tmLrdzMEeIa9FJXg6T31OdvvkPUEsHCKGvfSBWBQAAhiUAAFBLAQIUABQACAgI
+AAAAIQChr30gVgUAAIYlAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAA
+AQABAD8AAACVBQAAAAA=
+------=_contents/sirius.test/base.mapping-89129379-3cad-3a56-8a7b-34e8e8583743--
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVkU1PwzAMhu/9FVHu
+JHzsgKq2EwIkhviSYIzbFFKvBNokSjzan4872nJhQtzs+PFrv04275qafUKIxtmcH4lDzsBqVxpb5XyL
+m4NTPi+SzIVKgK6NjyCC9ohCYydaFz6iVxrS1RidO4vQIesak06yx70sDbIxpfecvyH6VMq2bYVrKkHi
+8uV2MSJ/zJraR6Zv33GSODlxnFnVEL2wBo2q2aMJZhvZ6qduypyvZ2cn6+XDzd0lqBJnF/fPT9f2quVF
+wlimezMW+5gyH9w7aIyDbtzpCYSI/JsgZmNqGAExNHD5a7lR3tOVyaoLsIcJ4ANEWkEhHTIKZUK5B31V
+dIpBc0QyOe68syMnP5n874cWyRdQSwcIQ7HE8xEBAAArAgAAUEsBAhQAFAAICAgAAAAhAEOxxPMRAQAA
+KwIAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAFABAAAA
+AA==
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
+------=_contents/sirius.test/mapping.ecore-9c35a56d-cca7-38f8-9d53-eea1f2055dd2
+Content-Type: q7/binary
+Entry-Name: contents/sirius.test/mapping.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtV0lz2jAUvudXeNxz
+UJJeOgyQaVKYYSbbBJLpVYhnokSWPJIcaH99n2RsbJyExXQ51Aew5bd8+t6i5875IhbBK2jDleyGp62T
+MADJ1JTLWTd8GA+Ov4TnvaMOMKWh3b+j7IXOIFjEvF0onTklNCNNG9e74ZO1SZuQ+XzeUvGspfSMfL8e
+FiKmKjL/7CXOTk5OUexqxJ4gpsdcGkslg/AowCvT9BgqusAETwx4AxBHzsgZ6TuxMJA0RuGYJgluBR/N
+w/2wohyrKYi55hZ0C1JSkrzTEPHFSrmHIDpwKagxPOK47QA30bY/EnSwJMa/zJ1eKUYtUhMGdGKspsx2
+Q6tTBAWjNAE9Rk3TDT8RMuxfDy6ogb6AGKQNcClXvlTSUi5Be/cOwAhtMJtqKgZA8R/ewHEPEWhwxC2x
+GJVqBldcviC8NEHvFyqV0254fJpx6y4YexvOOwoizNskUQaZKdaIpXoGNiSNwGRGdgTDMiIcPwWNdXzZ
+PhviYwXnZRS1gKygVnGsCxJnD2Gb3WB9tVbzSWpXtOHbMiJ3k5nskHJa7pynWbA/zsmd0q8GfQqGaZ5k
+1SDUvIh4PeBLE9+opW4h2KrOEW8fgbkqbRb6Zf5swFiKci0Ll+uknOSHKJdDYCp3gd+Vi3tvU0OitN2q
+I9x70fVtZqtEuHQ+QFm45P8DrbpGrftdD/a/URx7RKjetQ8QmfXWVDtfOfZbHVEGFZ87eBjDwpaqaS0H
+ijeN4oyTjba3UWQ21/beYR86dqYQ0VTYRypSrH1khgoftmYdAOT0r4Nvlkb928kzsA/iXMmCRmRFmeiN
+L+1D1vLODOTuikz39/mc7VVv/Itn+kpbXLVGoDkV/CediD0Kqd4bNxZr49HNj1rbzJVF4DfPlvkJuhoN
+D5CAxTH2f/TCdX9uv3Pu5V8B743cbvTPT6c3A4PPlU/X3tEvUEsHCJx9yzfFAgAA8w4AAFBLAQIUABQA
+CAgIAAAAIQCcfcs3xQIAAPMOAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYA
+AAAAAQABAD8AAAAEAwAAAAA=
+------=_contents/sirius.test/mapping.ecore-9c35a56d-cca7-38f8-9d53-eea1f2055dd2--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/Initial Workbench.ctx b/mapping/tests/org.eclipse.intent.product.tests/Initial Workbench.ctx
new file mode 100644
index 0000000..fe1a042
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/Initial Workbench.ctx
@@ -0,0 +1,23 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workbench
+Element-Name: Initial Workbench
+Element-Type: context
+Element-Version: 2.0
+Id: _k2NaAHwYEeaC-KGN0DI6Vw
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 8/25/17 2:22 PM
+
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVkk9PAjEQxe98iqZ3
+ZpWDMZtdiEGjRCFGEtSTqbvjMmHbbtpZFvz0lr9CIkZvzfT93ryZNuktdCnm6DxZk8pzOJMCTWZzMkUq
+a/5oX8pet5VYVwBmJVUewWUVM/gMjXJk42frZu+BmfatYVywWGiK946dlWPoYXwc6qmcMldxFDVNA1YX
+EHyjl+FgJzndZk/urlfkWhJpm2MZ7YSBtw6lMEpjKgeGmFQp9iGloDyVb7POSF3dNa83qPrt+9vR2fXg
+YtLIbkuIZE7Y+O5hFL0slwZym3mgMKNh0KqqwoqAcoSaYIXAcFObhHMSbUy+7bCGdc7GEaMDj1oZpuzI
+YLwt/uxwGKgKlKuDViM82BMtD4FtCw9P6G3tMhypORWKrfud+9vk42XYrLOGPhWHV39UJTLjUaok+scX
+6ra+AFBLBwgkR7KPPQEAAJgCAABQSwECFAAUAAgICAAAACEAJEeyjz0BAACYAgAACAAJAAAAAAAAAAAA
+AAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAfAEAAAAA
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/Initial Workspace.ctx b/mapping/tests/org.eclipse.intent.product.tests/Initial Workspace.ctx
new file mode 100644
index 0000000..2fe00fb
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/Initial Workspace.ctx
@@ -0,0 +1,231 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workspace
+Element-Name: Initial Workspace
+Element-Type: context
+Element-Version: 2.0
+Id: _a10TIHwYEeaC-KGN0DI6Vw
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 11/4/16 3:46 PM
+
+------=_contents/test/shakespeare.owl-def6b3c9-856c-3828-9c1b-6b86a57b7676
+Content-Type: q7/binary
+Entry-Name: contents/test/shakespeare.owl
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADVWV1T4jAUfd8Z/0MX
+nzGIDzt2EMf1Y2REcVZddx8DvdCuIekkwcK/3ySUlpSCCIEZecL2fpx7c25yIo3z8ZB478BFxOhZ5fio
+VjlvHnxr8KDv/7q6OfjmqY8yocJXj84qoZSxj1CSJEfJyRHjA3R8enqKanVUr1eVRVVMqMTjKhWHlXnn
+sQjKnOu12jH6c99+6oUwxLaLiiaW+NSQcjPZSvxYQpa41VHtB1KvbfsBMNue8beIDhiVjLBBJKRxvx7j
+YUxAoMsQxxL4CVJ+A47jcHK0ELIbbRZS+S0LSSK5UUgR4jcQMWAOeVAV0u9iAS4iVpo6YkN98ztT14mn
+2YO7bKQgT1+nBinPWrTPjE2AJZaTGNaghpBcgUtb0rzkgCUEXhLJ0Htm8U+Oo8C7ZMOYCeANVEg2hYjm
+MeaoLwkWwsBpXZ1VHgmeZJg1BX2Cu0C2g6uDNlAebQ6Pyb4CTA92gaYHG8FRHWXUPR4TdhNAFyMZMm4D
+EqOuMer0jRkHwUa8p1AdpvCRa/xTFOvh73T/QU8+chYDl9agbL1dDDHnEQR2NwI2xBHdVydSCAutmKXg
+mA5gJZh0SK0ureyepoEA2SrQsjyTGSfnVav0XrTI3w+WQO8zW9SccCZhvZon7ks22T9ZcTqsG9bsakpI
+9A5BkS37nRIDYRVjPiTvHrtnq5wYc9npr9W83cyaBuCx/hdsXSTWZN1uGheJHTFOCVNfbzLZznQLlE9+
+z/wWXrfZO4i27ioXbSZkwbAHTruuHlMKpCUIpoHI+q+M/CmX0yc7A/ByV8lSuFtOs6QvdyXrqZcqq2RW
+LirUWzTZUe3XdKDbXtL1AtVcdNn5xKToS3RdWfPMWZELU0W6WyxDnMzdJtRB5KcKyWbd9GTMnJ/yC5bF
+HW1qDt65h6UDiIcEZNaQnBNF5zxicfSXDOkngVyIv2zUjt6g9Tk0H4TtyBAIYS5DvkZUsUo8YwIuw94p
+OrXVOlYsO7fbgOGqTuQRlal0R8gr0ejclfccwjMMYyjyY8uoCZC+DB+iQeg07j1gMeJww3j6zWlw3OuC
+DBcWWhua60nhxc723Kcek/ObrpVyLxuwldEx0fWnOStxKdfz9Zw/Be03ZYvifCxTVjgZSpfKYe6EWYLN
+HFbpXamU+q5pKzmWfcYXeOt8TbJMK+hjBkULdtdjMlNEqJwGFlcbqHwNlp/alvLOA0/lRaYFF2WIu/+E
+KdnjhanuWSacjFLapexUYh86/XtM9yk89ySpX5VCKbvGfPW6HhhXqo7TFod9XxnsCg1r9U9f6rv663u1
+6q3+scGrVpXpf1BLBwi0YfcY1wMAAEgbAABQSwECFAAUAAgICAAAACEAtGH3GNcDAABIGwAACAAJAAAA
+AAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAFgQAAAAA
+------=_contents/test/shakespeare.owl-def6b3c9-856c-3828-9c1b-6b86a57b7676--
+------=_contents/test/.project-692291b7-4dfa-3e9e-9272-95fc5cc5f39a
+Content-Type: q7/binary
+Entry-Name: contents/test/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbUrSS0usdEH
+M4FCyfm5ual5JXY2+jAWUBCquxjE1kfmJJVm5qQEF6Qmg2VQeHmJJaVFqRAtcDZcN4pDAFBLBwj6AdxA
+fQAAAMUAAABQSwECFAAUAAgICAAAACEA+gHcQH0AAADFAAAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRl
+bnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAvAAAAAAA
+------=_contents/test/.project-692291b7-4dfa-3e9e-9272-95fc5cc5f39a--
+------=_contents/test/test2.txt-cebb77e3-fd72-3380-b017-2115eb6f1db7
+Content-Type: q7/binary
+Entry-Name: contents/test/test2.txt
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABLVEhSSFZIUUhVSAMA
+UEsHCEn0WDANAAAACwAAAFBLAQIUABQACAgIAAAAIQBJ9FgwDQAAAAsAAAAIAAkAAAAAAAAAAAAAAAAA
+AAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABMAAAAAAA=
+------=_contents/test/test2.txt-cebb77e3-fd72-3380-b017-2115eb6f1db7--
+------=_contents/test/base.mapping-277db951-19e9-3577-b267-b1a69cb98fe1
+Content-Type: q7/binary
+Entry-Name: contents/test/base.mapping
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADFWNFumzAUfc9XWEza
+WzE2SdexJN32UGlSpk5rK+2VwU2CBgZhZ7C/360LK7RkuALSPFjk+lzfc67FsZPlZZnE5DfkMkrFymK2
+YxEQQRpGYrey7m6vzi6sy/VsmfhZhiHvsy9hRvBTJpH3L41jWhWNhfRwbmXtlco8SouisNNkZ6f5jv74
++qUFk21Y4WoUdxyG0M1NsIfEP4uEVL4IoJkZhdDKTNIQ4iKPFOQ2HGhFliKsmVWFDTIfsoSfYBkFUllr
+DCyDVCgQSupJXFRGnvqTIQTreLdQqqsohk0a+AqbYlWo7SGOv/lqv7Lo/Up6YLYqVQ1QmIiNf/um/PSB
+69HV41yPCz2eawLPKTRJ1Dt0T+QpCUKwh7m63m4lYDHnMQ4irKOsKoJlELwDtYnEr8dKhIQggzzKlN5y
+qzHxAEeF9GNN0GaNZ6cJziFLcyU1unpGAK0E0jppVMG8U7DbJ7hPF5uY9ryT9mIobT4x7fNO2u+G0nYn
+pn3RSfv9UNrziWmzI29z7+vcR3zRTfzJt9FMkT83RZ/8JAEJCZDtcANMD3kAugdtyU77udGrpm+N4Z9d
+Decvsckp/MakLcysLSO6LJ/YZU1UczPVI5o0n9ikTVS7ZqpH9Hg+scebqJ6bqR7xiOATHxEmqhdmqkc9
+YfjrnTDuK1y7j20DG+/UoSchOfAMOA3JgZZ9GpIDHfY0JAca4mlIDvYv2mE31WWr/Wv3uw6yep0Y673g
+Fkn7FubHF/6vUeDCS9r8a2Y9+wtQSwcI6NCZdj0CAADREQAAUEsBAhQAFAAICAgAAAAhAOjQmXY9AgAA
+0REAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAHwCAAAA
+AA==
+------=_contents/test/base.mapping-277db951-19e9-3577-b267-b1a69cb98fe1--
+------=_contents/test/doc/test.doc-215f6e14-c7c2-3ae8-a31b-e4ba5707f991
+Content-Type: q7/binary
+Entry-Name: contents/test/doc/test.doc
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtmV1MXEUUx88su8uC
+FJYFaaUot8tKkZZtAangJyyUbpfPlirWSs0CS0HZXeQj0rfGj8QHjRgfTExTY4KJiYnB6qPRvuhDo9GY
+1LTGh5r40ugDGh9sIqz/M3MvLEuBuyspre4hP+7c2TvnnJk5M3dm7nff5l997+PinylBHqIMWoxlkT0u
+T4A848ZJZNHzFmOxmJEdS8ttJQv6lfvQiv6zAe7zTOAAWSAb3AFywDaQq/e5U7+m5faVoxTF3yRpdJAi
+uI7T6cSpYF0pQsTE6zNTZtHkc2YlbT91+8b8nez45/cAj/984AIFoBDcSRwTRNvBDnAXKAY7QQm4W7dX
+iqsGdgG3nufB9V5QDnaDCnAfqAR7wF5QBbxgH9gPqkENqAX3gzpwADwA6kEDeJD4fUb0MHgEPAoeA42g
+CfhAM2gBB0ErOAT84DAIgDbQDjpAJ+gC3eAIOAp6wDHwOHgC9IInwXHwFDih17GPbq05U8CbjGwVQ/Ys
+i4yJCyo0Wrn/OkYGxqMT0aFJrTc6PljVEn1uKhyKTMqY6OjhvJbogIwETntxI3/31tOfDeefXyMA40So
+ZUTK4kLUZUPLCUSkoQjt7fw9ZpHtbkdvRTGrhSlIo6RiutojKj2ilnyV1BXIoCOgObCDwv4c6wRo8wvq
+Dlgp4rc6JsHJgI2C+P0Zf4N1XV98tFgqyCI4nmyIhhE5n4aIR00eFczOU+HsNNk9AiOjK2CHYTsMl0hj
+ykgJYtPnZB0co7mISvZ9jCYwVgahSYPGEE3L/zz+nOQa1ISAboy+2deIx9I+pxAu4ZY+tMOHCf1pC8Yq
+28lE3Lthwy0aicd5O12jU3giIi2wry7om5a+5sBXl2ycAw7BRbkd+hyiXNa0RpRLK4f1stPyrkCWUpZY
+eFRb1aQho4y7wO9QM42RNlaZHv1qccZldKtek/8OFc0IM2HBjR+GS9xwnbi+gCu/6jgMIvi9DnrMxF0P
+Xodh6kdJDp7acnPWm9BpI3rAjcCSyN+4DHdVPzwdR7lJpKPwU4P9kNQ1ZKJOx+2wZMK7TvnCj0rtXJL1
+NWOSa5M5zVJrCCExBf+DsI5J1KTmVhnuoSW9aD+0mHBuWHDN2ht64lu0wZOqNz4EonC8jnntS3T+sFTS
+Wth2qg1wWmnlOCuTd3xvpZdkp6/MNexn2uRbTEZ4WlIX1/7N15kwvjWTnZS0J2eSLRAvizEOptVTEQfY
+1Vfe/eN617DzwzcdtGf3J1fYM4dQazD+fYxUJXnezQAvk6riDKnZ9SypmfUDUuu5T0mF8QVS67qvSa3t
+LpNa3/1Cao03T8rG37r+awtE99By0G9mmvXz+q2RM3786x0y0rpw2tXQV1ZW9718X5386fJnnDZ+/+19
+ITq0LFR73vWFylIdqL9Z8A4NRkeDkfobdGuWtYg8ucv3ntWPrJBYLE+2q9DT9rh0orwq/5/T/TxnYr7i
+Zwo3fmxJzgvVW5/rV0N+xb3vX62plFw09apbLVXoi/44+z8ItStIy39TLibE380SC13ZAqtpSUtabh05
+RsNyj6vJbYO6Dq/YKWvYPI3LbZKGjYBGXuxVozQg80ewoQghZ9tWVyMtqYq+zkvL/1KE0f8LW+1JWm62
+yHMYN5XOvejV5r5q2jUXsbpB2UzE6gG13UQVNZS7/n5+rf0351gufXPprHen8623sf/ee/0j/j5gS8h7
+mtR3DuNQyEnLe+a18m8l2czvf1zPxG8INyrDZxVntqu0kGfcYRqjLuqnZ5P234VWZYt87iFPl02KYUnA
+7qg8905NsmGd7WYkYZ/9NXb61VjBBFHzVH3I1e0bYqYM+/qGfuRuox6aQvuH5VHvaXmWP7T0xcQ4il1b
+KmDf+GZo1j6f+9Trpwu90tYgtcg12ZQ84OY4NCvFKdSfj3GNcx/bKsvJtUd9CvZ5zjBfw40lWfvx33//
+AVBLBwjk3NGhrgUAAAAkAABQSwECFAAUAAgICAAAACEA5NzRoa4FAAAAJAAACAAJAAAAAAAAAAAAAAAA
+AAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAA7QUAAAAA
+------=_contents/test/doc/test.doc-215f6e14-c7c2-3ae8-a31b-e4ba5707f991--
+------=_contents/test/doc/test.docx-77ab94b7-7f09-3396-8f5a-e14363dc6ffb
+Content-Type: q7/binary
+Entry-Name: contents/test/doc/test.docx
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNVwk4lG3bnrE0lpF9
+J2vGZ99CGBkhM2TJmn2XfQ1jyPIie5F9HWTwChFDUxGTGLJXthJZUmQXsv3j/Y73/9Xb3/fdz3E/x/Ec
+z3E+z32d93md13Ub6JCSMQEoKCgAFlEOcMCpQU2ctv7OngGSEif3mvSrOqQwcNzqIfPllfeeovHd/d/4
+1X34t0Exucsrg/0gWbea4ykYFc4gEd31FLm5xjXs1X+E1itISoLh/3SD+UkN4aTcQyahkjx2I5I4M9W7
+rxG5ViJ/TsWU2jPA78R36i5XyUn7Vebzuehf61Jx4H9Ukeb3HruTEyGDLpZ+89a92/IJSdO+9oGCfChL
+g2CMkIsNxqrukaIEsx7SaciuDFnlt+culwkOsb5xiCpRBPevGcldGYDVItevK5pjmzOFyy21go/d5HzC
+ep92eQ7ZfEzqK8WPc24VG+iAKBYHgQLjxHihJACAwf/LCD1xBvv4O0k6+Tje9HL2DpQI8fIszxjwnpQC
+v1xFUcF2XnyzYCo0rMi2w58VJRFEATqzvOzThQ0CC5Y/QzqPcSxs0dvTwhuQo900+cOtMPm8QsFQcuz0
+uNK87gSDiHN+9LFKmDXUfwE+hrjxsGGa9fPe5sKIUbGZQZCWhUOUXfhZ8tXBhVbPcvpbzsYJ0yUYE0qh
+2zjTci5WVS27dkv+bAiBrfEMxGvQXU1A2LMeHnf3a47oXgGGlhIhLry7XeN/q7TwKPPYaSuwtu28B635
+xZhroTwc9lt3RymcXXWzpgx8517Rr2S9Yk48MulpS/EE+fF9D+4ef6k0xvYkuJzMJqt15qvlzJy6h6rW
+ftzg4wSXHss/L5BE3JQIehULCTW2GJq32HUQeXKcU90M3b9kExahmxvhI4ZW/CJFAXxRqtxK+cg35guD
+WfDh+MzN8RFNnbefICXURwzVb1USqF6SEhpSgbt6SwETXBbz7J3VmclzueYpdjl2S1KRrqai4qPSkXEP
+gWyXn4m5xVi9W8af6dCT8/f9mHe4io7J7W6QrF8Kn4o7pr0TfGckiocEby3ukXh7ZWWW3fjqvvskwpAg
+1ef2jq5Fswp4wzRVjcyFPj9Vy093ezgXb9ckD7QlXOuDJvn0nY3CKLmXHJprePaY2gsrhDEKWc/OsM07
+uWnIQCuc9kK8jgAncsHkh1StAQEAIPnv5EL7t1wCApGezgEnYuk08dKflKI7arWl30PBqwaNTcheyJh8
+icNRjtH63tNxn2ne40LsbSs/SThzlc5g8Ft5QvFm4SqyKAkVeqvOyR90NnaIXVmV4xFZoD2iZCn5EJd7
+ByMGG7hJKB+6Wy/Oq3xpPxCXW/IB8Txm40K/PLslysfVLbGTg6lLwBFm9EBGz09fx6yCcxaxpAuMN7Yh
+BMqci9BjZs276ZyqHxqbIVwAM9or66h8bZwpzJtVujXrF2bUIIpOHJUrbXnitRz/5fpKJ0J7prmePavS
+AVvZ5Bd2PkF8G98f7+GWWGewrhUK1tkZaeoNYuYJKIMK5bN3qccnWycyK4r4BPrT6Bknqy9RpwzERJa1
+qbXLYuWmBEetHNMj9ousPhGYX6fMSSyLSDkGgOg6xGi6PpK2B1u5ePoP811ccUxfwuFFFPJsodANe2hP
+NtAiIf27ZdKQAzvDSJY1bmB8pa7DUQDxiAAnd52TGMcS7jRXQC/OCg7N3PKAB/Ry13E3Lw3qg8V7eKnG
+IWXseaKLLY2+c7uoc+J6tiuLEShTNjerK1EKUweWomWVdcxHWiEg6PvgG8uunfQ9PKHd9DQ7rfiAWbGs
+acpo10Mc+UOdiXoBHyQf/yjz4Cg1LNpvMcXsHJe16T1pVHVVe7S9/mQ3KCxuBLiKWa2fTgjc1wuTnpd/
+XDKY5N0ocphpQkVjdrXl00cwVnsxqOdc1ZHG5j2+PtrzQf/yjTRUAxG2riwOHcrIAfblud+50uCWFfIC
+OF0+ac6AznBzenAf0tqkT/dqDbF9lJXlwRzQyH4o1q3f71t/E/yqREZc+/5+EUJ5Cy8XemfyPWfRIfBE
+qv2G0fHeRFfbpfidVLn+luq/Df+0v/3b/NOuUnVI0cXuFPG/msKY0KVhvDV8RbcB0oXYdnlKgnAoijTR
+Qvhjx/xB+Kq0pK3tfqr1IMgrJVIMHlViiB3G0PsKN4+cf5AEb+3Su2ZFWRMU1cnJSNao4d2JNBD/JiP4
+tiTh3sR3m2ti4fhCY8g4b3H55+h9/TNMpEKTJiQHtT2RmQq32x56WXvEclb3Qzk40qajvLnjtDNaYQxr
+lfe6gaoSl/YrwrxoMjfGZibbq7f7XhzUXVIrzZn/xFpUWBEL7wfNsASf0LEnKfW8kxgs439n9AHOgYFu
+3q5/5a5mqs7ZDimwxk4B/8Y5BvO1Ku0nsyTPgeoe6GsOV+pLnn+mFM0qU5AN3V/JLEU6pKUR8P4zz3m3
+VZIDN31VuRcspUqj4uhyB/Gc5LggbDEH7M0EgxGPdh4Bb31B4S0ioovJqZ29qkE0m6nxpf8jxmw+1hXD
++3pGjaKf3srHpqFrsnkWnDBCjp/TGr884B7jYVvjOGeoP+Nv3N+0AR7Cv/x6a+zIekLyJMYi5aeK5cQI
+BgG/i5Hh7xhdfLwDje0dPJ1PgqwxgOnhpeieblL1Bn9pBMWUYpgZPsaEoueBlq4j5g2jaaOCWzsteqJ8
+3SXoqeXC8dzx67WXCpmhZ+SLRC4WM1/jdbPlVDLeCN/xPxYmv4LmeAB5MEd/vdYsuLfEU0WTxa2whUtk
+/OVYJqLeewg4EHY74+FLEEg6HA+jUX1tvcaRew/3yN2QibYnig+ZRTnavYuR5ih+duSr7cdEeYMPQ91y
+gbv3zcVCNgRJtvpq8mUWTq4X+cFquWhLimSIHi02XZPPZIrUdXldhia3KKpf473NApSMFJUE0U5xadNt
+vtK8EzTs4edRV6GRi81TSQLhD/SrzR513e1lsQRjCLV2s0IlrIXF4dVVTpuW2WtQdjp9ck4UTrW/OFHp
+Usg2+Qm57V3jFNxE6zch/R25dMRJTCIDfx/fAEl7X98TagvT4B5EamOJDZTWHEdvEIv6XWbcoBE6Ctcr
+Xjn8wrSe5T5c+yj8DaZFdefb1NOZ/KF4r37MgB5daRBWyNnmLvhBIGISKyTZNxuo2RDfITKkTH3hsZog
+5y18UDuSopLPJcHO8aqSRhtGrudscjwy0QtxVoItihCXhcPDdEJ8N248569JdIDPJNsxV1bxRM4hrIrX
+2gzm53ZurTc93n0x+wA4i4p6zn54L+XykMIEoLh8w26sZudZFsmI5q5pBFnId3YYKzJ3YNO94c23kKm2
+uqz9eRXOC8sjjKowfnFqI92VVJzZSOKQdOpXDeq07GQbclQATLPVYUtkLBwSfTfn6A+zKqWGssWrjjvL
+sbqR4w7v5KiG7/NO8IbtKHv7EsAVC7Yn/Foq1UL5ifwC/mOC/i+/jj7+f2k35Zq1focUU/iOmVj4B5y6
+2khyWuUMnKGMLcWn6Vnyl4kLXvZrq1/l5Q2Qa1+LUHoDh+7yH6plJqJuNgzLaqQzaaKR5+9LuCw6N8X7
+GMypjERnZsaxK0Ve3jwQmY3b6OkoqwGbS7Zrtmsr9/SBvZ4qMDl2KaBzdKLVQf7W1zvDIrHP49YlTQHn
+yj8zia7pSg34OrLlt9Nzi5PziPW9zaqJmmZDGKCf4QX5du9v22U+2UU792cgvv8RlTRcxPUaBQHZW4/C
+od7lJRHRH7JoB75W1r/u+1MRraIsr/6YfAGm0R4ZNB+6cDMsuM0CHZaR7qarXZBqOpeHMVJ6jBxYq9tJ
+sWc1k/cZY6SoB3TVyKm+eygQIUgikSuBtZ/Zm3iZVGEqcz/PKOvVnrPid4voFijZHerHrQI3Xx2iBNOH
+Cbue96fQNZ72kPy27HvYRUB+7ftvs4wtq1ocavHPts4HflY92OTZ9DnZoOpl90sOxA2a/O0GMRKn5WWi
+sxCriK0x0tc5wPpki55lXNIn5kDnzq3EblEEFxudOlyZV1r9tpSAoy1D0u6dMEzjh6IAS36ySvrGh+YN
+YauHU+/htSwesk6iFJWFNeNIw4a/0qDWhbbP61Yny+b1N54qdlpNLB5vuxbrLl4Z/4PeXJE2y8aCNTk+
+kIZ7R1016eyu5nUb/8+eZJybOSpjT3EQq0GqhnKKdT22SvYIsBSv5DChIb+QV9pD6ClPI1PaxnqmSfGN
+vaKMjEmO5aYuWRG7A9RwNXWiKMQWzJdovCtQ5GEpbv8aosBTQKaRl8OeuN5J4QUJsHsHjqzQr98sfLGK
+OfJjO8YCY9j+tWS71RpclDzI0EivT1qgir8RLkxGyG5HzpEpK5E8gFepzWfgL8d/X/t+BRs4w3rYtqpS
+1cbgyvzhiHVT4S+v4eeAixCptiE7oRpIwgT4P7JPn1ioAT+PU+e2n4Gne1f6H0AMwF8cb36Gn+4naH+A
+w0j/0e7+DD5dfbl+AC+T/74B+flLp2vcj1Hsn/lF7f4ZftrFGX6AfwD9qiz+jD/tUnQ/4FUo/+n8P6NP
+p9CPiy+g+oWv/WPxp2TB+AMcCv5l1hnokJ85eU1JvFSI/6ykOXn6H1BLBwiXPZFyVQ0AAPoPAABQSwEC
+FAAUAAgICAAAACEAlz2RclUNAAD6DwAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQ
+SwUGAAAAAAEAAQA/AAAAlA0AAAAA
+------=_contents/test/doc/test.docx-77ab94b7-7f09-3396-8f5a-e14363dc6ffb--
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVksFPwyAUxu/7Kwj3
+wTYTY5q2O0yjjdGTcXoySN82XAsEntI/XzrbuoN1envw/fjgvY902dQV+QDnldEZnbMZJaClKZXeZvQd
+N9MLuswnqXFbBrJS1gNz0iIyiQ0Lxu29FRKSdV+tjEZokDS1SgbbRWsbL9I+ifsZ3SHahPMQAjP1lkVz
+/nRX9MiJu4bjPdMeP3A8cnzgKNGijnShFSpRkfW3oMqMvoj57KG4Cc9XIFbT2+v72WVx/hhoPiEklW0X
+Gts6rqwzbyDRd4YIHumXFMWNquBYOWPYIOWj+uKEPv9FZ91LRmS/E3vwFoSLQwnVCFULa2O6ccTGwR+c
+xp/zKuL0O7tjxFRlTL6DSiOHYf3QLmt1fgJojtx5Z99lw/twDrnxIbiU//fL5pNPUEsHCE2ItSctAQAA
+DQMAAFBLAQIUABQACAgIAAAAIQBNiLUnLQEAAA0DAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVU
+BQABAAAAAFBLBQYAAAAAAQABAD8AAABsAQAAAAA=
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
+------=_contents/test/test3.txt-8512f33f-ed6b-3b9d-9f27-a3cb5ab4bfd1
+Content-Type: q7/binary
+Entry-Name: contents/test/test3.txt
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABLVEhSSFZIUUhVSAMA
+UEsHCEn0WDANAAAACwAAAFBLAQIUABQACAgIAAAAIQBJ9FgwDQAAAAsAAAAIAAkAAAAAAAAAAAAAAAAA
+AAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABMAAAAAAA=
+------=_contents/test/test3.txt-8512f33f-ed6b-3b9d-9f27-a3cb5ab4bfd1--
+------=_contents/test/test1.txt-bb54de40-f98f-397a-89a8-acea2f868ef8
+Content-Type: q7/binary
+Entry-Name: contents/test/test1.txt
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAAz5DLiMuYy4TLlMgMA
+UEsHCIZ5vxANAAAACwAAAFBLAQIUABQACAgIAAAAIQCGeb8QDQAAAAsAAAAIAAkAAAAAAAAAAAAAAAAA
+AAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABMAAAAAAA=
+------=_contents/test/test1.txt-bb54de40-f98f-397a-89a8-acea2f868ef8--
+------=_contents/test/mapping.ecore-c5cb9bf2-0abf-3474-beed-b634a7472fb2
+Content-Type: q7/binary
+Entry-Name: contents/test/mapping.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtV0lz2jAUvudXeNxz
+UJJeOgyQaVKYYSbbBJLpVYhnokSWPJIcaH99n2RsbJyExXQ51Aew5bd8+t6i5875IhbBK2jDleyGp62T
+MADJ1JTLWTd8GA+Ov4TnvaMOMKWh3b+j7IXOIFjEvF0onTklNCNNG9e74ZO1SZuQ+XzeUvGspfSMfL8e
+FiKmKjL/7CXOTk5OUexqxJ4gpsdcGkslg/AowCvT9BgqusAETwx4AxBHzsgZ6TuxMJA0RuGYJgluBR/N
+w/2wohyrKYi55hZ0C1JSkrzTEPHFSrmHIDpwKagxPOK47QA30bY/EnSwJMa/zJ1eKUYtUhMGdGKspsx2
+Q6tTBAWjNAE9Rk3TDT8RMuxfDy6ogb6AGKQNcClXvlTSUi5Be/cOwAhtMJtqKgZA8R/ewHEPEWhwxC2x
+GJVqBldcviC8NEHvFyqV0254fJpx6y4YexvOOwoizNskUQaZKdaIpXoGNiSNwGRGdgTDMiIcPwWNdXzZ
+PhviYwXnZRS1gKygVnGsCxJnD2Gb3WB9tVbzSWpXtOHbMiJ3k5nskHJa7pynWbA/zsmd0q8GfQqGaZ5k
+1SDUvIh4PeBLE9+opW4h2KrOEW8fgbkqbRb6Zf5swFiKci0Ll+uknOSHKJdDYCp3gd+Vi3tvU0OitN2q
+I9x70fVtZqtEuHQ+QFm45P8DrbpGrftdD/a/URx7RKjetQ8QmfXWVDtfOfZbHVEGFZ87eBjDwpaqaS0H
+ijeN4oyTjba3UWQ21/beYR86dqYQ0VTYRypSrH1khgoftmYdAOT0r4Nvlkb928kzsA/iXMmCRmRFmeiN
+L+1D1vLODOTuikz39/mc7VVv/Itn+kpbXLVGoDkV/CediD0Kqd4bNxZr49HNj1rbzJVF4DfPlvkJuhoN
+D5CAxTH2f/TCdX9uv3Pu5V8B743cbvTPT6c3A4PPlU/X3tEvUEsHCJx9yzfFAgAA8w4AAFBLAQIUABQA
+CAgIAAAAIQCcfcs3xQIAAPMOAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYA
+AAAAAQABAD8AAAAEAwAAAAA=
+------=_contents/test/mapping.ecore-c5cb9bf2-0abf-3474-beed-b634a7472fb2--
+------=_contents/test/shakespeare.txt-2dd14dde-ed7f-3a28-8036-9f549b5687c7
+Content-Type: q7/binary
+Entry-Name: contents/test/shakespeare.txt
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABtUk1v2zAMvedX8LYN
+2A7rfoGRBqs7Jysaw8GOjM1EQmUxoOQG/vej5CV1l97I98T3+KGtwRcKJ0Ih9BAFj9SNC/gGhY/sR0Df
+wdIRn1C5hC9ZLDv0Q0jZA/aOYooeB2eHAEukgAKfTw7HLwn/Zf0RKtVPyRrbPUWTwt/RkHOcwmfuibNT
+EpnkatuzBz5Aoe98mKCoBoXvhL1tJ/9a2DpFc5tCIdgOF4vtu6Falf83k3OfAuzUF2qDEVa+m9JMBvjD
+A1T2haCcejCk46bi1MhKhCWbLsd+T856SknFr6SiFe55kBRwyMVrwjAIwYHlEl801yStQR+TakM6y5yR
+EXb2lUIid1Yb5Ly5Ata2C0Pfk8DGHk1Uq3sdr89eQ2ug6BgKbSLChqPRrSfmicS2jsJXeBLrW0qq9fjW
+So19uo+iumbYGqHzlaL+RNMs9ZncIZrJ+MqfGX6Sj4568tMoehic0xveO0o/IOiTC6FDRUqbqtHR/7cy
+NkSW8fK2sgfKt70nVH81yd/pkU2WW3VnlA7Kspx9uGery83oDHwgr4stG90DSoTvH2B3b1hzU9mUt5VX
+7O4D7Mf7Vm57aWbgX1BLBwgEz4PrvgEAAIUDAABQSwECFAAUAAgICAAAACEABM+D674BAACFAwAACAAJ
+AAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAA/QEAAAAA
+------=_contents/test/shakespeare.txt-2dd14dde-ed7f-3a28-8036-9f549b5687c7--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/pom.xml b/mapping/tests/org.eclipse.intent.product.tests/pom.xml
new file mode 100644
index 0000000..1f0f1cc
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (C) 2015, Obeo
+
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+-->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.intent</groupId>
+    <artifactId>org.eclipse.intent-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath>../..</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.intent.product.tests</artifactId>
+  <version>0.10.0-SNAPSHOT</version>
+  <name>Intent Product Tests</name>
+
+  <packaging>rcpttTest</packaging>
+
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>rcptt-releases</id>
+      <name>RCPTT Maven repository</name>
+      <url>https://repo.eclipse.org/content/repositories/rcptt-releases/</url>
+    </pluginRepository>
+    <pluginRepository>
+      <id>rcptt-snapshots</id>
+      <name>RCPTT Maven Snapshots repository</name>
+      <snapshots>
+        <updatePolicy>always</updatePolicy>
+      </snapshots>
+      <url>https://repo.eclipse.org/content/repositories/rcptt-snapshots/</url>
+    </pluginRepository>
+  </pluginRepositories> 
+
+  <properties>
+    <rcptt-maven-version>2.2.0-SNAPSHOT</rcptt-maven-version>
+  </properties> 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.rcptt</groupId>
+        <artifactId>rcptt-maven-plugin</artifactId>
+        <version>${rcptt-maven-version}</version>
+        <extensions>true</extensions>
+        <configuration>
+          <aut>
+            <groupId>org.eclipse.intent</groupId>
+            <artifactId>org.eclipse.intent.product</artifactId>
+            <version>0.10.0-SNAPSHOT</version>
+            <injections>
+              <injection>
+                <site>${eclipse-rcptt-inject-site}</site>
+                <features>
+                   <feature>org.eclipse.sirius.runtime.feature.group</feature>
+                   <feature>org.eclipse.sirius.runtime.ide.ui.feature.group</feature>
+                   <feature>org.eclipse.emf.ecoretools.design.feature.group</feature>
+                </features>      
+              </injection>
+            </injections>
+          </aut>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/mapping/tests/org.eclipse.intent.product.tests/rcptt.properties b/mapping/tests/org.eclipse.intent.product.tests/rcptt.properties
new file mode 100644
index 0000000..bfd7a10
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/rcptt.properties
@@ -0,0 +1,9 @@
+--- RCPTT project settings ---
+Format-Version: 1.0
+Element-Name: Project Settings
+Element-Type: projectMetadata
+Element-Version: 2.0
+Id: _6BPp0HwXEeaC-KGN0DI6Vw
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 2/14/17 5:02 PM
+
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add Report to Link.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add Report to Link.test
new file mode 100644
index 0000000..325b126
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add Report to Link.test
@@ -0,0 +1,30 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Add Report to Link
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _bIJXwLMXEeargc_mJ1hPzA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:47 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+get-view Mapping | get-tab-folder | get-tab-item Report | click
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\""
+    get-menu "Synchronize/Add Report" | click
+}
+with [get-window -class MultiLineTextDialog] {
+    get-editbox | set-text "New test report"
+    get-button OK | click
+}
+with [get-view Mapping | get-tree] {
+    get-item "\\/test\\/test1.txt/\"1\"/\"1\"/New test report" | get-property caption | equals "New test report" | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add to synchronization palette from selection.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add to synchronization palette from selection.test
new file mode 100644
index 0000000..edb66b2
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Add to synchronization palette from selection.test
@@ -0,0 +1,36 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Add to synchronization palette from selection
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _VwHNoKG0Eea__8ecebJRnQ
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:47 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+with [get-view "Synchronization Palette" | get-tree] {
+    get-item c | get-property caption | equals c | verify-true
+    get-item c | get-property checked | equals false | verify-true
+}
+get-editor "test2.txt" | get-text-viewer | set-caret-pos 1 12
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Link description.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Link description.test
new file mode 100644
index 0000000..a371c9d
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Link description.test
@@ -0,0 +1,33 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Change Link description
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _F1AjkLMSEeargc_mJ1hPzA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+get-view Mapping | get-tab-folder | get-tab-item Report | click
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\""
+    get-menu "Synchronize/Describe" | click
+}
+with [get-window -class MultiLineTextDialog] {
+    get-editbox | set-text "New description"
+    get-button OK | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\""
+    get-menu "Synchronize/Describe" | click
+}
+get-window -class MultiLineTextDialog | get-editbox | get-property text | equals "New description" | verify-true
+get-window -class MultiLineTextDialog | get-button Cancel | click
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Location with Link.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Location with Link.test
new file mode 100644
index 0000000..74681c8
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Location with Link.test
@@ -0,0 +1,74 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Change Location with Link
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _iPQ-oLFaEealg-LeUS-zSA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:48 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view Navigator | get-tree] {
+    select "test/shakespeare.txt" | click -default
+    select "test/shakespeare.txt" | double-click
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 14 1
+    set-caret-pos 14 2
+    select-range 14 1 14 21
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+with [get-view "Synchronization Palette" | get-tree] {
+    get-item "Shakespearean comedy" | check
+    select "Shakespearean comedy"
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 20 5
+    select-range 20 4 20 23
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    get-menu "Synchronize/Link location as master source" | click
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 20 14
+    select-range 20 12 20 15
+    type-text FOR
+    key-type "M1+s"
+}
+get-view Mapping | get-tab-folder | get-tab-item Report | click
+with [get-view Mapping | get-tree] {
+    get-item "\\/test\\/shakespeare.txt/\"Measure FOR Measure\"/\"Measure FOR Measure\"" | get-property "columns[0]" | equals "\"Measure FOR Measure\"" 
+        | verify-true
+    get-item "\\/test\\/shakespeare.txt/\"Measure FOR Measure\"/\"Measure FOR Measure\"" | get-property "columns[1]" 
+        | equals "\"Shakespearean comedy\"" | verify-true
+    get-item "\\/test\\/shakespeare.txt/\"Measure FOR Measure\"/\"Measure FOR Measure\"/\"Measure for Measure\" at \\(345, 364\\) has been changed to \"Measure FOR Measure\" at \\(345, 364\\)." 
+        | get-property caption | equals "\"Measure for Measure\" at (345, 364) has been changed to \"Measure FOR Measure\" at (345, 364)." | verify-true
+}
+get-view Mapping | get-tab-folder | get-tab-item Document | click
+with [get-view Mapping] {
+    with [get-tree] {
+        get-item "\"Measure FOR Measure\"/\"Measure FOR Measure\"" | get-property "columns[0]" 
+            | equals "\"Measure FOR Measure\"" | verify-true
+        get-item "\"Measure FOR Measure\"/\"Measure FOR Measure\"" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+    with [get-tree -after [get-label "Outgoing Links"]] {
+        get-item "\"Shakespearean comedy\"/\"Measure FOR Measure\"" | get-property "columns[0]" 
+            | equals "\"Measure FOR Measure\"" | verify-true
+        get-item "\"Shakespearean comedy\"/\"Measure FOR Measure\"" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Report description.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Report description.test
new file mode 100644
index 0000000..01f6839
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Change Report description.test
@@ -0,0 +1,31 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Change Report description
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _F9QLgLMQEeargc_mJ1hPzA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:48 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+get-view Mapping | get-tab-folder | get-tab-item Report | click
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\"/Report1"
+    get-menu "Synchronize/Describe" | click
+}
+with [get-window -class MultiLineTextDialog] {
+    get-editbox | set-text "Changed report"
+    get-button OK | click
+}
+with [get-view Mapping | get-tree] {
+    get-item  "\\/test\\/test1.txt/\"1\"/\"1\"/Changed report" | get-property caption
+        | equals "Changed report" | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Create link from synchronization palette.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Create link from synchronization palette.test
new file mode 100644
index 0000000..a1e663b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Create link from synchronization palette.test
@@ -0,0 +1,59 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Create link from synchronization palette
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _018M0LDAEeaTDapXsE3cXA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view Navigator | get-tree] {
+    select "test/shakespeare.txt" | click -default
+    select "test/shakespeare.txt" | double-click
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 14 1
+    set-caret-pos 14 2
+    select-range 14 1 14 21
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+with [get-view "Synchronization Palette" | get-tree] {
+    get-item "Shakespearean comedy" | check
+    select "Shakespearean comedy"
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 20 5
+    select-range 20 4 20 23
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    get-menu "Synchronize/Link location as master source" | click
+}
+get-view Mapping | get-tab-folder | get-tab-item Document | click
+with [get-view Mapping] {
+    with [get-tree] {
+        get-item "\"Measure for Measure\"/\"Measure for Measure\"" | get-property "columns[0]" 
+            | equals "\"Measure for Measure\"" | verify-true
+        get-item "\"Measure for Measure\"/\"Measure for Measure\"" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+    with [get-tree -after [get-label "Outgoing Links"]] {
+        get-item "\"Shakespearean comedy\"/\"Measure for Measure\"" | get-property "columns[0]" 
+            | equals "\"Measure for Measure\"" | verify-true
+        get-item "\"Shakespearean comedy\"/\"Measure for Measure\"" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete Location with Link.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete Location with Link.test
new file mode 100644
index 0000000..d473f53
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete Location with Link.test
@@ -0,0 +1,74 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete Location with Link
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _oxvzcLDGEeaTDapXsE3cXA
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view Navigator | get-tree] {
+    select "test/shakespeare.txt" | click -default
+    select "test/shakespeare.txt" | double-click
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 14 1
+    set-caret-pos 14 2
+    select-range 14 1 14 21
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+with [get-view "Synchronization Palette" | get-tree] {
+    get-item "Shakespearean comedy" | check
+    select "Shakespearean comedy"
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 20 5
+    select-range 20 4 20 23
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    get-menu "Synchronize/Link location as master source" | click
+}
+with [get-editor "shakespeare.txt" | get-text-viewer] {
+    set-caret-pos 21 1
+    select-range 20 1 21 1
+    key-type BackSpace
+    key-type "M1+s"
+}
+get-view Mapping | get-tab-folder | get-tab-item Report | click
+with [get-view Mapping | get-tree] {
+    get-item "\\/test\\/shakespeare.txt/\\(deleted\\)/\\(deleted\\)" | get-property "columns[0]" | equals "(deleted)" 
+        | verify-true
+    get-item "\\/test\\/shakespeare.txt/\\(deleted\\)/\\(deleted\\)" | get-property "columns[1]" 
+        | equals "\"Shakespearean comedy\"" | verify-true
+    get-item "\\/test\\/shakespeare.txt/\\(deleted\\)/\\(deleted\\)/\"Measure for Measure\" at \\(345, 364\\) has been deleted." 
+        | get-property caption | equals "\"Measure for Measure\" at (345, 364) has been deleted." | verify-true
+}
+get-view Mapping | get-tab-folder | get-tab-item Document | click
+with [get-view Mapping] {
+    with [get-tree] {
+        get-item "\\(deleted\\)/\\(deleted\\)" | get-property "columns[0]" 
+            | equals "(deleted)" | verify-true
+        get-item "\\(deleted\\)/\\(deleted\\)" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+    with [get-tree -after [get-label "Outgoing Links"]] {
+        get-item "\"Shakespearean comedy\"/(deleted)" | get-property "columns[0]" 
+            | equals "(deleted)" | verify-true
+        get-item "\"Shakespearean comedy\"/(deleted)" | get-property "columns[1]" 
+            | equals "\"Shakespearean comedy\"" | verify-true
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Incoming Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Incoming Links.test
new file mode 100644
index 0000000..82557c8
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Incoming Links.test
@@ -0,0 +1,38 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete link from Mapping View/Document/Incoming Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _Wm76UKKYEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"2\"/\"2\""
+    get-menu "Synchronize/Delete" | click
+    get-items | foreach {
+      get-property caption | equals "\"2\"" | verify-false
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Outgoing Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Outgoing Links.test
new file mode 100644
index 0000000..dc97304
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Document_Outgoing Links.test
@@ -0,0 +1,39 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete link from Mapping View/Document/Outgoing Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _pnh2YKKYEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree -after [get-label "Outgoing Links"]] {
+    select "\\/test\\/test3.txt/\"2\"/\"b\""
+    get-menu "Synchronize/Delete" | click
+    get-items | foreach {
+      get-property caption | equals "\"2\"" | verify-false 
+      get-property caption | equals "\"b\"" | verify-false 
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Report.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Report.test
new file mode 100644
index 0000000..bf777e5
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link from Mapping View_Report.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete link from Mapping View/Report
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _ovBHwKKdEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Report | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Incoming Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Incoming Links.test
new file mode 100644
index 0000000..5cb47e9
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Incoming Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete link with report from Mapping View/Document/Incoming Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _f4lhUKKXEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Outgoing Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Outgoing Links.test
new file mode 100644
index 0000000..45cf541
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete link with report from Mapping View_Document_Outgoing Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete link with report from Mapping View/Document/Outgoing Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _s14eMKKXEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree -after [get-label "Outgoing Links"]] {
+    select "\\/test\\/test3.txt/\"1\"/\"a\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Incoming Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Incoming Links.test
new file mode 100644
index 0000000..ad89bf6
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Incoming Links.test
@@ -0,0 +1,41 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location and link from Mapping View/Document/Incoming Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _QQjR8KKWEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:49 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt"
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"2\"" "\\/test\\/test1.txt/\"2\"/\"2\""
+    get-menu "Synchronize/Delete" | click
+    get-items | foreach {
+      get-property caption | equals "\"2\"" | verify-false 
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Outgoing Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Outgoing Links.test
new file mode 100644
index 0000000..5b8d284
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location and link from Mapping View_Document_Outgoing Links.test
@@ -0,0 +1,42 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location and link from Mapping View/Document/Outgoing Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: __mO0QKKWEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt"
+}
+with [get-view Mapping | get-tree -after [get-label "Outgoing Links"]] {
+    select "\\/test\\/test3.txt/\"2\"" "\\/test\\/test3.txt/\"2\"/\"b\""
+    get-menu "Synchronize/Delete" | click
+    get-items | foreach {
+      get-property caption | equals "\"2\"" | verify-false 
+      get-property caption | equals "\"b\"" | verify-false 
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referenced Locations.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referenced Locations.test
new file mode 100644
index 0000000..cb4a2a2
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referenced Locations.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location from Mapping View/Selection/Referenced Locations
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _Iv7LYKKREea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Selection | click
+}
+with [get-view Mapping | get-tree -after [get-label "Referenced Locations"]] {
+    select "\\/test\\/test3.txt/\"3\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referencing Locations.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referencing Locations.test
new file mode 100644
index 0000000..8af6ec0
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location from Mapping View_Selection_Referencing Locations.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location from Mapping View/Selection/Referencing Locations
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _ccmKYKHNEea__8ecebJRnQ
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Selection | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"3\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Incoming Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Incoming Links.test
new file mode 100644
index 0000000..0764e68
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Incoming Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with link from Mapping View/Document/Incoming Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _M9rBYKKVEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Outgoing Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Outgoing Links.test
new file mode 100644
index 0000000..3eb95e7
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Document_Outgoing Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with link from Mapping View/Document/Outgoing Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _yQ3LEKKVEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree -after [get-label "Outgoing Links"]] {
+    select "\\/test\\/test3.txt/\"1\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Report.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Report.test
new file mode 100644
index 0000000..8b39409
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with link from Mapping View_Report.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with link from Mapping View/Report
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _JjrGEKKdEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:50 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Report | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\""
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Incoming Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Incoming Links.test
new file mode 100644
index 0000000..acc4f02
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Incoming Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with sub location from Mapping View/Document/Incoming Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _e4Q0IKKUEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt"
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Outgoing Links.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Outgoing Links.test
new file mode 100644
index 0000000..1942b8b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Document_Outgoing Links.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with sub location from Mapping View/Document/Outgoing Links
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _xj9eQKKUEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Document | click
+}
+with [get-view Mapping | get-tree -after [get-label "Outgoing Links"]] {
+    select "\\/test\\/test3.txt"
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Report.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Report.test
new file mode 100644
index 0000000..3b9c800
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete location with sub location from Mapping View_Report.test
@@ -0,0 +1,35 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete location with sub location from Mapping View/Report
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _4yeZwKKcEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Report | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt"
+    get-menu "Synchronize/Delete" | get-property enablement | equals false | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete report from Mapping View_Report.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete report from Mapping View_Report.test
new file mode 100644
index 0000000..1512092
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Delete report from Mapping View_Report.test
@@ -0,0 +1,40 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Delete report from Mapping View/Report
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _EQm0gKKeEea4eqFW9hOBlg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+}
+get-view Navigator | get-tree | select "test/test2.txt"
+get-editor "test2.txt" | click
+with [get-view Mapping] {
+    get-tab-folder | get-tab-item Report | click
+}
+with [get-view Mapping | get-tree] {
+    select "\\/test\\/test1.txt/\"1\"/\"1\"/Report1"
+    get-menu "Synchronize/Delete" | click
+    get-items | foreach {
+      get-property caption | equals "\\/test\\/test1.txt" | verify-false 
+      get-property caption | equals "\"1\"" | verify-false 
+      get-property caption | equals "Report1" | verify-false 
+    }
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base is initialized.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base is initialized.test
new file mode 100644
index 0000000..f8e315e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base is initialized.test
@@ -0,0 +1,19 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: EMF mapping base is initialized
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _kPDvgH4-Eeaqvtvv7cNUUg
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 8/21/17 2:31 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | click
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | get-property "values[1]" | equals test | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base listener is listening.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base listener is listening.test
new file mode 100644
index 0000000..e6b1866
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/EMF mapping base listener is listening.test
@@ -0,0 +1,27 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: EMF mapping base listener is listening
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _ZJiFMH5BEeaqvtvv7cNUUg
+Runtime-Version: 2.1.0.201606221726
+Save-Time: 8/21/17 2:55 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | get-property "getItemCount()" | equals 2 | verify-true
+get-view "Navigator" | get-tree | select "test/base.mapping" | key-type F2
+with [get-window "Rename Resource"] {
+    with [get-editbox -after [get-label "New name:"]] {
+        key-type Right
+        set-text "base.mappingg"
+    }
+    get-button OK | click
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | get-property "getItemCount()" | equals 1 | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from palette.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from palette.test
new file mode 100644
index 0000000..5bebd23
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from palette.test
@@ -0,0 +1,33 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Remove from synchronization palette from palette
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _xi784KHLEea__8ecebJRnQ
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:51 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+get-view "Synchronization Palette" | get-tree | select c | key-type Del
+get-view "Synchronization Palette" | get-tree | get-property itemCount | equals 0 | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from selection.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from selection.test
new file mode 100644
index 0000000..131104b
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Remove from synchronization palette from selection.test
@@ -0,0 +1,37 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _k2NaAHwYEeaC-KGN0DI6Vw,_a10TIHwYEeaC-KGN0DI6Vw
+Element-Name: Remove from synchronization palette from selection
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _NqlbgKG1Eea__8ecebJRnQ
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:52 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+get-view Mapping | get-combo -after [get-label "Mapping base:"] | select test
+with [get-view Navigator | get-tree] {
+    select "test/test2.txt" | click -default
+    select "test/test2.txt" | double-click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+with [get-editor "test2.txt" | get-text-viewer] {
+    set-caret-pos 1 6
+    select-range 1 5 1 6
+    get-menu "Synchronize/Remove location from  synchronization palette" | click
+}
+get-view "Synchronization Palette" | get-tree | get-property itemCount | equals 0 | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Sirius/Sirius Add to synchronization palette from selection.test b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Sirius/Sirius Add to synchronization palette from selection.test
new file mode 100644
index 0000000..d008c7e
--- /dev/null
+++ b/mapping/tests/org.eclipse.intent.product.tests/tests/mapping/Sirius/Sirius Add to synchronization palette from selection.test
@@ -0,0 +1,42 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _l8MccPLOEeadt4DOVTJnHw,_4A3_UPLNEeadt4DOVTJnHw
+Element-Name: Sirius Add to synchronization palette from selection
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _dJuhQPLOEeadt4DOVTJnHw
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 8/28/17 2:47 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Synchronization Palette" | get-tree] {
+    key-type "M1+a"
+    key-type Del
+}
+
+get-view "Model Explorer" | get-tree | select "sirius.test/mapping.ecore/mapping/mapping class diagram" | double-click
+get-editor "mapping class diagram" | get-diagram -index 1 | get-edit-part -name "mapping class diagram" 
+    | mouse-move 310 549 -height 900 -width 1252
+with [get-view Mapping] {
+    click
+    get-combo -after [get-label "Mapping base:"] | select "Sirius test"
+}
+with [get-editor "mapping class diagram" | get-diagram -index 1] {
+    with [get-edit-part -name "mapping class diagram"] {
+        mouse-move 404 702 -height 900 -width 765
+        with [get-edit-part -name TextLocation | get-edit-part -className DNodeListViewNodeListCompartment2EditPart] {
+            mouse-move 71 46 button3 -height 71 -width 133
+            mouse-press 71 46 button3 -height 71 -width 133
+        }
+    }
+    get-menu "Synchronize/Add location to synchronization palette" | click
+}
+get-view "Synchronization Palette" | click
+get-view "Synchronization Palette" | get-tree | get-item TextLocation | get-property caption | equals TextLocation 
+    | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
